2011-09-29 57 views
2

我在我的Mac上使用iTerm2将ssh放入Linux机器并在终端中运行emacs。在一个大显示器上,我喜欢分割窗口以并排查看多个缓冲区。我希望能够通过点击鼠标来切换到特定的缓冲区(而不是做C-x o)。当我点击鼠标时,如何配置emacs切换到特定的缓冲区?

似乎正在发生的事情是,如果我在当前活动缓冲区之外的任何地方单击鼠标,例如在下一个缓冲区中,在模式行等上,点击被解释为绑定到(tmm-menubar-mouse EVENT)。

我已经做在我.emacs_d/init.el以下禁用的菜单栏: (菜单栏模式-1)

这似乎在顶部禁用菜单栏显示可见的窗口,但我描述的鼠标点击行为仍在发生。

我认为我需要的是将点击解释为除了之外的东西,然后将其绑定到某个函数,该函数检测点击发生在哪个缓冲区并切换到该位置。但是,我不知道该怎么做,而且我所做的搜索没有得到任何明确的答案。谁能帮忙?

或者,我看着使用windmove启用切换缓冲区与SHIFT和箭头键。我做了(windmove-default-keybindings),但emacs似乎通过在缓冲区中插入“2C”并通过插入“2D”来插入SHIFT向右箭头来响应SHIFT向左箭头。如果任何人有任何提示做这项工作,我很乐意听到他们。

感谢

+0

回复:您的windmove问题,Gilles在使用输入解码映射获取终端和Emacs讲同一种语言方面有几个很好的答案。请参阅http://stackoverflow.com/questions/3518846/shift-tab-produces-cryptic-error-in-emacs/3520543#3520543和http://stackoverflow.com/questions/4351044/binding-m-up-m -down-in-emacs-23-1-1/4360658#4360658 – phils

+0

谢谢。我神情恍惚地看着,当我在下面的修补程序中看到Asher L.为我的鼠标问题提出建议时,windmove的东西开始工作。不知道这是否巧合,但我恢复了业务。 –

回答

1

我就遇到了这个问题,前一段时间,在那里上单击列> 95被解读为<menu-bar> <mouse-1>,这将调用tmm-menubar-mouse。它被证明是一个错误:

http://debbugs.gnu.org/cgi/bugreport.cgi?bug=6594

目前还没有正式上映以来,这个错误是固定的,但你可以在这里补丁:如果我

http://bzr.savannah.gnu.org/lh/emacs/emacs-23/revision/100618

回想一下,你应该能够将修改后的文件放到你现有的emacs安装中并进行字节编译(假设你正在运行最新版本的23.3.1)。

+0

太棒了!这很好。感谢指针。 –

+0

经过一天的使用emacs与您建议的修复程序,事情工作得更好,但我偶尔会看到另一个相关的问题。有时,当我在缓冲区中单击鼠标时,点击似乎不会“接受”,并在* Messages *缓冲区中显示以下内容:xterm-mouse-event:错误的类型参数:wholenump,-6。对此有何想法?在搜索时发现了[link](http://debbugs.gnu.org/cgi/bugreport.cgi?bug=6594),这似乎表明与之前描述的修补程序中的修复程序类似但不同的修复程序。我应该做什么的任何想法?再次感谢! –

+0

这是否只发生在一个特定的列?可能存在处理不当的边界条件。链接中的补丁可能是我的;我提交了一个似乎可行的黑客攻击(虽然我不是emacs/elisp专家),Andreas Schwab提交了一个不同的补丁,似乎更好一些。我没有仔细研究他的补丁,而且我通常不以控制台模式运行,但它对我很有用。如果您可以使用23.3或24分支的最新版本进行复制,则可以重新打开问题6594.另外,我会看看是否可以在我的机器上进行复制。 –

相关问题