评估JavaScript代码中的Elisp表达式

时间:2013-08-02 08:27:51

标签: javascript elisp expression evaluation

我尝试使用(/ 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不能以这种方式工作?

1 个答案:

答案 0 :(得分:1)

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

UPD /清除语法

我再次检查过,故障是重新定义的js-mode 正则表达式文字的语法表。

以下是修复:

(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-jseval-last-sexp的工作方式相同。 如果需要,您可以专门为js-mode重新绑定它。