使用clojure的组织模式 - 无法导出工作

时间:2015-03-25 20:44:50

标签: emacs clojure org-mode

编辑我还在emacs.stackexchange

上提出了这个问题

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

它的要点是我现在使用git中的最新组织模式并将其加载到我的init.el中(我正在使用prelude btw),如下所示:

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

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

    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解析此问题 - 各种org导出包,即org git repo克隆中的导出包,来自我的init.el。但没有骰子 - 实际上产生了更多的问题。我已经尝试过调试,但无法弄清楚出了什么问题。我怀疑我需要一些东西,但不知道是什么。

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

任何人都有任何想法我做错了吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

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

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

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

  • 你声明你正在运行的前奏,但我在你的init中看不到任何正在加载前奏的内容(只调用关闭guru模式的函数)。前奏是相当不错的,非常受欢迎,但是如果你要使用它,你需要“喝冷却的帮助”,即以前奏方式做事。例如,prelude附带org-mode并使用ELPA来安装它。您需要小心,不要混合使用组织版本。我发现非常好的前奏的另一种选择是Steve Purcell的emacs.d。我发现使用YMMV更容易一些,但它可能值得一试,因为它对mac有很好的支持。请参阅emacs.d

  • 将emacs init脚本分解为单独的文件是一个非常好的主意。这样,当您尝试追踪问题时,可以轻松地注释掉大量内容,并且只需关注您尝试工作的关键位。我将init.el文件保存为组织文件,并使用babel生成所有的lisp代码。您可以在github上查看它。我最初是从Purcell的emacs.d开始的,然后以骄傲(偷)的方式借用它进入我自己的配置。它不是如何配置emacs的一个很好的示例,但可能有助于您的设置

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