我正在尝试编写一个非常基本的 emacs 主要模式来编辑汇编器源文件(针对特定的微 Controller )。我用过https://www.emacswiki.org/emacs-test/ModeTutorial作为起点。它有效,但我想改变两件事,但找不到解决方案。
是的,我渴望随着时间的推移对 eLisp 有更彻底的了解,但我也尝试快速破解工作模式定义,因为我现在需要它(没有真正理解其中的复杂性 - 我知道,RTFM ...)。
无论如何,我希望得到两个问题的答案:
1)虽然语法突出显示有效,但我不认为它不区分大小写。我尝试将 (setq font-lock-keywords-case-fold-search t)
添加到下面的函数中,但似乎没有达到预期的效果。
(defun xasm-mode ()
(interactive)
(kill-all-local-variables)
(use-local-map xasm-mode-map)
(set-syntax-table xasm-mode-syntax-table)
;; set up font-lock
(set (make-local-variable 'font-lock-defaults) '(xasm-font-lock-keywords))
(setq font-lock-keywords-case-fold-search t)
(setq major-mode 'xasm-mode)
(setq mode-name "XASM")
(run-hooks 'xasm-mode-hook))
2)第二个问题肯定证明了我的无知......基本上,在具有以下结构的表达式中,我想用变量中的值替换“regexp”文字(有效)(这里:x,x(正确)由regexp-opt计算)...但我不知道如何在这里插入x的值:-(
(setq x 'xyz)
(defconst v2
(list
'( "regexp" . foo)
))
感谢您的提示。
最佳答案
使用C-h v font-lock-defaults RET
检查文档:
... Defaults should be of the form:
(KEYWORDS [KEYWORDS-ONLY [CASE-FOLD [SYNTAX-ALIST ...]]]) ...
这告诉您可以在那里设置“大小写折叠”行为:
(set (make-local-variable 'font-lock-defaults)
'(xasm-font-lock-keywords nil t))
另外,帮自己一个忙,使用define-衍生模式(并更新您发现的指向 defun+interactive+setqmode-name+...
的文档,以便它引用 定义派生模式
以及)。
关于regex - emacs 主模式定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35755532/