ui/modeline: add support for indirect buffers

Indirect buffer support is still dodgy and needs work (some segments
don't update at all).
This commit is contained in:
Henrik Lissner 2018-09-28 21:11:40 -04:00
parent 13cee6870e
commit d9fb1c5ca6

View file

@ -272,7 +272,8 @@ use `buffer-name'."
parent. parent.
e.g. project/src/lib/file.c" e.g. project/src/lib/file.c"
(let ((filename (or buffer-file-truename (file-truename buffer-file-name)))) (let* ((base (buffer-base-buffer))
(filename (file-truename (buffer-file-name base))))
(append (if (doom-project-p) (append (if (doom-project-p)
(let* ((project-root (doom-project-root)) (let* ((project-root (doom-project-root))
(relative-dirs (file-relative-name (file-name-directory filename) (relative-dirs (file-relative-name (file-name-directory filename)
@ -314,9 +315,10 @@ e.g. ~/w/project/src/lib/file.c
Meant for `+modeline-buffer-path-function'." Meant for `+modeline-buffer-path-function'."
(pcase-let (pcase-let
((`(,root-parent ,root ,dir, file) ((`(,root-parent ,root ,dir, file)
(shrink-path-file-mixed (or (doom-project-root) default-directory) (let ((buffer-file-name (or buffer-file-name (buffer-file-name (buffer-base-buffer)))))
(file-name-directory buffer-file-name) (shrink-path-file-mixed (or (doom-project-root) default-directory)
buffer-file-name))) (file-name-directory buffer-file-name)
buffer-file-name))))
(list (cons root-parent 'font-lock-comment-face) (list (cons root-parent 'font-lock-comment-face)
(cons root 'doom-modeline-buffer-project-root) (cons root 'doom-modeline-buffer-project-root)
(cons (concat "/" dir) 'doom-modeline-buffer-path) (cons (concat "/" dir) 'doom-modeline-buffer-path)
@ -344,7 +346,8 @@ Meant for `+modeline-buffer-path-function'."
e.g. ~/w/p/s/l/file.c e.g. ~/w/p/s/l/file.c
Meant for `+modeline-buffer-path-function'." Meant for `+modeline-buffer-path-function'."
(pcase-let ((`(,dir . ,file) (shrink-path-prompt buffer-file-name))) (pcase-let ((`(,dir . ,file)
(shrink-path-prompt (buffer-file-name (buffer-base-buffer)))))
(list (cons dir 'doom-modeline-buffer-path) (list (cons dir 'doom-modeline-buffer-path)
(cons file 'doom-modeline-buffer-file)))) (cons file 'doom-modeline-buffer-file))))
@ -413,21 +416,23 @@ Meant for `+modeline-buffer-path-function'."
after-change-functions after-change-functions
after-save-hook after-save-hook
after-revert-hook) after-revert-hook)
(let ((icon (cond (buffer-read-only (let* ((base (buffer-base-buffer))
(all-the-icons-octicon (icon (cond (buffer-read-only
"lock" (all-the-icons-octicon
:face 'doom-modeline-warning "lock"
:v-adjust -0.05)) :face 'doom-modeline-warning
((buffer-modified-p) :v-adjust -0.05))
(all-the-icons-faicon ((buffer-modified-p base)
"floppy-o" (all-the-icons-faicon
:face 'doom-modeline-buffer-modified "floppy-o"
:v-adjust -0.05)) :face 'doom-modeline-buffer-modified
((and buffer-file-name (not (file-exists-p buffer-file-name))) :v-adjust -0.05))
(all-the-icons-octicon ((and (buffer-file-name base)
"circle-slash" (not (file-exists-p (buffer-file-name base))))
:face 'doom-modeline-urgent (all-the-icons-octicon
:v-adjust -0.05))))) "circle-slash"
:face 'doom-modeline-urgent
:v-adjust -0.05)))))
(if icon (concat icon " ")))) (if icon (concat icon " "))))
(def-modeline-segment! +modeline-buffer-id (def-modeline-segment! +modeline-buffer-id