-
-
Save lewang/908bc9cb7677d5936936 to your computer and use it in GitHub Desktop.
use autopair to insert semi-colon automatically for js2-mode
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(defvar js2-semicolon-contexts (list js2-NAME js2-LP js2-SCRIPT js2-CALL js2-BLOCK)) | |
(defun autopair-js2-maybe-insert-semi-colon (action pair pos-before) | |
"handler for automatically inserting semi-colon at the end of function call. | |
" | |
;; (message "node before is %s" (js2-node-type (js2-node-at-point (- (point) 1)))) | |
;; (message "action is %s" action) | |
;; (message "pair is %c" pair) | |
;; (message "context is %s" (buffer-substring-no-properties (point-at-bol) (point-at-eol))) | |
;; (message "point is %s" (point)) | |
(cond ((and (eq action 'opening) | |
(eq pair ?\)) | |
(save-excursion | |
(goto-char pos-before) | |
(skip-chars-backward " \t") | |
;; (message "node is %s." (js2-node-type (js2-node-at-point (point)))) | |
(memq (js2-node-type (js2-node-at-point (point))) js2-semicolon-contexts) | |
)) | |
(save-excursion | |
(let ((forward-sexp-function nil)) | |
(goto-char pos-before) | |
(forward-sexp)) | |
(if (looking-at-p "[^[:graph:]]*$") | |
(insert ";")))))) | |
;;;###autoload | |
(defun le::js2-mode-setup () | |
(setq autopair-handle-action-fns | |
(list #'autopair-default-handle-action | |
#'autopair-js2-maybe-insert-semi-colon)) | |
(rebox-mode 1) | |
(le::prog-modes-setup)) | |
;;;###autoload(add-hook 'js2-mode-hook 'le::js2-mode-setup) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment