【Emacs】 リージョン内の行数と文字数をモードラインに表示する

Emacsでプログラムとかメールとか書いてる時に(あ、あとツイッターもかな?)指定範囲の行数やら文字数やらを知りたいって事がままあるわけです。そんな時はリージョンを設定して、「M-=」もしくは「M-x count-lines-region」とやるとリージョン範囲の行数と文字数が表示できるのやけど、毎度タイプするのも面倒やなぁって思ってたら、こんなすばらしいelispを作ってる方がいらっしゃいました。
早速、使わせて頂くと共に紹介しまする。

再発明日記
リージョン内の行数と文字数をモードラインに表示する(範囲指定している時だけ)

実際に表示してみた感じは・・・
Screenshotscratch1
おぉ〜。ええやん。モードラインの左側にご注目くださいな。
表示フォーマットは format の後ろを変更すれば変えられます。
オリジナルのままだとちょっと長かったので、linesやcharsを無くして、さらに固定長にしました。指定した行数以上を選択すると表示位置がずれるけど、まぁ余りそんな大きなリージョンを設定する事もないしね。

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 行と桁の表示
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(line-number-mode t)
(column-number-mode t)
;; 選択範囲の情報表示
(defun count-lines-and-chars ()
  (if mark-active
      (format "[%3d:%4d]"
              (count-lines (region-beginning) (region-end))
              (- (region-end) (region-beginning)))
    ""))
(add-to-list ‘default-mode-line-format
             ‘(:eval (count-lines-and-chars)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

という事で、最終的に上記のようにして使用しています。

Author: kan
初めてプログラムらしきものを作ったのは幼稚園の時。それから約40年経ち、現在はデジタル回路設計から信号処理、機械学習まで幅広い経験を活かしてシステムアーキテクトとして活動中。超並列処理、デジタル回路とソフトウェアのバランス設計が得意分野。 Linux/Mac/Windows使い。 C/C++を主要言語として、Unity、Qtなどのフレームワーク興味あり。UI/UXデザイン、STL拡張など。 音声処理、画像処理、技術コンサルは仕事でも請け負います。 一般ソフトウェア開発プロセス、医療機器ソフトウェア開発プロセス作成も進行中。