Emacs 如何安装组织钻?
我是Emacs新手,完成了Emacs和基本组织模式教程。 现在我想安装org-drill。以下是我在Emacs上安装OrgDrill的失败尝试 从 装置 最简单的方法是自定义变量“org modules”(M-x自定义变量RET org modules)并确保勾选了“drill” 我打开spanish.org文件,在Emacs中键入“Meta-x自定义变量”,echo区域显示:Emacs 如何安装组织钻?,emacs,org-mode,org-drill,Emacs,Org Mode,Org Drill,我是Emacs新手,完成了Emacs和基本组织模式教程。 现在我想安装org-drill。以下是我在Emacs上安装OrgDrill的失败尝试 从 装置 最简单的方法是自定义变量“org modules”(M-x自定义变量RET org modules)并确保勾选了“drill” 我打开spanish.org文件,在Emacs中键入“Meta-x自定义变量”,echo区域显示: M-x customize-variables [No match] M-x org-drill-table- 所
M-x customize-variables [No match]
M-x org-drill-table-
所以我尝试“Meta-x自定义变量”单数:
M-x customize-variable <RET> org-modules
为什么没有“组织训练”?
I类型:
重新启动Emacs后,*警告*窗口显示:
Warning (initialization): An error occurred while loading `/home/wolfv/.emacs':
Symbol's function definition is void: copy-list
Debugger entered--Lisp error: (void-function copy-list)
copy-list((1 (quote org-drill-visible-cloze-face) nil))
org-drill--compute-cloze-keywords()
(defvar org-drill-cloze-keywords (org-drill--compute-cloze-keywords) nil)
require(org-drill)
eval-buffer(#<buffer *load*> nil "/home/wolfv/.emacs" nil t) ; Reading at buffer position 1727
load-with-code-conversion("/home/wolfv/.emacs" "/home/wolfv/.emacs" t t)
load("~/.emacs" t t)
#[0 "\205\262
因此,我使用“--debug init”选项启动Emacs以查看完整的错误回溯。
“回溯”窗口显示:
Warning (initialization): An error occurred while loading `/home/wolfv/.emacs':
Symbol's function definition is void: copy-list
Debugger entered--Lisp error: (void-function copy-list)
copy-list((1 (quote org-drill-visible-cloze-face) nil))
org-drill--compute-cloze-keywords()
(defvar org-drill-cloze-keywords (org-drill--compute-cloze-keywords) nil)
require(org-drill)
eval-buffer(#<buffer *load*> nil "/home/wolfv/.emacs" nil t) ; Reading at buffer position 1727
load-with-code-conversion("/home/wolfv/.emacs" "/home/wolfv/.emacs" t t)
load("~/.emacs" t t)
#[0 "\205\262
组织模式使用此init.el文件:
(require 'package)
(add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/") t)
(add-to-list 'load-path "~/emacsLoad/")
(package-initialize) ;; load all elpa packages before require 'org-drill
(require 'cl)
(require 'package)
(require 'org-drill)
从下载org-drill.el并将其复制到~/emacsLoad/org-drill.el
启动Emacs
打开文件spanish.org
类型:M-x组织演练
按照屏幕底部的提示操作。我对Emacs或组织模式(或Elisp)几乎一无所知,但我就是这样让它工作的 首先,当Emacs在回溯中说
(无效函数xxx)
时,这意味着xxx
尚未定义。通过谷歌搜索,我发现复制列表
是在一个名为cl
的模块中定义的,需要加载该模块
org drill.el
实际上在顶部有这样的依赖关系:
(eval-when-compile (require 'cl))
所以我不知道为什么这不起作用。不过谢天谢地,我们可以自己加载
OrgDrill有大量其他依赖项,因此您不想自己管理它们。添加组织模式,然后安装包含组织钻取的Org plus contrib
包
在顶部的.emacs
/.emacs.d/init.el
中,添加
(package-initialize)
这将加载您安装的所有elpa软件包。通常,Emacs在init.el
之后加载elpa包,但我们希望从org+contrib
包加载内容
在此之后,您可以加载cl
和org drill
:
(require 'cl)
(require 'org-drill)
参考资料
- 我(花了几个小时在这上面)做的是:
然后我把它添加到
~/.emacs
:
(add-to-list 'load-path "~/.emacs.d/pkgs/org-mode/contrib/lisp/")
(require 'org-drill)
在这之后,它就开始工作了
似乎*nix发行版上的默认emacs没有提供用于组织模式的contrib包,而git repo的包附带了“一切”捆绑包。org drill-in已经过时(2015年),这可能是从BitBucket安装顶级版本的最佳决定。
预需求:
首先,请键入以下内容检查Emacs加载路径:
C-h v load-path <RET>
或许还可以添加此功能:
$ sudo chmod 777 /usr/local/share/emacs-lisp/
安装:
假设附加包的容器已经准备好使用。因此:
以下是如何使用use package自动加载org drill以避免增加启动时间:
(require 'package)
(add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/") t)
(package-initialize)
(use-package org-drill
:defer t
:ensure org-plus-contrib
:commands (org-drill)
:config
;; Config options
)
:确保org plus contrib
将确保Emacs下载org plus contrib,这是绑定组织钻取
的地方
:commands(org-drill)
为org-drill
命令创建自动加载。大概说明的意思是自定义变量
,而不是自定义变量
。谢谢@Drew。这让我更进一步了,但仍然“不匹配”:M-x定制变量RET定制变量:org模块[不匹配]@Drew。我打开一个.org文件并重试,这次打开了自定义选项。显然,Org模块必须运行才能对其进行定制。作为测试,我将(tahir)
放入.emacs文件中,并使用--debug init
选项启动emacs,它在回溯中说(void function tahir)
。谢谢tahir Hassan。这让我想到了解决方案,我在下面的回答中提到了。批准的解决方案有效,但这对我也有效,而且更干净。一个潜在的问题是首先加载org plus contrib。可以使用:(使用包组织:确保组织加上contrib:pin组织…
C-h v load-path <RET>
$ ls -la /usr/local/share/emacs-lisp/
$ sudo chmod 777 /usr/local/share/emacs-lisp/
(require 'package)
(add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/") t)
(package-initialize)
(use-package org-drill
:defer t
:ensure org-plus-contrib
:commands (org-drill)
:config
;; Config options
)