4747
4848(defcustom jcs-modeline-left
4949 `((:eval (jcs-modeline--render-front-spaces))
50- (:eval (jcs-modeline--render-buffer-identification))
5150 (:eval (jcs-modeline--render-modes))
52- (:eval (jcs-modeline--render-vc-project))
51+ (:eval (jcs-modeline--render-buffer-identification))
52+ (:eval (moody-tab (jcs-modeline--render-vc-project)))
53+ (:eval (jcs-modeline--render-read-only))
5354 (:eval mode-line-process))
5455 " List of item to render on the left."
5556 :type 'list
6465 (:eval (jcs-modeline--render-undo-tree-buffer-name))
6566 (:eval (jcs-modeline--render-undo-tree-status))
6667 (:eval (jcs-modeline--render-vc-info))
67- (:eval (jcs-modeline--render-line-columns))
68+ (:eval (moody-tab ( jcs-modeline--render-line-columns) 0 'up ))
6869 (:eval (jcs-modeline--render-percent-position))
6970 (:eval (jcs-modeline--render-end-spaces)))
7071 " List of item to render on the right."
@@ -285,11 +286,8 @@ Position argument ARG0."
285286
286287(defun jcs-modeline--render-buffer-identification ()
287288 " Render buffer identification."
288- (concat (if buffer-read-only
289- (or (jcs-modeline--char-displayable-p " 🔒 " )
290- " &L " )
291- " " )
292- (jcs-modeline-format mode-line-buffer-identification)
289+ (concat (and (not (bound-and-true-p centaur-tabs-mode))
290+ (jcs-modeline-format mode-line-buffer-identification))
293291 " " ))
294292
295293; ;
@@ -326,19 +324,18 @@ Position argument ARG0."
326324 mode-line-modes))))
327325 (lst (cl-remove-if #'null (list icon line-modes)))
328326 (ind (mapconcat #'identity lst " " )))
329- (moody-tab
330- (propertize ind
331- 'mouse-face 'mode-line-highlight
332- 'help-echo " Major and minor modes
327+ (propertize ind
328+ 'mouse-face 'mode-line-highlight
329+ 'help-echo " Major and minor modes
333330mouse-1: Toggle display of major mode name"
334- 'local-map (let ((map (make-sparse-keymap )))
335- (define-key map (vector 'mode-line 'mouse-1 )
336- (lambda (&rest _ )
337- (interactive )
338- (setq jcs-modeline-show-mode-name
339- (not jcs-modeline-show-mode-name))
340- (force-mode-line-update t )))
341- map) ))))
331+ 'local-map (let ((map (make-sparse-keymap )))
332+ (define-key map (vector 'mode-line 'mouse-1 )
333+ (lambda (&rest _ )
334+ (interactive )
335+ (setq jcs-modeline-show-mode-name
336+ (not jcs-modeline-show-mode-name))
337+ (force-mode-line-update t )))
338+ map))))
342339
343340; ;
344341; ;; Line and Columns
@@ -364,7 +361,7 @@ mouse-1: Toggle display of major mode name"
364361 (lst (if jcs-modeline-show-point
365362 (list ind-line ind-column ind-point)
366363 (list ind-line ind-column))))
367- (moody-tab ( mapconcat #'identity lst " " ) 0 'up )))
364+ (mapconcat #'identity lst " " )))
368365
369366; ;
370367; ;; Scroll
@@ -378,6 +375,11 @@ mouse-1: Toggle display of major mode name"
378375; ;
379376; ;; Project
380377
378+ (defcustom jcs-modeline-project-indicator " -*-"
379+ " String indicator when project root is not found."
380+ :type 'string
381+ :group 'jcs-modeline )
382+
381383(defun jcs-modeline--project-root ()
382384 " Return project directory path."
383385 (when-let ((current (project-current ))) (project-root current)))
@@ -389,23 +391,31 @@ mouse-1: Toggle display of major mode name"
389391
390392(defun jcs-modeline--render-vc-project ()
391393 " Return the project name."
392- (when-let* (((or (buffer-file-name ) jcs-modeline-show-project-name-virutal-buffer))
393- (project (jcs-modeline--project-root))
394- (ind (file-name-nondirectory (directory-file-name project))))
395- (concat
396- " "
397- (propertize ind
398- 'mouse-face 'mode-line-highlight
399- 'help-echo (format " Project Name
394+ (if-let* (((or (buffer-file-name ) jcs-modeline-show-project-name-virutal-buffer))
395+ (project (jcs-modeline--project-root))
396+ (ind (file-name-nondirectory (directory-file-name project))))
397+ (concat
398+ (propertize ind
399+ 'mouse-face 'mode-line-highlight
400+ 'help-echo (format " Project Name
400401path: %s
401402mouse-1: Reveal project in folder " project)
402- 'local-map
403- (let ((map (make-sparse-keymap )))
404- (define-key map (vector 'mode-line 'mouse-2 )
405- (lambda (&rest _ )
406- (interactive )
407- (reveal-in-folder-open project)))
408- map)))))
403+ 'local-map
404+ (let ((map (make-sparse-keymap )))
405+ (define-key map (vector 'mode-line 'mouse-1 )
406+ (lambda (&rest _ )
407+ (interactive )
408+ (reveal-in-folder-open project)))
409+ map)))
410+ (propertize jcs-modeline-project-indicator
411+ 'mouse-face 'mode-line-highlight
412+ 'help-echo " Project Name
413+
414+ mouse-1: Switch project"
415+ 'local-map
416+ (let ((map (make-sparse-keymap )))
417+ (define-key map (vector 'mode-line 'mouse-1 ) #'project-switch-project )
418+ map))))
409419
410420; ;
411421; ;; Version Control
@@ -463,6 +473,18 @@ mouse-1: Reveal project in folder" project)
463473 'help-echo tip)
464474 " " )))
465475
476+ ; ;
477+ ; ;; Read-Only
478+
479+ (defun jcs-modeline--render-read-only ()
480+ " Render read-only indicator."
481+ (concat " "
482+ (if buffer-read-only
483+ (or (jcs-modeline--char-displayable-p " 🔒" )
484+ " &L" )
485+ (or (jcs-modeline--char-displayable-p " 🔓" )
486+ " &U" ))))
487+
466488; ;
467489; ;; Text Scale
468490
0 commit comments