[英]emacs major mode definition
我正在嘗試編寫一個非常基本的emacs主模式來編輯匯編器源文件(用於特定的微控制器)。 我使用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)肯定的第二個問題證明了我的無知...基本上,在具有以下結構的表達式中,我想用變量中的值(此處為x)代替“ regexp”文字(有效) ,其中x由regexp-opt(正確地)計算出)...但是我不知道如何在此處插入x的值 :-(
(setq x 'xyz)
(defconst v2
(list
'( "regexp" . foo)
))
感謝您的提示。
雖然語法高亮有效,但我不認為它不區分大小寫。 我嘗試將(setq font-lock-keywords-case-fold-search t)添加到下面的函數中,但是似乎沒有達到預期的效果。
也許是因為您使用defun
而不是使用更現代的define-derived-mode
:
(define-derived-mode xasm-mode prog-mode "XASM"
;; set up font-lock
(set (make-local-variable 'font-lock-defaults) '(xasm-font-lock-keywords))
(set (make-local-variable 'font-lock-keywords-case-fold-search) t))
如果這不起作用,我想您只需要手動使其變得不敏感, [az]
-> [a-zA-Z]
等。
肯定的第二個問題證明了我的無知...基本上,在具有以下結構的表達式中,我想用變量中的值(此處為x)替換“ regexp”文字(有效) x(正則表達式由regexp-opt計算)...但是我不知道如何在這里插入x的值:-(
如Legocia指出的那樣使用逗號運算符。 在您的情況下,它將如下所示:
(defconst v2
`(
( "regexp" . ,foo)
))
為了評估反引號內的foo
,我們在其前面加上一個逗號,foo
。
使用Ch v font-lock-defaults RET
檢查文檔:
...默認值應采用以下形式:
(關鍵字[僅關鍵字[大寫字母[語法清單...]])] ...
它告訴您可以在此處設置“ case-fold”行為:
(set (make-local-variable 'font-lock-defaults)
'(xasm-font-lock-keywords nil t))
另外,請幫自己一個忙,並使用“定義衍生模式”(並更新您發現的指向defun+interactive+setqmode-name+...
任何文檔,以便它也引用“ define-derived-mode
”)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.