私は perl プログラマーであり、新しい emacs ユーザーです。私は Windows で、perl の編集に cperl-mode を使用しています。Emacs のバージョンは 24.2.1 です。サンプルコードを含むスクリーンショットを次に示します。
(出典: breqwas.net )
- 明らかなバグ:コメント内の ( a => "b" ) スタイル リストで、配列、ハッシュ、および引用符で囲まれていないリテラル値を強調表示します
- もう 1 つのバグ: デフォルトではない引用符が原因で、正規表現の最初の単語が配列として強調表示されます。
- バグではありませんが、奇妙に見えます: 配列とハッシュが使用されているときはいつでも強調表示されますが (コメント内であっても)、スカラーは宣言されている場合にのみ強調表示されます
- バグではありませんが、奇妙に見えます: 関数と同じ話: 宣言されたときに強調表示され、呼び出されたときではありません
- バグではありませんが、奇妙に見えます。「print」、「say」、および「system」の色が異なるのはなぜですか?
私は続けることができましたが、それが「壊れた」という言葉をうまく説明していることを願っています.
それから、魔法の Cu Cx = キーの組み合わせを学びました。これは、カーソルの下にあるテキストのテキスト プロパティなどを表示し、独自のより良い配色スキームを作成することを望んでいました。この時点で、それはさらに意味がなくなり始めました。
「print」にはcperl-nonoverridable-face があります。"die" にはfont-lock-keyword-face があります。一方、どちらも関数であり、オーバーライドできます (多くの場合オーバーライドされます)。「システム」にはfont-lock-type-face があります。なんで?関数宣言にはfont-lock-function-name-faceがあります - それは問題ありませんが、「use」の引数もそうです。なんで?関数呼び出しとスカラーには face プロパティがまったくないため、強調表示できません。なんで?Etc, Etc. 繰り返しますが、私は続けることができました。
それをすべて修正する方法はありますか?語彙単位を他のフォントフェイスに再マップできる設定、または構文の強調表示のクレイジーさを軽減する他の方法はありますか?
「perl は解析できない」という話を避けるために、移行元のエディターのスクリーンショットを示します。コードはまったく同じです: http://breqwas.net/dropbox/perlsyn_pn.png。はるかに合理的に見えます。
Upd:今(ここでこの質問をしてから3週間後)までに、私は治療法を見つけられませんでした. 私が知っている emacs を使用するすべての perl プログラマーは、これらの問題を無視しています。emacs 用のより優れた perl ハイライターは存在しないようです。cperl-mode docs を読むと、いくつかの説明が得られます (さまざまな要素の顔の選択は、今ではそれほどクレイジーではないようです) が、答えはありません。私は cperl-mode メンテナにこれらの質問とさらに掘り下げたメールを書きましたが、返事がありませんでした。
はい、その通りです。emacs コミュニティは、perl が存在する 25 年間で、優れた perl 構文を強調表示することができなかったようです。それは悲しい話です。