色で宣言された変数


11

emacsにC / C ++の単一の関数で宣言された変数を記憶させる簡単な方法を探しています。「シンプル」とは、外部パッケージがなく、構成ファイルにいくつかのelisp行があることを意味します。

私のデフォルトのEmacs構成では、宣言時に変数名を黄色に着色していますが、使用時には白色にしています。

char toto; // 'char' is green, 'toto' is yellow

toto = 42; // 'toto' is white

同じ機能/スコープのすべての「toto」も黄色に着色したいと思います。

私はすでにこの質問を見てきましたが、もっと簡単なことを望みます。また、font-lockモードで何かをしようとしましたが、変数名に適応できるものを作ることに成功しませんでした。

(名前パターンを使用した)C ++クラスメンバー名のアイデアはすでにあるので、ここでローカル変数の一致を求めています。


3
これはおそらく見た目より難しいでしょう。nobugs.org/developer/parsingcpp
wasamasa

8
なぜパッケージを使いたくないのですか?この機能を提供するパッケージがある場合、それをインストールすることで、機能を最初から作成し直すよりも、構成にelispが少なくて済みます。
タイラー

11
これはcolor-identifiers-modeパッケージのように聞こえます。(外部パッケージを検討したくないと言ったので、コメントとしてこれを投稿してください。)
アーロンハリス

7
すべての「外部パッケージ」は、「設定ファイルのelisp行」と表現することもできます。誰かがパッケージ形式で提供したという根拠に基づいて、既存のコードを回避することはばかげています。
フィル2016年

Emacsのどのバージョンをお持ちですか?
DAビンセント

回答:


1

あなたは、あなたの変数スキームのために何かを正規表現を集めることができると一致した(疑似正規表現コード)[char|other|types] [a-z];[a-z] =*;し、あなたのモードのフォントロックキーワードリストに追加します。カスタマイズキーワードページのマニュアルから:

たとえば、次のコードはCモードの2つのフォント化パターンを追加します。1つはコメントでも「FIXME」という単語をフォント化するもので、もう1つは「and」、「or」、「not」という単語をキーワードとしてフォント化するものです。

 (font-lock-add-keywords 'c-mode
  '(("\\<\\(FIXME\\):" 1 font-lock-warning-face prepend)
    ("\\<\\(and\\|or\\|not\\)\\>" . font-lock-keyword-face)))

この例は、適切なCモードのみに影響します。同じパターンをCモードとそれに由来するすべてのモードに追加するには、代わりに次のようにします。

 (add-hook 'c-mode-hook
  (lambda ()
   (font-lock-add-keywords nil
    '(("\\<\\(FIXME\\):" 1 font-lock-warning-face prepend)
      ("\\<\\(and\\|or\\|not\\)\\>" .
       font-lock-keyword-face)))))
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.