Emacs 如何配置SpaceMac,使其在启动时执行代码? 前言

Emacs 如何配置SpaceMac,使其在启动时执行代码? 前言,emacs,lisp,elisp,spacemacs,Emacs,Lisp,Elisp,Spacemacs,我知道这个标题看起来很主观,但我想让这个问题成为SpaceMac的一个顺利介绍,让那些根本不是来自emacs的新手(这就是我的情况) 你可能想知道为什么我决定使用SpaceMac,这是对emacs的一种高度定制的黑客攻击,而不先花时间习惯普通的emacs。事实上,我已经尝试使用emacs和vim很长一段时间了,因为我能理解为什么这些软件能够提高生产率,让您在编码/黑客攻击时感觉更“自在”。 不幸的是,当我开始有点习惯vim时,你需要花在学习上的时间,最重要的是,你需要花在配置这些软件上的时间对我

我知道这个标题看起来很主观,但我想让这个问题成为SpaceMac的一个顺利介绍,让那些根本不是来自emacs的新手(这就是我的情况)

你可能想知道为什么我决定使用SpaceMac,这是对emacs的一种高度定制的黑客攻击,而不先花时间习惯普通的emacs。事实上,我已经尝试使用emacs和vim很长一段时间了,因为我能理解为什么这些软件能够提高生产率,让您在编码/黑客攻击时感觉更“自在”。
不幸的是,当我开始有点习惯vim时,你需要花在学习上的时间,最重要的是,你需要花在配置这些软件上的时间对我来说太多了。
然后我发现了spacemacs,它从vim和emacs中提取了一些优秀的东西,并将它们组合到一个非常好的预配置包中

问题是大部分配置都是通过emacs lisp完成的,并且期望用户在启动软件时理解代码是如何加载和执行的,而我完全不知道(因为我开始意识到我对代码的挖掘越来越多)

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

  • 行号显示在我打开的任何缓冲区中
  • git live更改显示在左侧
  • 光标位于上方时,符号将亮显
  • 我的“主页”显示了一个项目列表,我可以加载最近的一个,它可以记住上次的缓冲区配置
我希望能够在必要时编写这些功能(可能还有其他一些),或者在它们已经可用时安装它们

我试过的 (还有什么不起作用)

我(天真地)像任何lisp/emacs新手一样配置SpaceMac:

(defun dotspacemacs/user config()
“用户代码的配置功能。
此函数在Spacemacs初始化结束后调用
层配置。您可以自由放置任何用户代码。“
;待办事项
显示空白
;;-安装工作组2
介面,接口这很有效
(setq电力线默认分隔符箭头)
鼠标滚动;这有用吗?也许吧
(setq鼠标滚轮滚动量’(1((shift).1));;一次一行
(setq鼠标滚轮前进速度为零);;不要加速滚动
;单击鼠标中键复制粘贴;;此操作有效
(setq x-select-enable-primary t)
这以前有用,但现在不行了
(差异hl flydiff模式)
(设置差异hl侧“左”)
生锈;生锈;这种方法有效(而且似乎是正确的方法)
(添加挂钩“生锈模式挂钩#”赛车模式)
(添加hook“赛车模式hook#”eldoc-mode)
这行得通吗?也许吧
(setq neo显示隐藏文件无)
;切换首选项;;这不起作用
(空格键/切换自动符号高亮显示打开)
(打开空格键/切换行号)
;正确的双盖;;这也不起作用(应该是钩子)
(双帽模式1)
)
问题 我意识到有一个称为“主要模式”和“次要模式”的概念,分别适用于所有缓冲区或仅适用于特定缓冲区实例,但我也非常困惑的是,emacs有自己的全局和局部变量(似乎可以通过
(setq)
)进行自定义),spacemacs也有变量或方法来定制
(spacemacs/打开某些东西)
,但也有
(自定义设置变量)
,我想做的大部分事情都可以通过“挂钩”实现

spacemacs文档让我完全不知所措,因为它主要衡量的是你知道事情是如何运作的,而emacs one就像一个核电站维护指南

有人能给我一个理解这些概念的“入口点”吗

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

以下是开始时需要了解的内容:
  • 要自定义SpaceMac,您只需触摸文件
    ~/.SpaceMac
    (或者如果您希望有一个目录)。您不应该触摸
    ~/.emacs.d
    内的任何东西。您也不应该有任何
    ~/.emacs
    文件

  • 您应该阅读一次
    ~/.spacemacs
    文件,以便查看所有可能的配置选项,它们都有很好的文档记录

  • ~/.spacemacs
    文件具有以下功能:

    • dotspacemacs/layers
      :这是配置所需SpaceMac功能的地方,例如激活的层、所需的附加软件包、不需要的排除软件包等。您不应在此处添加/删除任何变量或代码,只需修改现有值即可

    • dotspacemacs/init
      :您可以在此处启用/禁用Spacemacs提供的自定义功能,例如更改引导键、使用
      https
      进行更新、打开行号等。您不应该在此处添加/删除任何变量或代码,只需修改现有值即可

    • dotspacemacs/user init
      :在加载
      软件包之前,您将在此处自定义Spacemacs。只有少数情况需要这样做,只有在加载包之前设置变量时才需要这样做。例如,将
      ranger override dired
      设置为
      t
      ,以便在加载
      ranger
      时,它将执行所需操作,以覆盖
      dired
      功能
      (setq-default fill-column 80)
      (add-hook 'mail-mode-hook (lambda () (setq fill-column 72)))
      (add-hook 'python-mode-hook (lambda () (setq fill-column 79)))