【问题标题】:How to make emacs switch to *scheme* by default when eval / load from the file?eval / 从文件加载时如何使emacs默认切换到*scheme*?
【发布时间】:2014-05-14 11:59:55
【问题描述】:

问题:

  1. 我处于方案模式(简单庸医)
  2. 方案已在运行
  3. eval 表达式
  4. 它将表达式发送到方案缓冲区
  5. 但是!不会在第二个窗口中启动该缓冲区 = 没有立即反馈
  6. 我必须手动将第二个缓冲区切换到烦人的方案

一些(更新的)模式,如 fsharp-modetuareg 会自动执行此操作。试图阅读quack.el,但没有找到像“pop scheme”这样方便的单独功能。它与run-scheme 纠缠在一起,这也改变了焦点。设置也无济于事。

我想停留在我的 rkt/scm 文件中并查看 repl 缓冲区是否弹出(如果尚未弹出)。就像 sublime-text 中的这个简单的构建逻辑,但具有持久的 repl。

也许我应该试试geiser,但quack 现在还可以。只是缺少一些明显的便利。

【问题讨论】:

    标签: emacs scheme elisp racket read-eval-print-loop


    【解决方案1】:

    只需运行geiser。它现在在 MELPA 中,因此可以快速安装。

    您也可以尝试lispy(使用 geiser)进行就地方案评估。 e 将评估当前表达式并在 minibuffer 中显示结果。 E 将评估当前表达式并将结果插入当前缓冲区。 u 绑定到 undo,因此您可以根据需要使用 eEu

    【讨论】:

    • 我在某处(在 geiser 页面上?)读到 geiser 更像是对 quack 的补充。并且要求的行为在quack领域中查看。
    • 不知道嘎嘎还有没有更新。另一方面,geiser 非常活跃:事实上我只需要修复lispygeiser 的交互,因为它在更新时中断了。
    • 使用scheme-mode可以使用C-c C-z切换到scheme,然后C-x 2 C-x o C-x b分屏,切换到其他emacs 'window' ,然后切换回您的代码。如果愿意,可以使用 C-x 3 垂直分割。
    【解决方案2】:

    我最终写了这个:

    (setq scheme-program-name "guile")
    (defun run-scheme-2.0 ()
        "Loads your chosen Scheme implementation for interactive development, 
    and displays that buffer below your main editing buffer, and makes sure that 
    your cursor will be on your code."
        (interactive)
        (if (not (get-buffer "*scheme*"))
          (progn 
            (setq starting-buffer (buffer-name))
            (run-scheme scheme-program-name)
            (split-window-below)
            (other-window 1)
            (shrink-window-if-larger-than-buffer)
            (other-window 1)
            (switch-to-buffer starting-buffer))))
    
    (add-hook 'scheme-mode-hook 'run-scheme-2.0)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-02
      • 1970-01-01
      • 2011-12-08
      • 1970-01-01
      • 1970-01-01
      • 2010-10-10
      • 2016-07-26
      • 2015-01-21
      相关资源
      最近更新 更多