
Сегодня я несколько раз переключался между 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)--------------