所以我刚刚从http://emacsformacosx.com/下载了我的新雪豹macbook pro的emacs 23.1,它的功能就像一个魅力,除了......
我的.emacs中有视觉自定义,这里提取了几行:
(set-background-color“black”)
(set-cursor-color“green”) (set-default-font“ - -Lucida Console-normal-r-normal-normal-18 - -96-96-c - * - iso10646-1”)
我也设置了一些键绑定,这里有几行
(global-set-key“\ C-l”`goto-line)
(global-set-key [(control?%)]`query-replace-regexp)
我第一次启动emacs或使用emacs打开文档时,一切都完美无缺。当我发出命令-N或通过finder打开另一个文件时,会打开一个新窗口,其中加载了键绑定自定义但没有可视自定义(包括窗口大小等)
我认为这与emacsclient的调用方式以及emacs服务器有关,但是尽管我使用emacs进行开发,但在设置编辑器本身超出.emacs级别时我很无能为力定制
以下是我希望在打开新窗口时(通过命令n或在finder中打开文档)按优先顺序实现的潜在行为:
让新窗口创建一个新的emacs进程(不只是一个新缓冲区),这样我就可以管理和导航多个项目,类似于textmate的工作方式,每个项目使用一个emacs进程。
让这些可视化自定义设置具有持久性,以便每个新窗口都加载正确的大小,字体和颜色。
在当前有效的emacs窗口中将每个新文档作为缓冲区打开。
如果你们能提供帮助,请告诉我们,谢谢!
答案 0 :(得分:2)
好的我从终端想出了如何做到这一点(为每个新项目启动一个新的emacs服务器),我确信从查找器开始工作也是微不足道的,但是因为我通常在终端无论如何它对我有用。我刚刚将其添加到我的~/.profile
function emacs-open() {
/Applications/Emacs.app/Contents/MacOS/Emacs $1 &
}
然后当你想在新项目(emacs服务器)中打开一个文件时,所有你的框架自定义和.emacs正确加载,它只是
$ emacs-open index.php
我知道对某些人来说这似乎是显而易见的,但据我所知,当你从http://emacsformacosx.com/获取包裹时,我无法告诉你,所以希望这有助于某人
答案 1 :(得分:1)
要自定义颜色,您需要对框架进行更改,如下所示:
(setq default-frame-alist
`((background-color . ,background)
(foreground-color . "lightcyan")
(border-color . "lightskyblue1")
(cursor-color . "palegoldenrod")
(mouse-color . "azure")))
就在Finder中打开文档时产生新的Emacs进程而言,为此,您只需要禁用emacs服务器,和/或不使用emacsclient。只需进行设置即可直接调用emacs来打开文件。我不知道如何自定义查找程序操作...
答案 2 :(得分:0)
我在linux上,但我有这种工作。基本上,我在.emacs(which see for details)中所做的是使用after-make-frame-functions钩子:
(add-hook 'after-make-frame-functions
(lambda (frame)
(set-variable 'color-theme-is-global nil)
(select-frame frame)
;;; set color theme and other visual things, like fonts
))
有一点是我set-variable 'color-theme-is-global
,因为我喜欢为终端与窗口设置不同的主题。从理论上讲,你应该能够在设置颜色之前先做一些(set-variable 'color-theme-is-global t)
。
我一直无法解决的一个问题是改变我的字体大小不会重排样式,所以我得到了令人讨厌的奇怪的画中画效果并迫使我取消最大化/重新模仿我的画面,有点打败了这一点。
我很确定以正确的顺序添加钩子/设计函数应该摆脱它,但我还没有设法让它运行一段时间。
答案 3 :(得分:0)
对于#1,启动一个新的emacs进程,您可以通过编写脚本来覆盖默认行为来实现此目的。这需要捕获文件路径并使用Emacs的系统接口来调用新实例。但是你可能想要尝试一个Emacs解决方案一段时间,看看它是否会给你带来太大的痛苦。