diff options
| -rw-r--r-- | feebleline.el | 68 |
1 files changed, 37 insertions, 31 deletions
diff --git a/feebleline.el b/feebleline.el index 346f829..7337b7b 100644 --- a/feebleline.el +++ b/feebleline.el @@ -57,7 +57,7 @@ ;; experimental). See source code for inspiration. ;;; Code: - +(require 'cl-macs) (defcustom feebleline-msg-functions nil "Fixme -- document me." :type 'list @@ -76,7 +76,7 @@ (defvar feebleline--home-dir nil) (defvar feebleline--msg-timer) -(defvar feebleline/mode-line-format-previous) +(defvar feebleline--mode-line-format-previous) (defface feebleline-git-face '((t :foreground "#444444" :italic t)) "Example face for git branch." @@ -104,11 +104,10 @@ (defun feebleline-file-directory () "Current directory, if buffer is displaying a file." - (if (buffer-file-name) - (replace-regexp-in-string - (concat "^" feebleline--home-dir) "~" - default-directory) - "")) + (when (buffer-file-name) + (replace-regexp-in-string + (concat "^" feebleline--home-dir) "~" + default-directory))) (defun feebleline-file-or-buffer-name () "Current file, or just buffer name if not a file." @@ -116,13 +115,6 @@ (file-name-nondirectory (buffer-file-name)) (buffer-name))) -(defun feebleline-git-object () - "Current branch, when magit is available." - (when (and (fboundp 'magit-get-current-branch) - (fboundp 'magit-rev-parse)) - (or (magit-get-current-branch) ; may return nil when not on a branch - (magit-rev-parse "--short" "HEAD")))) - (defun feebleline-file-modified-star () "Display star if buffer file was modified." (when (and (buffer-file-name) (buffer-modified-p)) "*")) @@ -144,7 +136,7 @@ (feebleline-file-directory :face feebleline-dir-face :post "") (feebleline-file-or-buffer-name :face font-lock-keyword-face :post "") (feebleline-file-modified-star :face font-lock-warning-face :post "") - (feebleline-git-object :face feebleline-git-face :pre " - ") + (magit-get-current-branch :face feebleline-git-face :pre " - ") ;; (feebleline-project-name :right-align t) )) @@ -156,9 +148,9 @@ "Macro for adding B to the feebleline mode-line, at the beginning." `(add-to-list 'feebleline-msg-functions ,@b nil (lambda (x y) nil))) -;; (feebleline-append-msg-function '((lambda () "end") ((pre . "/")))) -;; (feebleline-append-msg-function '(magit-get-current-branch ((pre . "/")))) -;; (feebleline-prepend-msg-function '((lambda () "-") ((post . "/")))) +;; (feebleline-append-msg-function '((lambda () "end") :pre "//")) +;; (feebleline-append-msg-function '(magit-get-current-branch :post "<-- branch lolz")) +;; (feebleline-prepend-msg-function '((lambda () "-") :face hey-i-want-some-new-fae)) (defun feebleline-default-settings-on () "Some default settings that works well with feebleline." @@ -172,6 +164,24 @@ "Some default settings for EMACS < 25." (set-face-attribute 'mode-line nil :height 0.1)) +;; disabled, because we really shouldn't silently fail +(defun feebleline--insert-ignore-errors () + "Insert stuff into the echo area, ignoring potential errors." + (unless (current-message) + (condition-case nil (feebleline--insert) + (error nil)))) + +(defun feebleline--force-insert () + "Insert stuff into the echo area even if it's displaying something." + (condition-case nil (feebleline--clear-echo-area) + (error nil))) + +(defun feebleline--fmt-string-right-align (string-to-align) + "Format string usable for right-aligning STRING-TO-ALIGN." + (concat "%" (format "%s" (- (window-width) (length string-to-align) 1)) "s")) + +(defvar feebleline--minibuf " *Minibuf-0*") + (cl-defun feebleline--insert-func (func &key (face 'default) pre (post " ") (fmt "%s") right-align) "Format an element of feebleline-msg-functions based on its properties." (when right-align @@ -200,9 +210,8 @@ (defun feebleline--clear-echo-area () "Erase echo area." - (with-current-buffer " *Minibuf-0*" - (erase-buffer)) - ) + (with-current-buffer feebleline--minibuf + (erase-buffer))) ;;;###autoload (define-minor-mode feebleline-mode @@ -213,26 +222,23 @@ ;; Activation: (progn (setq feebleline--home-dir (expand-file-name "~")) - (setq feebleline/mode-line-format-previous mode-line-format) - (setq feebleline--msg-timer (run-with-timer 0 feebleline-timer-interval 'feebleline--insert)) + (setq feebleline--mode-line-format-previous mode-line-format) + (setq feebleline--msg-timer + (run-with-timer 0 feebleline-timer-interval + 'feebleline--insert)) (if feebleline-use-legacy-settings (feebleline-legacy-settings-on) (feebleline-default-settings-on)) - (add-hook 'focus-in-hook 'feebleline--insert) - ) + (add-hook 'focus-in-hook 'feebleline--insert)) ;; Deactivation: (set-face-attribute 'mode-line nil :height 1.0) - (setq-default mode-line-format feebleline/mode-line-format-previous) - (setq mode-line-format feebleline/mode-line-format-previous) + (setq-default mode-line-format feebleline--mode-line-format-previous) + (setq mode-line-format feebleline--mode-line-format-previous) (cancel-timer feebleline--msg-timer) (remove-hook 'focus-in-hook 'feebleline--insert) (force-mode-line-update) (redraw-display) (feebleline--clear-echo-area))) - - - - ; (provide 'feebleline) ;;; feebleline.el ends here |
