【问题标题】:Run emacs lisp script运行 emacs lisp 脚本
【发布时间】:2017-08-19 17:11:48
【问题描述】:

我找到了script,我需要运行它。

我尝试这样运行它(我使用了 eval-buffer 命令):

(require 'subr-x)
(require 's)
(load-file "~/git-graph.el")
(require 'git-graph)
(git-graph/to-graphviz-pretty
 "git"
 (git-graph/git-graph-head
  "E:/GitStack/repositories/gitRepo.git"
  "master"))

但是得到一个错误:

Loading e:/emHome/git-graph.el (source)...done
let*: Symbol’s function definition is void: first

picture

请告诉我有什么问题。以及如何运行这个脚本?

我是新手。

【问题讨论】:

  • 你运行什么版本的 emacs? first 通常是 car 的别名。
  • 您需要找出将first定义为函数或宏的库——它需要在之前使用git-graph进行处理。 Word 搜索 defun firstdefmacro first 直到找到它,然后 require 该库(如果它在您的加载路径中)或使用 load 而不使用 require。无需load 某事,然后require 后记。如果您没有定义 first 的库,请找出它在 Internet 上的位置和/或通过包管理器并安装它。
  • @choroba ,2016-09-17 的 GNU Emacs 25.1.1 (x86_64-w64-mingw32)

标签: debugging emacs


【解决方案1】:

为什么要加载库git-graph 两次?

  1. 如果您只删除load-library 行或require 行会发生什么情况——您仍然会收到错误吗?

  2. 使用您的原始代码,在load-library 行之后插入此行:

    (message "After load-library")
    

    并在require 行之后插入这一行:

    (message "After require")
    

    查看您收到的消息:检查缓冲区*Messages*。这应该告诉您哪个尝试加载库(如果有的话)导致了错误。也许在图书馆里寻找文字first,看看你是否发现了什么有趣的东西。

    如果问题看起来不是来自加载该库,那么它可能来自require 之后的表达式。

  3. 执行M-x toggle-debug-on-error,然后执行M-x eval-buffer,并在此处发布*Backtrace* 输出。这将告诉我们错误是在哪里引发的。

  4. 您也可以尝试M-x debug-on-entry git-graph/to-graphviz-pretty 并使用d(或c 跳过给定步骤的详细信息)单步调试调试器。这最终会告诉你哪个代码引发了错误。

【讨论】:

  • 1) 删除 require 并没有改变任何东西。 2) 显示所有消息。 3)stacktrace
  • 这表明:(1)你不需要加载它两次:require 就足够了。 (2) 加载库不是问题。 (3) 问题出在您在加载库后评估的表达式中。 (4) 所以按照答案的#3 或#4 中的建议去做。
猜你喜欢
  • 1970-01-01
  • 2012-06-22
  • 2011-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多