« REUDO(リュード)Bluetoothキーボード | トップページ | とある日の晩ご飯 »

【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)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

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

« REUDO(リュード)Bluetoothキーボード | トップページ | とある日の晩ご飯 »

Emacs」カテゴリの記事