Emacs では、次のような emacs lisp で引用符で囲まれた記号を希望'blah
し、それらを別の色で表示します。font-lock
モードを使用してこれを行うにはどうすればよいですか?
質問する
361 次
2 に答える
5
試す:
(font-lock-add-keywords 'emacs-lisp-mode
'(("'[-a-zA-Z_][-a-zA-Z0-9_]*\\>" 0 'font-lock-constant-face)))
または (引用に色を付けたくない場合):
(font-lock-add-keywords 'emacs-lisp-mode
'(("'\\([-a-zA-Z_][-a-zA-Z0-9_]*\\)\\>" 1 'font-lock-constant-face)))
コメントや文字列は以前に色付けされていたため、これは色付けされず、font-lock (デフォルト) は色付けを変更しません。
于 2012-12-17T14:42:46.073 に答える
1
次のコードは、引用自体とそれに続く記号の構文の強調表示を有効にします。必要に応じて、2 つの顔をカスタマイズすることもできます。また、 との違い'(hello world)
を(hello world)
簡単に見つけたいと思うかもしれません。そのためには、引用符を強調表示するだけでは不十分な場合があるため、コードのコメント アウトされた部分は、引用符に続く開き括弧を強調表示するためのものです。ネストされた括弧を異なる色で強調表示する他のパッケージと互換性がないと思うため、それらはコメントアウトされており、それらのパッケージのいずれかを使用している可能性が非常に高いです。
(defface my-lisp-quoted-symbol-face
'((t :inherit font-lock-constant-face))
"Face for Lisp quoted symbols.")
(defface my-lisp-quote-face
'((t :inherit warning))
"Face for Lisp quotes.")
;; (defface my-lisp-quoted-open-paren-face
;; '((t :weight bold
;; :inherit my-lisp-quoted-symbol-face))
;; "Face for Lisp quoted open paren.")
(defvar my--lisp-quote-regexp
(rx (group "'")
(or symbol-start
(group (syntax open-parenthesis)))))
(defvar my--lisp-quoted-symbol-regexp
(rx "'" (group (+ (or (syntax symbol)
(syntax word))))))
(dolist (mode (list 'emacs-lisp-mode
'lisp-mode))
(font-lock-add-keywords mode
`((,my--lisp-quote-regexp
(1 'my-lisp-quote-face)
;; (2 'my-lisp-quoted-open-paren-face nil t)
)
(,my--lisp-quoted-symbol-regexp
1 'my-lisp-quoted-symbol-face))))
defface と rx を使用すると、コードがより冗長になります。defface の利点は、顔を簡単にカスタマイズできることです。rx の利点は、このコードを他の目的で変更しようとする場合に得られます (たとえば、逆引用符も処理するようにしたい場合など)。
于 2013-09-02T12:58:00.840 に答える