aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDave Mayo <dave_mayo@harvard.edu>2018-05-03 15:22:32 -0400
committerDave Mayo <dave_mayo@harvard.edu>2018-05-03 15:22:32 -0400
commit4e9797b717e009a2fc67dd4a123f8ed058016bd1 (patch)
treed4de105b116f11a89a22db4b630cdfa510e0fa1c /src
parent7c85cb3135ba6d10ee91cc1b3b310b4e22cbaff4 (diff)
downloademmet-mode-4e9797b717e009a2fc67dd4a123f8ed058016bd1.tar.lz
emmet-mode-4e9797b717e009a2fc67dd4a123f8ed058016bd1.tar.xz
emmet-mode-4e9797b717e009a2fc67dd4a123f8ed058016bd1.zip
Moved changes into src, and created config value for postwrap behavior
Diffstat (limited to 'src')
-rw-r--r--src/mode-def.el67
1 files changed, 56 insertions, 11 deletions
diff --git a/src/mode-def.el b/src/mode-def.el
index c0e3e2c..5db7631 100644
--- a/src/mode-def.el
+++ b/src/mode-def.el
@@ -158,7 +158,7 @@ For more information see `emmet-mode'."
(define-key map (kbd "<C-return>") 'emmet-expand-line)
(define-key map (kbd "<C-M-right>") 'emmet-next-edit-point)
(define-key map (kbd "<C-M-left>") 'emmet-prev-edit-point)
- (define-key map (kbd "C-c w") 'emmet-wrap-with-markup)
+ (define-key map (kbd "C-c C-c w") 'emmet-wrap-with-markup)
map)
"Keymap for emmet minor mode.")
@@ -190,7 +190,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))
@@ -373,6 +373,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)
@@ -470,6 +498,11 @@ accept it or skip it."
(point))
(forward-char)))))))
+(defcustom emmet-postwrap-goto-edit-point f
+ "Goto first edit point after wrapping markup?"
+ :type 'boolean
+ :group 'emmet)
+
;;;###autoload
(defun emmet-wrap-with-markup (wrap-with)
"Wrap region with markup."
@@ -479,12 +512,23 @@ accept it or skip it."
(to-wrap (if multi
(split-string txt "\n")
(list txt)))
- (initial-elements (replace-regexp-in-string "\\(.*\\(\\+\\|>\\)\\)?[^>*]+\\*?[[:digit:]]*$" "\\1" wrap-with t))
- (terminal-element (replace-regexp-in-string "\\(.*>\\)?\\([^>*]+\\)\\(\\*[[:digit:]]+$\\)?\\*?$" "\\2" wrap-with t))
- (multiplier-expr (replace-regexp-in-string "\\(.*>\\)?\\([^>*]+\\)\\(\\*[[:digit:]]+$\\)?\\*?$" "\\3" wrap-with t))
+ (initial-elements (replace-regexp-in-string
+ "\\(.*\\(\\+\\|>\\)\\)?[^>*]+\\*?[[:digit:]]*$"
+ "\\1" wrap-with t))
+ (terminal-element (replace-regexp-in-string
+ "\\(.*>\\)?\\([^>*]+\\)\\(\\*[[:digit:]]+$\\)?\\*?$"
+ "\\2" wrap-with t))
+ (multiplier-expr (replace-regexp-in-string
+ "\\(.*>\\)?\\([^>*]+\\)\\(\\*[[:digit:]]+$\\)?\\*?$"
+ "\\3" wrap-with t))
(expr (concat
initial-elements
- (mapconcat (lambda (el) (concat terminal-element "{!!!" (secure-hash 'sha1 el) "!!!}" multiplier-expr))
+ (mapconcat (lambda (el)
+ (concat terminal-element
+ "{!!!"
+ (secure-hash 'sha1 el)
+ "!!!}"
+ multiplier-expr))
to-wrap
"+")))
(markup
@@ -500,11 +544,12 @@ accept it or skip it."
(delete-region (region-beginning) (region-end))
(insert markup)
(indent-region (region-beginning) (region-end))
- (let ((end (region-end)))
- (goto-char (region-beginning))
- (unless (ignore-errors (progn (emmet-next-edit-point 1) t))
- (goto-char end)))
- )))
+ (if emmet-postwrap-goto-edit-point
+ (let ((end (region-end)))
+ (goto-char (region-beginning))
+ (unless (ignore-errors (progn (emmet-next-edit-point 1) t))
+ (goto-char end)))
+ ))))
;;;###autoload
(defun emmet-next-edit-point (count)