1

我尝试(/ 72 24)使用将简单表达式C-x C-e插入到 javascript 代码中(在 javascript 模式下)来评估它,但它会引发错误

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不以这种方式工作?

4

1 回答 1

1

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

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

于 2013-08-02T08:29:30.250 回答