(Emacs)~mode line is done by hand
The evaluation system was really just an excuse for me to try and write some Lisp code when I was first learning it; the inclusion of (vc-mode vc-mode) meant I couldn't utilise it the way I wanted.
This commit is contained in:
@@ -283,62 +283,26 @@ little. I customised the Emacs modeline to give me a bit of info,
|
|||||||
Currently I use the default mode line with some customisation;
|
Currently I use the default mode line with some customisation;
|
||||||
simplicity is above all.
|
simplicity is above all.
|
||||||
*** Emacs Mode-line
|
*** Emacs Mode-line
|
||||||
Firstly, declare a variable for the separator between each module
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(defconst +modeline/separator " " "Separator between modules.")
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Then declare a variable for the number of separators between each
|
|
||||||
module in the modeline.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(defconst +modeline/sep-count 4
|
|
||||||
"Number of +modline/separator instances separating modules.")
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Then, declare a list of reserved characters for which the previously
|
|
||||||
declared seperator won't be applied when placed at the end of a module
|
|
||||||
string.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(defconst +modeline/reserved-chars (list "[" "(")
|
|
||||||
"Characters that, when at the end of a module string, won't
|
|
||||||
have the separator applied to them.")
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Now declare a function that applies the separator with respect to the
|
|
||||||
reserved characters to any one string.
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(defun +modeline/handle-string (STR)
|
|
||||||
(condition-case nil
|
|
||||||
(progn
|
|
||||||
(string-blank-p STR)
|
|
||||||
(if (cl-member (car (last (split-string STR "" t))) +modeline/reserved-chars :test #'string=)
|
|
||||||
STR
|
|
||||||
(concat STR (cl-reduce #'concat (cl-loop for i from 1 to +modeline/sep-count collect +modeline/separator)))))
|
|
||||||
(error STR)))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Finally, set the mode-line-format.
|
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(setq-default
|
(setq-default
|
||||||
mode-line-format
|
mode-line-format
|
||||||
(mapcar #'+modeline/handle-string
|
(list "%l:%c " ;; Line and column
|
||||||
(list "%l:%c"
|
"%p[" ;; Where in file + Evil state
|
||||||
"%p["
|
|
||||||
'(:eval (upcase
|
'(:eval (upcase
|
||||||
(substring
|
(substring
|
||||||
(format "%s" (if (bound-and-true-p evil-state)
|
(format "%s" (if (bound-and-true-p evil-state)
|
||||||
evil-state
|
evil-state
|
||||||
""))
|
""))
|
||||||
0 1)))
|
0 1)))
|
||||||
"]"
|
"] "
|
||||||
"%+%b("
|
"%+%b("
|
||||||
'(:eval (format "%s" major-mode))
|
'(:eval (format "%s" major-mode))
|
||||||
")"
|
") "
|
||||||
"%I"
|
"%I "
|
||||||
vc-mode
|
'(vc-mode vc-mode)
|
||||||
" "
|
" "
|
||||||
mode-line-misc-info
|
mode-line-misc-info
|
||||||
mode-line-end-spaces)))
|
mode-line-end-spaces))
|
||||||
#+end_src
|
#+end_src
|
||||||
*** WIP Telephone-line
|
*** WIP Telephone-line
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
|
|||||||
Reference in New Issue
Block a user