linum.elのelispコードを修正しています:
(custom-set-variables '(linum-format 'dynamic))
(defadvice linum-update-window (around linum-dynamic activate)
(let* ((w (length (number-to-string
(+ (count-lines (point-min) (point-max)) 1))))
(linum-format (concat " %" (number-to-string w) "d ")))
ad-do-it))
に変更する(count-lines (point-min) (point-max))
ことで、インデントが1つずつずれていたバグを修正できました(+ (count-lines (point-min) (point-max)) 1)
。それは簡単でした。
ただし(concat " %" (number-to-string w) "2d ")
、行番号のカウントが10未満の場合にif-conditional whereを追加して、最小幅が2になるように変更します。
これは簡単なはずです!1つの条件を追加し、連結をコピー/貼り付けます。ケーキだよね?つまり、何をすべきかはわかっていますが、elispに触れることはめったになく、多くの括弧で何かを変更しなければならないときはいつも気が遠くなります。
私が理解していることから、「正しい」スタイルは、インデントに基づいてコードを構造化し、それ自体ではなく行末で括弧をラップすることです。他の「C」スタイルの言語から来て、私はこの方法でコードを読み書きするのに苦労しています。だから私の質問は次のとおりです。私は何が間違っていますか?elispを編集してコードをナビゲートし、そこに座ってすべての括弧を数える必要がないようにするにはどうすればよいですか?
elispで深くなりすぎるものを扱うときは、ドアを閉め、ブラインドを引っ張り、K&Rスタイルの括弧を配置する必要があります。
明らかに私はこれをすべて間違っています。どうすればこのようなelispを恐れることなくタッチできますか?
私の質問は、スタイルに関する質問としてではなく、elispをナビゲートおよび編集する方法です。私はすでにスタイルガイドとして次を使用しています:https : //github.com/bbatsov/emacs-lisp-style-guide
更新:
emacs.stackexchangeで恥ずかしがる前にelispを適切にフォーマットする方法:
elispをマークして実行しますM-x indent-region
。
問題の解決策:
最小幅が2のlinumの右揃えの実行方法を知りたい場合は、次の解決策があります。
(defadvice linum-update-window (around linum-dynamic activate)
(let* ((w (length (number-to-string
(+ (count-lines (point-min) (point-max)) 1))))
(linum-format (if (> w 1)
(concat " %" (number-to-string w) "d ")
" %2d ")))
ad-do-it))
%2d
幅が3文字以上になると、右揃えから左揃えに移動するので、私は使用できません。
highlight-parentheses
ます。rainbow-delimiters
; などここには私の自身の簡易版であるhighlight-parentheses
最後の色付けされた括弧を削除せずにスクロールすることを許可: stackoverflow.com/a/23998965/2112489 、それは顧客/スレッドごとに一つの質問将来のです。