Add lv-force-update

* hydra.el (hydra-keyboard-quit): Don't clear the message when
  `hydra--ignore' is t.

* lv.el (lv-force-update): New defvar.
(lv-message): Refresh the window unless both the window contents haven't
changed and `lv-force-update' is nil.

Fixes #121
master
Oleh Krehel 11 years ago
parent 01248b1954
commit 00d2c0c6f9
  1. 7
      hydra.el
  2. 24
      lv.el

@ -387,9 +387,10 @@ Return DEFAULT if PROP is not in H."
(hydra-disable)
(cancel-timer hydra-timeout-timer)
(cancel-timer hydra-message-timer)
(if hydra-lv
(lv-delete-window)
(message ""))
(unless hydra--ignore
(if hydra-lv
(lv-delete-window)
(message "")))
nil)
(defun hydra--hint (body heads)

24
lv.el

@ -56,22 +56,24 @@
(set-window-parameter lv-wnd 'no-other-window t))
(select-window ori)))))
(defvar lv-force-update t
"When non-nil, `lv-message' will refresh even for the same string.")
(defun lv-message (format-string &rest args)
"Set LV window contents to (`format' FORMAT-STRING ARGS)."
(let* ((ori (selected-window))
(str (apply #'format format-string args))
(let* ((str (apply #'format format-string args))
(n-lines (cl-count ?\n str))
deactivate-mark
golden-ratio-mode)
(select-window (lv-window))
(unless (string= (buffer-string) str)
(delete-region (point-min) (point-max))
(insert str)
(setq-local window-min-height n-lines)
(setq truncate-lines (> n-lines 1))
(fit-window-to-buffer nil nil 1))
(goto-char (point-min))
(select-window ori)))
(with-selected-window (lv-window)
(unless (and (string= (buffer-string) str)
(null lv-force-update))
(delete-region (point-min) (point-max))
(insert str)
(setq-local window-min-height n-lines)
(setq truncate-lines (> n-lines 1))
(fit-window-to-buffer nil nil 1))
(goto-char (point-min)))))
(defun lv-delete-window ()
"Delete LV window and kill its buffer."

Loading…
Cancel
Save