小白求助关于lisp配置 emacs-26.3

这是init.el中的配置

;;seting lisp
(add-to-list 'load-path "D:/slime_2.26/")   
(add-to-list 'load-path "D:/Steel_Bank_Common_Lisp/1.4.14/")
(setq inferior-lisp-program "sbcl")            
;(require 'slime)                      
;(slime-setup)
;(require 'slime-autoloads)                  
;(slime-setup '(slime-fancy))                

这是emacs启动报错

Debugger entered--Lisp error: (void-variable    )
  eval-buffer(#<buffer  *load*-451864> nil "d:/emacs-26.3-x86_64/.emacs.d/init.el" nil t)  ; Reading at buffer position 1274
  load-with-code-conversion("d:/emacs-26.3-x86_64/.emacs.d/init.el" "d:/emacs-26.3-x86_64/.emacs.d/init.el" nil nil)
  load("d:/emacs-26.3-x86_64/.emacs.d/init.el" nil nil t)
  load-file("~/.emacs.d/init.el")
  eval-buffer(#<buffer  *load*> nil "d:/emacs-26.3-x86_64/.emacs" nil t)  ; Reading at buffer position 1011
  load-with-code-conversion("d:/emacs-26.3-x86_64/.emacs" "d:/emacs-26.3-x86_64/.emacs" t t)
  load("~/.emacs" t t)
  #f(compiled-function () #<bytecode 0x1000baab9>)()
  command-line()
  normal-top-level()
Debugger entered--Lisp error: (void-variable    )
  eval-buffer(#<buffer  *load*-451864> nil "d:/emacs-26.3-x86_64/.emacs.d/init.el" nil t)  ; Reading at buffer position 1274
  load-with-code-conversion("d:/emacs-26.3-x86_64/.emacs.d/init.el" "d:/emacs-26.3-x86_64/.emacs.d/init.el" nil nil)
  load("d:/emacs-26.3-x86_64/.emacs.d/init.el" nil nil t)
  load-file("~/.emacs.d/init.el")
  eval-buffer(#<buffer  *load*> nil "d:/emacs-26.3-x86_64/.emacs" nil t)  ; Reading at buffer position 1011
  load-with-code-conversion("d:/emacs-26.3-x86_64/.emacs" "d:/emacs-26.3-x86_64/.emacs" t t)
  load("~/.emacs" t t)
  #f(compiled-function () #<bytecode 0x1000baab9>)()
  command-line()
  normal-top-level()

你的双引号,是英文的双引号吗?

为什么你会把Common Lisp的路径加到load-path里?

load-path是Emacs load它的配置文件的路径。

假定你的Common Lisp安装在C:\Program Files\Steel Bank Common Lisp\1.4.14\,你应该把这个路径加到你的系统PATH路径(通过Windows的系统管理器)。

我是按照这个配置的

我的系统路径中有这个路径的 如果我打开这 (add-to-list 'load-path “D:/slime_2.26/”) 也是会报错跟上面一样的

我是用的英文双引号

什么害人子弟博文.

把SBCL executable加到系统的PATH里就可以了(怎么操作上网搜索一下). 然后设置(setq inferior-lisp-program "sbcl")

2020-11-08_103513 2020-11-08_103551

老哥,好像没用

我之前配置过lisp,这里是当时记录的安装流程,可以参考一下。

关于要用到的SBCL命令,在加入环境变量后,自己先试试在CMD窗口是否可以找到。比如:

  1. PathPATH 都分不清,看来真没啥基础,反正我是觉得除非手把手不然帮不了的。所以楼主对下面内容有疑问别问我,我主要是写给其他比如 @cireu 想直接提供帮助的人参考的。

  2. 看报错,估计因为 BOM 头或者编码之类的问题导致某些字符被当成变量处理了,和 load path 一点关系都没有。看这下面大概是终端之类的显示报错和上面文件颜色不一样,我猜估计是用别的什么编辑器写的配置导致的,而且 void-variable 后面应该是有什么东西的,因为终端编码问题没显示出来,也没能拷贝到顶楼贴子里。但是我没法用你电脑,具体什么问题就这么几张图片我也找不出。我只能建议用 GUI 版本的 Emacs 看报错,然后 Windows 上唯一推荐的 emacs 配置文件编辑器是 emacs。

  3. 想在 Windows 上整 Common Lisp 直接 https://portacle.github.io/ 就行啊,真没必要整这种有的没的。

  4. 虽然 Windows 的惯例对 environment variable 是 case insensitive 的,但是一堆跨平台的应用是当成 case sensitive 处理的。

1 个赞

已解决。是复制粘贴的锅