aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShin Aoyama <smihica@gmail.com>2016-11-14 14:58:50 +0900
committerGitHub <noreply@github.com>2016-11-14 14:58:50 +0900
commit5af39aaef59125fd80901f275c23c89493f9d133 (patch)
treebaf1bce0056ba774c6fa8aad5644aafe69f130d6
parent607a23d208405838325ca5203a1900682dad00ac (diff)
parent39ef6f894d19b3a2ba5e583788af5f337eaf21c0 (diff)
downloademmet-mode-5af39aaef59125fd80901f275c23c89493f9d133.tar.lz
emmet-mode-5af39aaef59125fd80901f275c23c89493f9d133.tar.xz
emmet-mode-5af39aaef59125fd80901f275c23c89493f9d133.zip
Merge pull request #84 from Fuco1/feature/online-preview
Add emmet-preview-mode
-rw-r--r--emmet-mode.el30
1 files changed, 29 insertions, 1 deletions
diff --git a/emmet-mode.el b/emmet-mode.el
index 5f0a204..c1326ed 100644
--- a/emmet-mode.el
+++ b/emmet-mode.el
@@ -343,7 +343,7 @@ This minor mode defines keys for quick access:
Home page URL `http://www.emacswiki.org/emacs/Emmet'.
See also `emmet-expand-line'."
- :lighter " Emmet"
+ :lighter (" Emmet" (:eval (if emmet-preview-mode "[P]" "")))
:keymap emmet-mode-keymap
:after-hook (emmet-after-hook))
@@ -526,6 +526,34 @@ accept it or skip it."
(goto-char here)
(add-hook 'post-command-hook 'emmet-preview-post-command t t)))))
+(defun emmet-preview-online ()
+ "Display `emmet-preview' on the fly as the user types.
+
+To use this, add the function as a local hook:
+
+ (add-hook 'post-self-insert-hook 'emmet-preview-online t t)
+
+or enable `emmet-preview-mode'."
+ (ignore-errors
+ (let* ((expr (emmet-expr-on-line))
+ (text (nth 0 expr))
+ (beg (nth 1 expr))
+ (end (nth 2 expr)))
+ (let ((wap (word-at-point)))
+ (when (and (not (equal wap text))
+ (emmet-transform text))
+ (emmet-preview beg end))))))
+
+(define-minor-mode emmet-preview-mode
+ "When enabled, automatically show `emmet-preview' as the user types.
+
+See `emmet-preview-online'."
+ :init-value nil
+ :group 'emmet
+ (if emmet-preview-mode
+ (add-hook 'post-self-insert-hook 'emmet-preview-online :append :local)
+ (remove-hook 'post-self-insert-hook 'emmet-preview-online :local)))
+
(defvar emmet-preview-pending-abort nil)
(make-variable-buffer-local 'emmet-preview-pending-abort)