Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Emacs 如何安装组织钻?_Emacs_Org Mode_Org Drill - Fatal编程技术网

Emacs 如何安装组织钻?

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- 所

我是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-
所以我尝试“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/
      
      安装: 假设附加包的容器已经准备好使用。因此:

    • 在那里下载必要的软件包:

      $cd/usr/local/share/emacs/site lisp/

      $wget

      $wget#组织训练所需的组织学习

    • 将(要求“组织钻取”)添加到Emacs配置文件中

    • 重新启动Emacs

    • 开放西班牙语网站

    • 请欣赏


    • 以下是如何使用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
        )