[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#66317: Project mode-line
From: |
Eshel Yaron |
Subject: |
bug#66317: Project mode-line |
Date: |
Wed, 04 Oct 2023 09:15:37 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) |
Juri Linkov <juri@linkov.net> writes:
> Ok, here is the implementation with an optional variable:
Thanks, I've tried this patch on top of Emacs master and it seems to
work well. One small suggestion is to consider giving the project name
in the mode line a dedicated face, so people/themes could customize its
appearance. (By default, it could just inherit from `default`.)
> diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el
> index 2e6ae89a443..74b2347b715 100644
> --- a/lisp/progmodes/project.el
> +++ b/lisp/progmodes/project.el
> @@ -2010,5 +2103,36 @@ project-uniquify-dirname-transform
> (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."
> + :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
> diff --git a/lisp/bindings.el b/lisp/bindings.el
> index 207adb3a2a4..70e4087e131 100644
> --- a/lisp/bindings.el
> +++ b/lisp/bindings.el
> @@ -682,6 +682,7 @@ mode-line-end-spaces
> 'mode-line-buffer-identification
> " "
> 'mode-line-position
> + '(project-mode-line project-mode-line-format)
> '(vc-mode vc-mode)
> " "
> 'mode-line-modes
- bug#66317: Project mode-line, Juri Linkov, 2023/10/03
- bug#66317: Project mode-line, Eshel Yaron, 2023/10/03
- bug#66317: Project mode-line, Dmitry Gutov, 2023/10/03
- bug#66317: Project mode-line, Juri Linkov, 2023/10/03
- bug#66317: Project mode-line, Dmitry Gutov, 2023/10/03
- bug#66317: Project mode-line, Juri Linkov, 2023/10/03
- bug#66317: Project mode-line, Dmitry Gutov, 2023/10/03
- bug#66317: Project mode-line, Eli Zaretskii, 2023/10/03
- bug#66317: Project mode-line, Juri Linkov, 2023/10/04
- bug#66317: Project mode-line,
Eshel Yaron <=
- bug#66317: Project mode-line, Juri Linkov, 2023/10/04
- bug#66317: Project mode-line, Spencer Baugh, 2023/10/05
- bug#66317: Project mode-line, Dmitry Gutov, 2023/10/05
- bug#66317: Project mode-line, Juri Linkov, 2023/10/06
- bug#66317: Project mode-line, Juri Linkov, 2023/10/09
- bug#66317: Project mode-line, Eshel Yaron, 2023/10/09
- bug#66317: Project mode-line, Juri Linkov, 2023/10/10
- bug#66317: Project mode-line, Dmitry Gutov, 2023/10/10
- bug#66317: Project mode-line, Juri Linkov, 2023/10/11
- bug#66317: Project mode-line, Eli Zaretskii, 2023/10/04