regex - emacs 主模式定义

标签 regex emacs elisp major-mode

我正在尝试编写一个非常基本的 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/

相关文章:

java - 从java中的where条件获取列名

python - 在 python 中,如何 'if finditer(...) has no matches' ?

emacs 24 主题和继承属性

行首每组空格的正则表达式

emacs - 使用 elisp 将 Emacs 框架最大化到仅一台显示器

java - 尝试为字母数字字符串编写正则表达式,例如 - R51/53

iphone - 新手的 NSRegularExpression 问题

php - Emacs php 模式和 paredit

emacs - 在 Emacs 中修改 ansi-term 颜色

regex - Emacs,使用 replace-regexp-in-string 来匹配两个正则表达式