Emacsのlispモードですべての関数の名前を強調表示する方法は? 太字にしたい。
(
つまり、最初のから までのすべての単語space
です。次のような例外は気にしないでください(a . b)
GitHub と同じように:
Emacsのlispモードですべての関数の名前を強調表示する方法は? 太字にしたい。
(
つまり、最初のから までのすべての単語space
です。次のような例外は気にしないでください(a . b)
GitHub と同じように:
これを使って:
(defface font-lock-func-face
'((nil (:foreground "#7F0055" :weight bold))
(t (:bold t :italic t)))
"Font Lock mode face used for function calls."
:group 'font-lock-highlighting-faces)
(font-lock-add-keywords
'emacs-lisp-mode
'(("(\\s-*\\(\\_<\\(?:\\sw\\|\\s_\\)+\\)\\_>"
1 'font-lock-func-face)))
let
面白いことに、これは Github と同じようにバインディングを台無しにします。しかし、それはあなたが求めたものですよね :)?
以下のコードは、既知の Emacs-Lisp 関数の名前を強調しています。
特定の関数名の出現がその関数を表していない場合でも、そうすることに注意してください。たとえば、名前は変数名として使用される場合があります。実際には大きな問題ではありませんが、知っておくとよいでしょう。
;; `setq' is a variable here, but it is highlighted anyway.
(let ((setq (foobar)))...)
Emacs-Lisp モードで強調表示を自動的にオンにするには、次のようにします。
(font-lock-add-keywords 'emacs-lisp-mode
'((my-fl . 'font-lock-constant-face)) ; Or whatever face you want. 'APPEND)
(defun my-fl (_limit)
(let ((opoint (point))
(found nil))
(with-syntax-table emacs-lisp-mode-syntax-table
(while (not found)
(cond ((condition-case ()
(save-excursion
(skip-chars-forward "'")
(setq opoint (point))
(let ((obj (read (current-buffer))))
(and (symbolp obj) (fboundp obj)
(progn (set-match-data (list opoint (point))) t))))
(error nil))
(forward-sexp 1)
(setq opoint (point)
found t))
(t
(if (looking-at "\\(\\sw\\|\\s_\\)")
(forward-sexp 1)
(forward-char 1)))))
found)))
注: この強調表示だけの効果を見たい場合は、最初に Emacs-Lisp モード バッファーでこれを実行して、他の Emacs-Lisp フォントロックの強調表示を取り除きます。
M-: (setq font-lock-keywords ()) RET
アップデート - -
このためのマイナー モード コマンドとライブラリを作成しました。
定義済みの Emacs-Lisp シンボル (関数と変数、関数のみ、または変数のみ) を強調表示できます。または、定義されていないシンボルのみを強調表示することもできます。