1

所以我刚刚从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 "\Cl" `goto-line)

(global-set-key [(control ?%)] `query-replace-regexp)

我第一次启动 emacs 或使用 emacs 打开文档时,一切都完美加载。当我发出命令-N 或通过 finder 打开另一个文件时,会打开一个新窗口,其中加载了键绑定自定义,但没有视觉自定义(包括窗口大小等)

我认为这与 emacsclient 的调用方式和 emacs 服务器有关,但是尽管我热衷于使用 emacs 进行开发,但在 .emacs 级别自定义之外设置编辑器本身时,我却一无所知

以下是我希望在打开新窗口时实现的潜在行为(通过 command-n 或在 finder 中打开文档),按优先顺序排列:

  1. 让新窗口创建一个新的 emacs 进程(不仅仅是一个新的缓冲区),这样我就可以像 textmate 一样管理和导航多个项目,为每个项目使用一个 emacs 进程。

  2. 让这些视觉自定义保持不变,以便每个新窗口加载正确的大小、字体和颜色。

  3. 让每个新文档在当前活动的 emacs 窗口中作为缓冲区打开。

各位大侠能不能帮忙告诉我一下,谢谢!

4

4 回答 4

2

好的,我想出了如何从终端执行此操作(为每个新项目启动一个新的 emacs 服务器),我确信从 finder 中让它工作也很简单,但因为我通常在终端中它仍然有效为了我。我刚把这个添加到我的~/.profile

function emacs-open() {
    /Applications/Emacs.app/Contents/MacOS/Emacs $1 &
}

然后,当您想在新项目(emacs 服务器)中打开所有框架自定义和 .emacs 正确加载的文件时,它只是

$ emacs-打开 index.php

我知道这对某些人来说似乎真的很明显,但据我所知,当你从http://emacsformacosx.com/下载包时,它并没有为你完成,所以希望这对某人有所帮助

于 2009-12-16T16:07:05.777 回答
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 来打开文件。我不知道如何自定义查找器操作...

于 2009-12-15T19:43:50.950 回答
0

我在linux上,但我有这种工作。基本上,我在 .emacs 中所做的(详情请参阅)是使用 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)在设置颜色以使其正常工作之前做一些事情。

我无法解决的一个问题是更改我的字体大小不会重排样式,所以我会得到奇怪的画中画效果,这些效果是可怕的并迫使我取消最大化/重新最大化我的框架,哪种失败点。

我很确定以正确的顺序添加钩子/设计函数应该可以消除这种情况,但我有一段时间没让它正常工作。

于 2009-12-15T19:39:18.290 回答
0

至于 #1,启动一个新的 emacs 进程,您可能可以通过编写脚本来覆盖默认行为来完成此操作。这需要捕获文件路径并使用 Emacs 的系统接口来调用新实例。但是您可能想尝试一个单一的 Emacs 解决方案一段时间,看看它是否不会给您带来太多痛苦。

于 2009-12-15T20:32:58.090 回答