【问题标题】:Evaluating Elisp expression inside JavaScript code在 JavaScript 代码中评估 Elisp 表达式
【发布时间】:2013-08-02 08:27:51
【问题描述】:

我尝试使用C-x C-e 评估简单表达式(/ 72 24),当它被插入到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 不能这样工作?

【问题讨论】:

  • 在 javascript 模式缓冲区中编写 Elisp 代码是个坏主意。
  • @Stefan 我只是想计算(/ 72 24),但我在 javascript-mode 缓冲区中但它不起作用所以我只是问为什么。
  • 在这种情况下,最好的选择是使用M-:(当然,您也可以使用其他缓冲区,如*scratch**IELM*)。

标签: javascript elisp expression evaluation


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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-30
    • 1970-01-01
    相关资源
    最近更新 更多