5

Emacs に括弧のようなものを含む可能性のある式を強調表示させるにはどうすればよいでしょうか。

\highlightthis{some \textit{text} here
some more text
done now}

highlight-regex単純なことにはうまく機能しますが、改行を認識するためにemacs正規表現を書くのに本当に苦労しました。もちろん、最初の閉じ括弧まで一致します。

(二次的な質問として:emacsの正規表現構文を拡張するパッケージへのポインタは大歓迎です-私はそれにかなり苦労しており、perlの正規表現にはかなり精通しています。)

編集:私の特定の目的(AUCTeXバッファで強調表示されるLaTeXタグ)のために、.emacsに次font-latex-user-keyword-classesのようなものを追加するAUCTeX固有の変数をカスタマイズすることで、これを機能させることができました:custom-set-variables

'(font-latex-user-keyword-classes (quote (("mycommands" (("highlightthis" "{")) (:slant italic :foreground "red") command))))

ただし、より一般的な解決策があると便利です。

4

1 に答える 1

1

S式に作用する関数を使用して、強調表示する領域を操作し、この質問で言及されているソリューションの1つを使用して実際に強調表示できます。

例を次に示します。

(defun my/highlight-function ()
  (interactive)
  (save-excursion
    (goto-char (point-min))
    (search-forward "\highlightthis")
    (let ((end (scan-sexps (point) 1)))
      (add-text-properties (point) end '(comment t face highlight)))))

EDIT : emacs-lispマニュアルの検索ベースのフォント化セクションで説明されているように、Emacsの標準フォントロックシステムで同様の機能を使用する例を次に示します:

(defun my/highlight-function (bound)
  (if (search-forward "\highlightthis" bound 'noerror)
      (let ((begin  (match-end 0))
            (end    (scan-sexps (point) 1)))
        (set-match-data (list begin end))
        t)
    nil))
(add-hook 'LaTeX-mode-hook
          (lambda ()
            (font-lock-add-keywords nil '(my/highlight-function))))
于 2012-04-24T06:30:02.297 に答える