小编cam*_*tus的帖子

由global-set-key掩盖的ido-mode绑定

堆栈溢出!在过去的几天里,我试图稍微定制我的emacs,我遇到了一个我不知道如何处理的问题.

我要做的是定义一个全局键绑定和一个ido模式键绑定,它将使用相同的键来做不同的事情.

Ido-mode键绑定以这种方式定义:

(defun ido-my-keys ()
  "Add my keybindings for ido."
  (define-key ido-completion-map (kbd "M-<return>") 
    'ido-invoke-in-vertical-split)
  )

(add-hook 'ido-setup-hook 'ido-my-keys)
Run Code Online (Sandbox Code Playgroud)

它工作正常,直到我将以下行放在我的.emacs文件中:

(global-set-key (kbd "M-<return>") 'insert-newline-and-indent)
Run Code Online (Sandbox Code Playgroud)

使用此行,M-return甚至从ido-switch-buffer调用insert-newline-and-indent.有趣的是,当我以交互方式使用global-set-key时(即不是来自init-file而是来自Mx调用),一切都按预期工作.

谢谢你的帮助.对不起我的英语不好.


问题原来是我打开的ergoemacs模式.此模式定义了导致此效果的global-set-key的建议.

我通过在ergoemacs初始化之上移动global-set-key调用来解决问题.不是最好的解决方案,而是简单的解决方案.

emacs elisp

5
推荐指数
1
解决办法
491
查看次数

有没有办法在Dancer和Starman中使用包/全局变量?

当与Starman一起运行时,我无法找到在Dancer应用程序中使用包变量(或任何类型)的方法.我想它与Starman的preforking有某种关系,但这应该是一个特征,而不是一个bug.

这是舞者应用程序的示例:

package nafig;
use Dancer;

my $a = 0;
$b = 0;
$nafig::c = 0;

any '/' => sub {
    warn join " ", $a++, $b++, $nafig::c++;
};

start;
Run Code Online (Sandbox Code Playgroud)

然后我连续3次调用该应用程序.首先,我用plack引用服务器运行它,一切都按预期工作:

$ plackup app.pl
HTTP::Server::PSGI: Accepting connections at http://0:5000/
0 0 0 at ... blah-blah-blah
1 1 1 at ... blah-blah-blah
2 2 2 at ... blah-blah-blah
Run Code Online (Sandbox Code Playgroud)

但是当我和Starman做同样的事情时,我得到了以下内容.

$ plackup -s Starman app.pl
2013/11/17-23:33:35 Starman::Server (type Net::Server::PreFork) starting! pid(527)
Resolved [*]:5000 to [::]:5000, IPv6
Not including resolved host [0.0.0.0] IPv4 …
Run Code Online (Sandbox Code Playgroud)

perl starman dancer

3
推荐指数
1
解决办法
625
查看次数

标签 统计

dancer ×1

elisp ×1

emacs ×1

perl ×1

starman ×1