summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--feebleline.el68
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