Как заставить emacs переключаться на *scheme* по умолчанию при eval/load из файла?

Проблема:

  1. Я в режиме схемы (просто шарлатан)
  2. схема уже работает
  3. оценочное выражение
  4. он отправляет выражение в буфер схемы
  5. но! не поднимает этот буфер во 2-м окне = нет немедленной обратной связи
  6. и мне приходится вручную переключать второй буфер на схему, которая раздражает

Некоторые (более поздние) режимы, такие как fsharp-mode или tuareg, делают это автоматически. Пробовал читать quack.el, но не нашел удобной отдельной функции типа "поп схема". Он запутался в run-scheme, который также меняет фокус. Настройки тоже не помогают.

Я хочу оставаться в моем файле rkt/scm и видеть всплывающее окно буфера repl, если оно еще не появилось. Подобно этой простой логике сборки в возвышенном тексте, но с постоянным repl.

Может быть, мне стоит попробовать geiser, но quack пока нормально. Просто не хватает нескольких очевидных удобств.


person bravmi    schedule 14.05.2014    source источник


Ответы (2)


Просто бегиgeiser. Теперь он в MELPA, так что его можно быстро установить.

Вы также можете попробовать lispy (который использует geiser) для оценки схемы на месте. e оценит текущее выражение и отобразит результат в минибуфере. E оценит текущее выражение и вставит результат в текущий буфер. u привязан к undo, поэтому вы можете выбрать e или Eu, если хотите.

person abo-abo    schedule 14.05.2014
comment
Я где-то читал (на странице гейзера?), что geiser больше похоже на дополнение quack. И требуемое поведение выглядело в области quack. - person bravmi; 14.05.2014
comment
Не уверен, что есть еще обновления для quack. geiser, с другой стороны, очень живой: на самом деле мне просто нужно было исправить взаимодействие lispy с geiser, так как оно сломалось при обновлении. - person abo-abo; 14.05.2014
comment
Используя режим схемы, вы можете использовать C-c C-z, чтобы переключиться на scheme, а затем C-x 2 C-x o C-x b, чтобы разделить экран, переключиться на другое «окно» emacs, а затем вернуться к вашему коду. . Используйте C-x 3, чтобы разделить по вертикали, если хотите. - person Nick; 26.05.2020

Я закончил тем, что написал это:

(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)
person Nick    schedule 27.05.2020