首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Emacs:可以在JS2模式下自动插入分号吗?

Emacs:可以在JS2模式下自动插入分号吗?
EN

Stack Overflow用户
提问于 2012-02-11 23:47:26
回答 1查看 1.3K关注 0票数 5

我正在使用这个极好的js2模式的fork,以及autopair来使Javascript在Emacs中的编辑变得非常棒。然而,我突然想到,由于js2-mode是一个完整的解析器,每当我在函数调用上下文中时,应该可以自动插入分号。

在我深入调查之前,我想问问有没有人调查过这件事。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-29 00:00:41

下面是我解决这个问题的代码:

le-js2-mode-setup-partial.el

代码语言:javascript
复制
(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)

您也可以从this GitHub Gist获得此代码。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9241523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档