しょぼしょぼすくりぷと xyzzy > xyzzy用 mode集 > print-mode-line mode(モードライン拡張minor-mode)

print-mode-line mode(モードライン拡張minor-mode)

モードライン(バッファーの下にあるバー)に任意の文字を表示させるマイナーモードです。
例として、文字数、や行数の位置が表示できます。

ソース

print-mode-line-mode.l

実行設定

(load-library "print-mode-line-mode")
で読み込み
mode-line-formatを設定して、
M-x print-mode-line-mode
で立ち上げます。

○実行時

あとは この「マイナーモードを呼ぶ前」に 標準の mode-line-formatを修正してください。

変更するときも マイナーモードオフにしてから mode-line-formatを設定し マイナーモードをオンにします。
(間違えちゃっても大した影響はないけど、うまく反映されない時もある。)

マイナーモード表示名:「@」にしました。

実行設定サンプル

○フォーマットサンプル

;標準:拡張なしだとすると、
(setq mode-line-format "[%i] %* %b (%M) [%k:%l] %P %f")

;設定例
(setq mode-line-format "[%i]%b(%M)[%k:%l] %*,%T,%isech%PL(%/%:%pts) %ps %f")

;カーソル位置%と文字数表示
(setq mode-line-format "[%i] %* %b (%M) |%/%,  %n |  [%k:%l] %P %f")

;グリニッジ時間表示
(setq mode-line-format "[%i] %* %b (%M) |%2ATIME|  [%k:%l] %P %f")
(setq *second-area-timezone* -18) ;多分・・
(setq *second-area-time-format* "%m/%d(%v)) %H:%M")

○拡張フォーマット

使い方サンプルとして、拡張フォーマットを作ってみました。
%/      : カーソル位置が バッファ全体の何%の位置にあるか
%PL     : 表示ライン桁数 論理行において、桁数も見た目ではなく論理行
%Px     : 表示ライン桁数(x,y形式)
%pts    : カーソル位置
%ps     : m マークの位置方向 ,  lm 最後に修正位置の方向
%mpts   : カーソル最大位置  ほぼ %s かな
%s      : バッファーサイズ
%c      : 文字数(改行を除く)
%w      : 単語数 (スペース区切りなど、日本語は無理)
%n      : 改行数
%fd     : ファイル更新日時 (フォーマット:*print-mode-time-format*)
%fh     : ファイル更新時 (フォーマット:*print-mode-time-format-sub*)
%2ATIME : 第二地域日時表示 (*second-area-time-format*,*second-area-timezone* 参照)
%fc     : fill-column数
%lc     : ラストコマンド last-command
%tc     : コマンド this-command
%machine: マシン名
%T      : t  :trace-on-error?
         as :auto-save?
         l  :lock-file?
          * :ロック済みか
         b  :back-up?
          + :back-up-always
         u  :undo可能?
         ld :ldoc
         pr :paren 
(%isech : r  : isearch-deco regex
         c  : isearch-deco case-foldp
         d  : isearch-deco coloring
          * : isearch-deco coloring left  ) ・・・イマイチ
・標準フォーマットについては、更新履歴:Version 0.2.1.153参照
http://www.jsdlab.co.jp/~kei/download/OChangeLog.html

その他 lisp拡張例

これ以外に、独自に拡張したい人は、 それ以外にも *print-mode-line-mode-list*に設定すれば簡単に拡張できます。作るのは大変だけど
・お天気
・メール着信
・借金時計
・時刻スケジュール
・時報
・CPU情報、バッテリー
・%cd    : カウントダウン とか
・%pd    : 経過日   とか
追加例:
(push (list (list "%XYZ" 'hogehoge-func)) *print-mode-line-mode-list*)
print-mode-line mode(モードライン拡張minor-mode)に機能を追加してみた - blechmusik2の日記

○制限

独自のバッファローカル設定(den8とか?)しているとどうなるか試していません。

○一応・・・

バッファーごとにしてみました。 (よくminorモードやbufferの構造がわかっていないので、これだけでも結構苦労しました)

●設計内容

こんな設計思想で機能が実装されています。

●履歴

2010/8/14 拡張ライブラリをサンプルとして作成
2010/8/14 mode-line-modeと被るけどUIを使いやすくした。
2002/1/10 新規作成



しょぼしょぼすくりぷと xyzzy編 トップへ