モードラインにファイル権限ビットを表示しますか?

モードラインにファイル権限ビットを表示しますか?

今日、Emacs で開いているファイルを保存する前に、ファイルの権限を確認するために、Emacs とシェルを何度か切り替えていることに気づきました。

言うまでもなく、これは最適ではなく、改善の余地が十分にあります。

私は、モードラインに権限ビットを表示させたいと思います。

-:--- .netrc 0600 .... further modeline stuff ....

この目標を達成するのに最も近かったのはemacs-fuブログでただし、ファイルが読み取り専用かどうかを確認するだけでなく、より一般的なソリューションが必要です。

どうすればこれを達成できるでしょうか?

答え1

少し試してみたところ、これがうまくいきました:

;; New variable to contain buffer file permission format construct.
(defvar my-mode-line-buffer-permissions
  '(:eval (when (buffer-file-name) (format " %04o" (file-modes (buffer-file-name))))))
;; The variable must be marked as "risky" (see C-h v mode-line-format)
(put 'my-mode-line-buffer-permissions 'risky-local-variable t)
;; And finally add it right after the file name:
(setq-default
 mode-line-buffer-identification
 (append mode-line-buffer-identification (list 'my-mode-line-buffer-permissions)))

モード ラインには次のように表示されます。

-uu-:---F1  .emacs       0644   Top L1     (Emacs-Lisp)--------------

関連情報