新手问题
elisp 注释有3种:;;; ;; ;
问题在 ; 上,有时候注释较长需要换行,但是按下 enter 换行后,就会如下:
(require 'sly-el-indent)
; 用 sly-el-indent 可获得更好的Elisp缩进
注释跑到中间去了。
这个问题应该很简单,但我没有搜索到相关的解释,可能是我的搜索能力有问题, 希望大佬们不要嫌弃,能够解惑,感激不尽!
新手问题
elisp 注释有3种:;;; ;; ;
问题在 ; 上,有时候注释较长需要换行,但是按下 enter 换行后,就会如下:
(require 'sly-el-indent)
; 用 sly-el-indent 可获得更好的Elisp缩进
注释跑到中间去了。
这个问题应该很简单,但我没有搜索到相关的解释,可能是我的搜索能力有问题, 希望大佬们不要嫌弃,能够解惑,感激不尽!
自己实现一个函数代替 lisp-comment-indent
。
(with-temp-buffer
(emacs-lisp-mode)
(list
(progn (save-excursion (insert ";")) (lisp-comment-indent))
(progn (save-excursion (insert ";")) (lisp-comment-indent))
(progn (save-excursion (insert ";")) (lisp-comment-indent))))
;; => (40 nil 0)
comment-column
指定)您好!首先非常感谢您的回答, 不过有点没看懂,希望能继续请教。
请问这段代码直接放在 init.el 文件中么
其次,40 nil 0 是不是放在 insert 后面啊
还有定义函数是不是 defun with-temp-buffer
希望大佬有时间,可以讲解下,谢谢!
或者说,这是一个实现思路(原理),
需要我自己根据这个思路进行完善?
如果是的话,我现在还有很多没搞懂,
不怎么会,不过正在学习,希望以后能看懂!
你这种改完之后已经违反约定了:
这是一段验证代码,把你实现的函数(例如 my-lisp-comment-indent
)放到里边运行,然后观察输出结果。
或者你简单修改 comment-column
:
0
则 ;
和 ;;;
效果一样,放在哪里就固定不动。nil
则 ;
和 ;;
效果一样,随代码缩进。非常感谢!!!
刚刚试了下,验证成功。
辛苦大佬了!等我学会了也试试上面那个操作。(^-^)
您好,多谢提醒!!!
lisp的注释符号虽然就是一个;
但是习惯上大家约定俗成的用法是
;;;;
用在文件最开头;;;
总是放在新行最左;;
开始于新行并跟随周围代码当前缩进位置;
单个;
跟在代码之后对齐在40列,用来注释当前行你用了一个单;
所以自动帮你放到约定的对齐位置了。如果你想要它在代码缩进位置,用双;;
注释就好了。
嗯,没错!感谢讲解。
主要是我英语不太好,所以偷懒没看官方教程,看来还是需要仔细看看。
但还是更喜欢空2格,不太喜欢空40,也不理解为什么要这么做,可能有我不知道的历史渊源。
你不要把单个";"放到空行,就不会自动对齐到 40 列了。
至于为什么自动对齐到 40 列,估计是为了在行尾多行注释时各行是对齐的,更好阅读。如下官方手册中的示例代码,注意最后一行的 “; a subversion.” 是在40列开始的:
(setq base-version-list ; There was a base
(assoc (substring fn 0 start-vn) ; version to which
file-version-assoc-list)) ; this looks like
; a subversion.
只要你的单个 “;”不是在空行上,你也可以用 2个空格。
原来如此,看来规范挺严谨。 谢谢解惑!