安装Spacemacs时报错,Symbol's value as variable is void中的variable具体是什么意义呢

按照之间解决Windows下安装spacemacs的方法,下载了子龙山人的配置,在c:/Users/Administrator/AppData/Roaming下新建了.emacs.d和.spacemacs.d两个文件夹,将子龙山人的配置拷贝到其中,运行emacs.exe会出现以下错误,

Warning (initialization): An error occurred while loading ‘c:/Users/Administrator/AppData/Roaming/.emacs.d/init.el’: Symbol’s value as variable is void: dotspacemacs-directory

这个问题该怎么解决?尤其不懂的是这里面所谓的variable是什么?变量?变量具体指什么? 整句的翻译是?“变量符号值是空的:dotspacemacs-directory”其中dotspacemacs-directory是指.spacemacs.d文件夹么?为什么在c:/Users/Administrator/AppData/Roaming下新建了.spacemacs.d文件夹还是出现这个问题呢?

论学好英语的重要性Symbol’s value as variable is void的主干是value is void,所以就相当于variable not defined/xx's value is undefined/NullPointerException

然后你在山人的配置里找到这个变量之后呢,

  • the easy way: 注释掉它所在的段落
  • the hard descent decent way: 把山人的21期视频看一遍
1 个赞

descent way 啥意思~ 原谅我英语渣也没翻译出来

拼错了=。=

感谢指点,但我的问题是想问,不论value或者variable,如何找到或者创建这个value,因为已经新建了.spacemacs.d文件夹,并且将子龙山人的配置拷贝进去了,但依然报错为这个值为空。另外,注释这个方法在网上普遍能收到,能解决报错,但函数功能却没了,对于spacemacs来说就是无法初始化,使emacs不能配置为spacemacs,子龙山人视频已看过,自己也曾在一台电脑上配置出了spacemacs,但弄不懂其中流程,原理

意思就是init.el里面用了dotspacemacs-directory这个变量但是没有任何人定义这个变量。

1 个赞

在 Emacs Lisp 里,变量(Varible) 是由符号(Symbol) 表示的,而函数可以由符号表示,也可以是匿名函数,lambda 。Emacs Lisp 里 Symbol 像是一个数据结构。Elisp 的 Symbol 有 一个 value cell 和 一个 function cell,它会根据 Symbol 所在 表达式的位置,对 Symbol 进行求值(但在有些 Lisp 方言里,一个 Symbol 是不可能同时是 变量 和 函数 的)。

比如

(setq test "cruel")
(defun test () (message "Oops..."))
(message "hello %s world"  test) ; => "hello cruel world"
(test) ; => "Oops..."

当 test 在 符号表达式 第一个位置时,它被作为函数;当 test 在其他位置时,它被作为变量求值。

这句话的意思是,符号的值作为变量是空的,正如上面所说,Elisp 中 Symbol 像是一个数据结构。


如果你想得到 Symbol 本身,而不想对它求值,可以使用 quote,(quote a) 等于 'a

1 个赞

退回 不用manjaroemacs.org就没事 一用 立马就出现这个bug

找到了

(with-eval-after-load ;; package the function below
(define-key dired-mode-map (kbd "RET") 'dired-find-alternate-file))

with-eval-after-load 后面加上 'dired 就可以了