我想使用 emacs 起草和编辑可以插入 Microchip MPLAB IDE for PIC 项目的汇编代码。如果我使用 .asm 作为文件扩展名,当我在第一列中使用分号开始注释行时,我会得到一个有趣的效果——下一行总是缩进。我怎样才能避免这种情况?我将“gas”作为 .asm 文件的主要模式来尝试执行此操作,但它没有效果。
也许真正的问题是我不理解这些模式如何工作的描述。
您可以通过将下面的函数放在 init.el 中来重新定义 asm-calculate-indentation。要“测试驱动”该功能,您可以将其粘贴到暂存缓冲区中,对其进行评估,然后在 asm 文件中进行一些编辑以查看这是否是您想要的。
(defun asm-calculate-indentation ()
(or
;; Flush labels to the left margin.
(and (looking-at "\\(\\sw\\|\\s_\\)+:") 0)
;; Same thing for `;;;' comments.
(and (looking-at "\\s<\\s<\\s<") 0)
;; Simple `;' comments go to the comment-column.
(and (looking-at "\\s<\\(\\S<\\|\\'\\)") comment-column)
;; Do not indent after ';;;' comments.
(and (progn
(previous-line)
(beginning-of-line)
(looking-at "\\s<\\s<\\s<")) 0)
;;The rest goes at the first tab stop.
(or (car tab-stop-list) tab-width))
这将使该行直接位于 ;;; 下方 不会自动缩进。我不知道你是否注意到了,但是如果你保持原样,如果下一个认为你在评论下输入的标签是一个标签:标签将自动向左缩进,标签下方的所有内容都会自动缩进。我可以看到这对于评论指令或标题评论来说会很烦人。