【问题标题】:Getting emacs to turn things on at startup让emacs在启动时打开东西
【发布时间】:2013-10-30 00:37:14
【问题描述】:

每当我启动 emacs 时,我都会立即做一些事情:

M-x slime
M-x ido-mode

我还打开了一些我经常使用的文件,以便将它们用作缓冲区:

C-x C-f ....

当我进入一个缓冲区时,我会为该缓冲区(几乎所有缓冲区)执行此操作:

M-x visual-line-mode

如果是 Lisp 缓冲区,我也总是这样做:

M-x paredit-mode
M-x rainbow-delimiters-mode
M-x show-paren-mode

当我启动 emacs 和加载缓冲区时,emacs 有没有办法自动完成所有这些事情?

【问题讨论】:

  • Emacs 内置了几个钩子:gnu.org/software/emacs/manual/html_node/elisp/… 而且,大多数主要模式和大多数次要模式也都有钩子。
  • 某些模式可以设置为全局模式——例如(global-visual-line-mode 1),但我建议使用模式挂钩以获得更多控制,并远离大多数“全局”设置,除非您绝对确定希望它影响一切.

标签: emacs lisp


【解决方案1】:
(add-hook 'emacs-startup-hook
  (lambda ()
    (kill-buffer "*scratch*")
    (find-file "~/todo.org")
    (ido-mode t)
  ))

;; Emacs Lisp
(add-hook 'emacs-lisp-mode-hook
  (lambda ()
    (slime-mode t)
    (visual-line-mode 1)
    (paredit-mode 1)
    (rainbow-delimiters-mode 1)
    (show-paren-mode 1)
  ))

;; Common Lisp
(add-hook 'lisp-mode-hook
  (lambda ()
    (slime-mode t)
    (visual-line-mode 1)
    (paredit-mode 1)
    (rainbow-delimiters-mode 1)
    (show-paren-mode 1)
  ))

【讨论】:

  • 谢谢,不应该将ido-mode 移动到startup 挂钩,因为它会影响emacs 中的所有缓冲区导航?
  • 如果ido-mode 确实是全局的,那么它可以在没有钩子的情况下自行设置或在emacs-startup-hook 内设置——我将把它移到启动钩子——谢谢。
  • 当我在 emacs 中输入 M-x slime 时,它会打开 lisp REPL,而这又会打开几个新的缓冲区。有没有办法在启动时发生这种情况?
  • 我认为一定有比emacs-lisp-mode 更好的钩子,因为这似乎不会影响普通的lisp 文件;当我编辑.emacs 时,彩虹括号就在那里,但在.lisp 文件中不存在,除非我手动打开它们;与 paredit 相同,仅适用于 .emacs 文件而非 .lisp 文件
  • 啊,我把它改成了slime-mode-hook,就成功了。如果我们已经处于粘液模式,不确定slime-mode t 是否必要?
猜你喜欢
  • 2022-08-23
  • 2019-10-24
  • 2023-03-14
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-03
  • 1970-01-01
相关资源
最近更新 更多