Окно Clojure inferior-lisp в Emacs отображается поверх кода при выполнении C-c C-l - PullRequest
2 голосов
/ 20 августа 2010

Я настроил Emacs для Clojure, используя инструкции на веб-сайте Clojure .Я использовал первый параметр при настройке переменной inferior-lisp-program, в основном «java clojure.main».

С помощью этой настройки Cc Cz помогает мне перейти к REPL Clojure.Однако, когда я редактирую файл и набираю Cc Cl, чтобы загрузить файл в REPL, Emacs всегда переключает буфер из окна кода в окно REPL.Это очень раздражает.Это происходит даже тогда, когда у меня есть два окна, разделенные по вертикали, с кодом слева и REPL справа.Я получаю два зеркальных окна REPL.

Я помню, что Clojure Box, то есть Emacs + Clojure для Windows, делает это правильно, поэтому я знаю, что это проблема установки.Emacs просто переключиться на окно справа?

Ответы [ 4 ]

1 голос
/ 20 августа 2010

В clojure-mode v 1.7.1, который, я думаю, является самым последним, C-c C-l связан с clojure-load-file', в конце которого жестко задан (switch-to-lisp t). Другими словами, невозможно помешать ему переключиться на lisp без переопределения switch-to-lisp для проверки переменной, чтобы увидеть, должен ли он на самом деле вызываться.

Тем не менее, в большинстве случаев clojure-load-file кажется немного жестким. Мой обычный рабочий процесс включает установку области на весь буфер и вызов lisp-eval-region с C-c C-r. Эта функция принимает параметр and-go, который указывает, должен ли он переключаться на буфер процесса подчиненного списка или нет после вызова.

Продолжая работать, я обычно переопределяю функции и оцениваю их по мере использования с lisp-eval-last-sexp, который я вызываю с помощью C-c C-e, который также принимает необязательный флаг and-go.

1 голос
/ 20 августа 2010

Я использую C-c C-k для компиляции текущего буфера. Тогда результат этой компиляции будет вам доступен в любом буфере, в котором выполняется REPL. Emacs не будет переключать буферы: вы просто компилируете буфер.

0 голосов
/ 03 сентября 2010

В inf-lisp.el вы можете видеть, что он добавляет "* inferior-lisp *" в список окон с одинаковым буфером:

(add-hook 'same-window-buffer-names "*inferior-lisp*")

Чтобы удалить его из этого списка, вы можете поместить в .emacs:

(setq same-window-buffer-names (delete "*inferior-lisp*" same-window-buffer-names))
0 голосов
/ 20 августа 2010

Я использую SLIME с версией 20100404, и этого не происходит со мной, ни с C-c C-l, ни с C-c C-k. Может быть, вы используете другую версию slime.el? Используйте M-x find-library <RET> slime <RET> и посмотрите его версию в верхних комментариях, чтобы проверить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...