New option 'project-mode-line' to show project name on mode line (bug#66317)
* lisp/bindings.el (standard-mode-line-format): Add '(project-mode-line project-mode-line-format)'. * lisp/progmodes/project.el (project-mode-line): New user option. (project-menu-entry, project-mode-line-map): New variables. (project-mode-line-format): New variable. (project-mode-line-format): New function.
This commit is contained in:
parent
2cdf80bb8f
commit
238292d657
3 changed files with 38 additions and 0 deletions
4
etc/NEWS
4
etc/NEWS
|
@ -889,6 +889,10 @@ showcases all their customization options.
|
|||
|
||||
** Project
|
||||
|
||||
*** New user option 'project-mode-line'.
|
||||
When non-nil, display the name of the current project on
|
||||
the mode line. Clicking mouse-1 pops up the project menu.
|
||||
|
||||
*** New user option 'project-file-history-behavior'.
|
||||
Customizing it to 'relativize' makes commands like 'project-find-file'
|
||||
and 'project-find-dir' display previous history entries relative to
|
||||
|
|
|
@ -682,6 +682,7 @@ By default, this shows the information specified by `global-mode-string'.")
|
|||
'mode-line-buffer-identification
|
||||
" "
|
||||
'mode-line-position
|
||||
'(project-mode-line project-mode-line-format)
|
||||
'(vc-mode vc-mode)
|
||||
" "
|
||||
'mode-line-modes
|
||||
|
|
|
@ -2010,5 +2010,38 @@ would otherwise have the same name."
|
|||
(file-relative-name dirname root))))
|
||||
dirname))
|
||||
|
||||
;;; Project mode-line
|
||||
|
||||
;;;###autoload
|
||||
(defcustom project-mode-line nil
|
||||
"Show the current project name with the menu on the mode line.
|
||||
This feature requires the presence of the following item in
|
||||
`mode-line-format': `(project-mode-line project-mode-line-format)'."
|
||||
:type 'boolean
|
||||
:group 'project
|
||||
:version "30.1")
|
||||
|
||||
(defvar project-menu-entry
|
||||
`(menu-item "Project" ,menu-bar-project-menu))
|
||||
|
||||
(defvar project-mode-line-map
|
||||
(let ((map (make-sparse-keymap)))
|
||||
(define-key map [mode-line down-mouse-1] project-menu-entry)
|
||||
map))
|
||||
|
||||
(defvar project-mode-line-format '(:eval (project-mode-line-format)))
|
||||
(put 'project-mode-line-format 'risky-local-variable t)
|
||||
|
||||
(defun project-mode-line-format ()
|
||||
"Compose the project mode-line."
|
||||
(when-let ((project (project-current)))
|
||||
(concat
|
||||
" "
|
||||
(propertize
|
||||
(project-name project)
|
||||
'mouse-face 'mode-line-highlight
|
||||
'help-echo "mouse-1: Project menu"
|
||||
'local-map project-mode-line-map))))
|
||||
|
||||
(provide 'project)
|
||||
;;; project.el ends here
|
||||
|
|
Loading…
Add table
Reference in a new issue