如何在Mac OS X上获取我的cocoa emacs来为新窗口加载我的.emacs可视化自定义项(在第一个窗口之后打开的任何文档)?

时间:2009-12-15 18:59:07

标签: macos emacs dot-emacs emacsclient

所以我刚刚从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中打开文档)按优先顺序实现的潜在行为:

  1. 让新窗口创建一个新的emacs进程(不只是一个新缓冲区),这样我就可以管理和导航多个项目,类似于textmate的工作方式,每个项目使用一个emacs进程。

  2. 让这些可视化自定义设置具有持久性,以便每个新窗口都加载正确的大小,字体和颜色。

  3. 在当前有效的emacs窗口中将每个新文档作为缓冲区打开。

  4. 如果你们能提供帮助,请告诉我们,谢谢!

4 个答案:

答案 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解决方案一段时间,看看它是否会给你带来太大的痛苦。