修复了 ;; (push '(alpha-background . 80) default-frame-alist) 注释就好了
您好,我刚刚使用emacs不久,目前还停留在缝合别人的包的阶段,没自己写过几行elisp。
我想问一下您图片中的
- 光标悬停弹出lsp错误信息(比如19楼光标停留在condition的时候会有提示弹出)
- lsp给出的整行错误提示(同样是19楼中图片的8,9行左边会有两个红色的!!)
是怎么实现的呢,由于本人实在能力有限,翻阅您个人配置里的init.org中没找到相关的实现,所以只能过来问一问了,多谢!
这个是clangd检测出的错误,然后经 eglot 调用 flymake 显示的错误,所有内容其实是由eglot 整合的,所以你从配置里没有看到显示的代码,这也是emacs 生态的一个特点,不同包之前很容易的做到自然协作。你如果对这个感兴趣可以去看看 eglot 的主页,有更详细的说明
对于使用者而言只需要配置好并正确运行 eglot,就可以使用这个错误检测,还可以使用诸如 consult-flymake等命令来浏览错误
如果只是 init.org 你执行 make init-build 就可以了
如果改了某个包的代码比如一个名为 foo 的 package,可以执行 make lib/foo,就可以做到只重新make这个包
其实这些都是 borg 提供的选项,你可以搜索 emacs borg 来看看他的主页文档,写的不错的,对于 emacs 的机制会有更多了解。
从我的经验来说,除了 native comp 对于提前编译比较以依赖之外,正常使用时是否进行字节码编译对速度影响不大,不过borg做了这个我也就用了,带了了很多方便事情(配置中大部分包都不需要显式管理 require了,同时也能阅读一些包的 texinfo)
收到 感谢大佬
呼叫大佬 我加了这个 然后…consult-line的时候 原本buffer的选中区域不会取消…怎么才能取消呀
我没太理解到问题。如果指的是希望在执行consult-line的同时,移除之前选中的区域,那比较简单的做法就是多按一下ctrl-g,或者加一个advice。
从原理上来说,consult-line本身应该是只做了mark的跳转,因此如果执行consult-line之前你先选中了一片区域,这时执行consult-line跳转到另一个地方,中间这片区域就会被选中,这个机制应该和mcfly无关。
关于mark有一个有趣的命令consult-mark,你可以玩玩看(M-x consult-mark,或者在normal模式下执行"g m"),它能帮助你观察mark的历史记录
让我简单解释一下作用
-
当前有选中区域的时候 按下快捷键调用 consult-line 会自动插入选中区域到minibuferr中 并搜索 不需要二次出入 提高效率
-
当你不需要的时候 可以直接输入自己想要的内容
上面的代码已经实现了 你可以试一试
美中不足的问题就是 c-n c-p 切换搜索结果的时候 不会取消已经选中的区域
我加了 deactive-mark 也不行 不知道为什么
我大概看了一眼代码,你试试下面这个?加在 save-excursion之前
(defun elemacs-mcfly-time-travel ()
(when (memq this-command elemacs-mcfly-commands)
(let ((pre-insert-string (with-minibuffer-selected-window
(or (seq-some
(lambda (thing) (thing-at-point thing t))
'(region url symbol))
;; '(symbol url region sexp))
"No thing at point"))))
(progn
(deactivate-mark)
(save-excursion
(insert (propertize pre-insert-string 'face 'shadow)))))
(add-hook 'pre-command-hook 'elemacs-mcfly-back-to-present nil t)))
实测还是不行 不知道为啥… 功能是没啥问题 就是不能退出选中区域
操作就是先选中一个区域 然后 按快捷键 consult-line 这时候会自动填充minibuffer并搜索 然后在候选列表移动 上面的选中区域就会跟着一起移动…很难受
确实不行,原因有可能是和meow的expand弄到一起了+。不过如果是symbol 的话,你试试不选中直接 consult-line,应该会默认选择当前的symbol
我猜也是meow的问题
您好,我尝试了一下您的配置,用起来比我自己在doom上缝合的要流畅很多,感谢您的分享。
我有个疑问,我在用您的配置的时候在执行make bootstrap之后会生成一个init.el文件和init-config.el文件,这两个文件应该是根据init.org文件里的内容生成的,但是我看了看Makefile,没有找到对应的org转el的逻辑,这个init.el文件的生成也是borg的功能吗,还是我错过了哪里呢?
是的,我具体解释一下里面发生了什么:
b. 第二个是你看到的init-config.el,它位于整个init.org的顶部,因此作用于整个文件,所有的未显式指明tangle 文件的elisp都会被tangle 到这个文件中
c. 最后一个是你看到的init.el文件,它的作用主要就是加载上述的init-config.el
之所有额外做了一个init-config.el文件,是因为有些setup 的宏不能被 borg编译不然会无法生效。
背后的逻辑其实比较清晰,是如下的加载顺序:
early-init.el → init.el → init-config.el
分别是用于提前ui 配置和加载剩下的配置
用了几天 感觉不错 充分做到了 感谢楼主…
- 配置扁平化
- 通过gitsubmodule管理配置 方便更新回退
- 通过tangle init.org 注释文档一体
大佬们的配置太复杂了 hack起来没有很好的elisp功底实在费劲