14

前言

我知道标题看起来很主观,但我希望这个问题能够为完全不来自 emacs 的新手(这是我的情况)顺利介绍 spacemacs 。

您可能想知道为什么我决定使用 spacemacs,它是对 emacs 的高度自定义 hack,而没有花时间先习惯 vanilla emacs。好吧,事实上,我已经尝试使用 emacs 和 vim 很长时间了,因为我能理解为什么这些软件能够提高生产力,让你在编码/黑客时感觉更“自在” 。
不幸的是,当我开始有点习惯 vim 时,你需要花在学习上的时间,最重要的是,你需要花在学习上的时间配置这些软件上的时间对我来说太高了。
然后我发现了spacemacs,它吸收了一些 vim 中的优点和 emacs 中的优点,并将它们组合成一个很好的配置包。

问题是大部分配置都是通过 emacs-lisp 完成的,并且希望用户在启动软件时了解代码是如何加载和执行的,而我完全不知道(随着我开始越来越意识到我深入研究了代码)。

我想要达到的目标

我希望能够启动 emacs,并看到它执行一些我将编写的自定义代码,以便:

  • 行号显示在我打开的任何缓冲区中
  • git live 更改显示在左侧
  • 光标悬停时符号突出显示
  • 我的“主页”显示了一个项目列表,我可以加载最近的一个,它会记住上次的缓冲区配置

我希望能够在必要时对这些功能(可能还有其他一些功能)进行实际编码,或者在它们已经可用时安装它们。

我试过的

(什么不起作用)

(天真地)配置了我的 spacemacs,就像任何 lisp/emacs 新手一样:

(defun dotspacemacs/user-config ()
  "Configuration function for user code.
 This function is called at the very end of Spacemacs initialization after
layers configuration. You are free to put any user code."

  ;; TODO
  ;; - Display whitespaces
  ;; - Install workgroups2

  ;; interface  ;; this works
  (setq powerline-default-separator 'arrow)

  ;; mouse scroll  ;; this works? maybe
  (setq mouse-wheel-scroll-amount '(1 ((shift) . 1))) ;; one line at a time
  (setq mouse-wheel-progressive-speed nil) ;; don't accelerate scrolling

  ;; middle click copy-paste  ;; this works
  (setq x-select-enable-primary t)

  ;; diff-hl  ;; this used to work but now does not
  (diff-hl-flydiff-mode)
  (setq diff-hl-side 'left)

  ;; rust  ;; this works (and seems the right way to do it)
  (add-hook 'rust-mode-hook #'racer-mode)
  (add-hook 'racer-mode-hook #'eldoc-mode)

  ;; neotree  ;; this works? maybe
  (setq neo-show-hidden-files nil)

  ;; toggle preferences  ;; this does not work
  (spacemacs/toggle-automatic-symbol-highlight-on)
  (spacemacs/toggle-line-numbers-on)

  ;; COrrect DOuble CAps  ;; this does not works either (should be a hook)
  (doublecaps-mode 1)
)

问题

我意识到有一个名为“主要模式”和“次要模式”的概念分别适用于所有缓冲区或仅适用于特定缓冲区实例,但我也对 emacs 有自己的全局和局部变量这一事实感到非常困惑(似乎可以通过 自定义(setq)),spacemacs 也有自定义的变量或方法,(spacemacs/toggle-something-on)而且(custom-set-variables)我想做的大部分事情都可以使用“钩子”来实现。

spacemacs 文档让我完全一无所知,因为它主要假设您知道事情是如何工作的,而 emacs 文档就像核电站维护指南。

有人可以轻松使用 spacemacs 给我一个“入口点”吗理解这些概念

我希望能够回答以下问题:“哦,我想自定义该行为,我需要在哪里编码?我应该调用哪些方法?我不应该调用哪些方法?我可以更改哪些变量/创建?当我把我的代码放在这里时实际执行了什么?......等等“

4

1 回答 1

51
于 2016-05-07T11:16:18.527 回答