【问题标题】:org mode with clojure - can't get export to work带有 clojure 的 org 模式 - 无法导出工作
【发布时间】:2015-03-25 20:44:49
【问题描述】:

编辑我也在emacs.stackexchange上问过这个问题

我是一个相对的 emacs 新手,并且按照 here 的描述设置了我的 emacs (24.4.1) 以使用 clojure。

它的要点是我现在正在使用来自 git 的最新 org-mode 并将其加载到我的 init.el 中(我正在使用 prelude btw),如下所示:

   (add-to-list 'load-path "~/repos/org-mode/lisp")
   (require 'org)
   (require 'ob-clojure)

我正在尝试使用 org 编写一个可以导出到 markdown 的文字 clojure 程序。 Clojure 和 babel 现在运行良好,评估工作等,但是当我尝试导出我的 org 文件时出现错误。

    load-with-code-conversion: Symbol's value as variable is void: p

我设置toggle-debug-on-error时的堆栈跟踪是:

    Debugger entered--Lisp error: (void-variable p)
        eval-buffer(#<buffer  *load*> nil
             "/Users/krisfoster/repos/org-mode/lisp/ox.el" nil t)
             ; Reading at buffer position 229233
        load-with-code-conversion("/Users/krisfoster/repos/org-mode/lisp/ox.el"
             "/Users/krisfoster/repos/org-mode/lisp/ox.el" nil t)
        autoload-do-load((autoload "ox" "Export dispatcher for Org mode.\n
            \nIt provides an access to common export related tasks in a         
            buffer.\nIts interface comes in two flavors: standard and 
            expert.\n\nWhile both share the same set of bindings, only the 
            former\ndisplays the valid keys associations in a dedicated 
            buffer.\nScrolling (resp. line-wise motion) in this buffer is done 
            with\nSPC and DEL (resp. C-n and C-p) keys.\n\nSet variable `org-
            export-dispatch-use-expert-ui' to switch to one\nflavor or the 
            other.\n\nWhen ARG is \\[universal-argument], repeat the last 
            export action, with the same set\nof options used back then, on 
            the current buffer.\n\nWhen ARG is \\[universal-argument] \\
            [universal-argument], display the asynchronous export 
            stack.\n\n(fn &optional ARG)" t nil) org-export-dispatch)
        command-execute(org-export-dispatch)

我试图通过(require-ing 各种org 导出包来解决这个问题,这些包在 org git repo 的克隆中,即来自我的init.el。但没有骰子——事实上,这产生了更多的问题。我试过调试,但不知道出了什么问题。我怀疑我需要一些东西,但不知道是什么。

我在这里有我的init.el - init.el gist

有人知道我做错了什么吗?

提前致谢。

【问题讨论】:

  • 你可以考虑在emacs.stackexchange.com 上发布这个问题更多的emacs 眼睛会看着它:)
  • 哇!真是好主意。会的。
  • 已在emacs.stackexchange 上发帖。但如果有人看到这个并知道答案,请随时告诉我。谢谢。

标签: emacs clojure org-mode


【解决方案1】:

在您发布此帖子时,org-mode 中存在错误,因此问题可能会得到解决。但是,我注意到您的 init 文件存在一些问题。一些可能有帮助的事情

  • 使用 lisp 包管理器来安装你的包 (ELPA)。这将使您的生活更加更轻松。组织人员维护一个 ELPA 存储库,该存储库会定期更新,并且可能会比仅拉入存储库更稳定一些。他们有一个名为 org-plus-contrib 的版本,我使用它并发现它非常好。只需添加

    (add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/"))

  • 您声明您正在运行前奏曲,但我在您的 init 中看不到任何正在加载前奏曲的内容(仅调用关闭 guru 模式的函数)。 Prelude 很不错也很受欢迎,但是如果你要使用它,你需要“喝酷的帮助”,也就是按照 Prelude 的方式做事。比如prelude自带org-mode,使用ELPA来安装。您需要注意不要混合 org 版本。我发现非常好的 prelude 的另一个替代方法是 Steve Purcell 的 emacs.d。我发现使用 YMMV 更容易一些,但可能值得一试,因为它对 mac 有很好的支持。见emacs.d

  • 将您的 emacs 初始化脚本分解为单独的文件是一个非常好的主意。这使您在尝试追查问题时可以轻松注释掉很多内容,并让您只关注您尝试开始工作的关键部分。我将我的 init.el 文件维护为 org 文件,并使用 babel 生成所有 lisp 代码。您可以在github 上查看它。我最初是从 Purcell 的 emacs.d 开始的,然后自豪地借用(偷了)其中的大部分内容进入我自己的配置。这不是如何配置 emacs 的好示例,但可能对您的设置有所帮助

  • 我注意到您尝试使用 cider 作为 clojure 代码的后端“评估器”。请注意,如果您想在您的 org 文件中包含要评估然后使用结果的 clojure 块,您只需要这样做。如果您只想从您的组织代码生成 *.clj 文件,则无需执行此操作。相反,您只想“缠结”您的 org 文件,这将生成更新的 clj 源文件,然后您可以对其进行处理。这使事情变得更简单,并避免了当您尝试使用 org 文件执行尝试评估 clojure 代码并失败的事情时出现的问题。另请注意,我希望您需要做的不仅仅是将 cider 设置为后端评估器 - cide 只是 repl 的一个接口。你也需要一个repl。

【讨论】:

  • 优秀的回应 :) 感谢您抽出宝贵时间来研究这个问题,尤其是因为它已经很老了!
猜你喜欢
  • 2021-02-04
  • 1970-01-01
  • 1970-01-01
  • 2012-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多