python 的 modeline 构造

python

受VSCode启发的 mode line 构造,显示目前的python执行文件,鼠标悬浮显示完整路径,点击会打开python-shell-interpreter customize 界面。

;;;; Mode line
;;
;; The mode line segment shows current python executable
;; hover text is the full path
;; clicking it opens the customize panel for `python-shell-interpreter'

(defvar moon-python-mode-line-map (let ((map (make-sparse-keymap)))
                                    (define-key map (vector 'mode-line 'down-mouse-1)
                                      (lambda ()
                                        (interactive)
                                        (customize-apropos "python-shell-interpreter")))
                                    map))

(defun moon-python-exec-mode-line ()
  "Return a mode line segment for python executable."
  (propertize (file-name-base python-shell-interpreter)
              'help-echo (executable-find python-shell-interpreter)
              'keymap moon-python-mode-line-map))

(add-to-list 'mode-line-misc-info
             '(:eval (if (eq major-mode 'python-mode)
                         (list "  " (moon-python-exec-mode-line) "  "))
                     ""))

更新了一下,help-echo现在用的是(executable-find python-shell-interpreter),这样即使python-shell-interpreter不是完整路径,mode line 也能显示完整路径。

5 个赞