(/ 72 24)插入javascript代码(在javascript模式下)时,我尝试使用C-x C-e评估简单的扩展,但会引发错误

Debugger entered--Lisp error: (invalid-read-syntax "] in a list")
  read(#<buffer SomeFile.js>)
  preceding-sexp()
  eval-last-sexp-1(nil)
  eval-last-sexp(nil)
  call-interactively(eval-last-sexp nil nil)


当我将其插入空缓冲区时,它可以工作。为什么eval-last-sexp不能以这种方式工作?

最佳答案

您需要将点精确定位在右括号之后。
然后它应该工作。

UPD /弄乱语法

我再次检查,错误是js模式重新定义了
其正则表达式文字的语法表。

解决方法是:

(defun eval-last-sexp-js (eval-last-sexp-arg-internal)
  (interactive "P")
  (save-excursion
    (while (re-search-backward "(/" (line-beginning-position) t)
      (remove-text-properties
       (match-beginning 0)
       (1+ (match-end 0))
       '(syntax-table))))
  (eval-last-sexp eval-last-sexp-arg-internal))


eval-last-sexp-js将与eval-last-sexp相同。
如果需要,可以专门将其重新绑定到js-mode

关于javascript - 在JavaScript代码中评估Elisp表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18012184/

10-11 06:51