用PLT-R5RS而不是球拍调用Geiser



在使用geiser和emacs进行方案编程时,如何将Geiser设置为调用PLT-R5RS Legacy方案,或者可能是R6RS变体,而不是"球拍"模式的球拍?p>我想要球拍,以在reploct而不是球拍模式中以R5RS(或可能是R6RS)模式起作用,这越来越偏离"标准"方案。

将以下内容添加到您的geiser-racket-init-file

(require r5rs/init)

然后将此建议贴在您的Emacs初始化文件中的某个地方:

(defadvice run-racket (after enter-r5rs activate)
  (switch-to-geiser-module "r5rs"))

应该为您提供R5RS-GEISER的体验。

编辑:

我最近不得不处理这个问题,发现我的上述答案不足。对于初学者来说,仅将模块切换到r5rs,出于某些奇怪的原因而不会加载本应在该模块中的符号,例如set-car!set-cdr!。我发现使用geiser-repl-import-module代替switch-to-geiser-module效果更好,因为它实际上会加载预期的符号,例如set-car!set-cdr!等。此外,使用(geiser-repl-import-module "r5rs")的行为与Drracket中运行#lang r5rs所获得的行为相匹配,因此它可能足够大多数人们。但是,如果您仍然想在Geiser中运行plt-r5rs可执行文件,则可以尝试以下操作:

(progn
  (flet ((geiser-racket--parameters () nil))
    (let ((geiser-racket-binary "plt-r5rs")
          (geiser-repl-skip-version-check-p t))
      (ignore-errors
        (run-geiser 'racket))
      ;; to keep your racket history from getting clobbered
      (setq-local geiser-repl-history-filename "~/.emacs.d/.plt-r5rs_history"))))

不幸的是,该代码段的结果重复功能相当原始(例如,您无法自动完成符号)。这是因为我们要删除geiser-racket--parameters,因为这些参数与plt-r5rs和R5RS本身不相容。通过执行C-u M-x run-scheme RET plt-r5rs

相关内容

  • 没有找到相关文章

最新更新