Skip to content

honmaple/emacs-maple-modeline

Repository files navigation

emacs-maple-modeline

Screenshots

./screenshot/example.png ./screenshot/example1.png ./screenshot/example2.png ./screenshot/example3.png ./screenshot/example4.png

Quickstart

(use-package maple-modeline
  :quelpa (:fetcher github :repo "honmaple/emacs-maple-modeline")
  :hook (after-init . maple-modeline-mode)
  :custom-face
  (mode-line ((t (:box nil))))
  (mode-line-inactive ((t (:box nil)))))

Or alternatively, you can download the repository and install manually by doing:

git clone https://github.com/honmaple/emacs-maple-modeline ~/.emacs.d/site-lisp/maple-modeline

Then use

(use-package maple-modeline
  :ensure nil
  :hook (after-init . maple-modeline-mode))

Customize

;; standard, minimal, sidebar, evil
(setq maple-modeline-style 'standard)
;; modeline style for side window
(setq maple-modeline-side-style 'side)
;; standard or auto or some number
(setq maple-modeline-width 'standard)
;; set modeline height
(setq maple-modeline-height 20)
;; show icon, require nerd-icons package
(setq maple-modeline-icon (and (display-graphic-p) *icon*))
;; the separator of segments
(setq maple-modeline-separator (if (display-graphic-p) 'arrow 'default))
;; separator's direction of left-segments and right-segments: auto,right,left
(setq maple-modeline-direction '(right . left))

How to customize new style?

(maple-modeline-define style-name
  :left ((evil :left (bar :left "")) macro iedit anzu buffer-info major-mode flycheck flymake version-control remote-host region)
  :right (narrow python lsp misc-info process count position))

Then use (setq maple-modeline-style 'style-name)

How to customize new segment?

(maple-modeline-define-segment anzu
  :if (bound-and-true-p anzu--state)
  :priority 7
  :format (anzu--update-mode-line))

How to customize special segment?

  • custimize priority
    (add-to-list 'maple-modeline-priority-alist '(buffer-info . 8))
        
  • hide segment
    (add-to-list 'maple-modeline-priority-alist '(major-mode . 0))
        
  • custimize face
    (add-to-list 'maple-modeline-face-alist '(buffer-info . font-lock-keyword-face))
    ;; or
    (add-to-list 'maple-modeline-face-alist '(version-control . (:foreground "white" :background "plum3")))
        

How to customize separator?

(defun maple/custom-separator (height color0 color1 &optional reverse)
  (when reverse
    (setq color0 (prog1 color1 (setq color1 color0))))
  (let* ((height (float height))
         (size   (font-get (face-attribute 'default :font) :size))
         (icon   (nerd-icons-powerline
                  (if reverse "nf-pl-right_hard_divider" "nf-pl-left_hard_divider")
                  ;; (if reverse "nf-ple-lower_right_triangle" "nf-ple-lower_left_triangle")
                  ;; (if reverse "nf-ple-flame_thick_mirrored" "nf-ple-flame_thick")
                  :v-adjust (* (/ 1.0 size) -1.0))))
    (propertize icon 'face (list :inherit (get-text-property 0 'face icon)
                                 :height (/ height size)
                                 :foreground color0
                                 :background color1))))

(setq maple-modeline-separator 'maple/custom-separator)

Features

Separators

  • default
  • bar
  • arrow
  • slant
  • slant-2x
  • circle
  • gradient
  • icon-ice
  • icon-flame
  • icon-arrow
  • icon-trianle
  • icon-trianle-up
  • icon-trapeoid
  • icon-circl
  • icon-pixelted
  • icon-pixelted-sm

Segments

  • bar
  • evil
  • window-number
  • major-mode
  • minor-mode
  • buffer-info
  • buffer-encoding
  • buffer-position
  • remote-host
  • count
  • region
  • misc-info
  • python
  • flycheck
  • version-control
  • process
  • anzu
  • iedit
  • lsp
  • narrow
  • macro
  • nyan

About

Beautiful emacs modeline

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published