Почему бы не сделать clojure-jack-in на крючке для clojure-mode? - PullRequest
1 голос
/ 06 декабря 2011

Я использую swank-clojure из https://github.com/technomancy/swank-clojure.

Я хотел бы автоматически запускать clojure-jack-in при открытии файла clojure в emacs.Все мои проекты используют lein, поэтому он всегда должен быть уместным.

Предположительно, вам следует проверить, что он еще не был вызван.Что-то вроде этого в ~ / .emacs.d / init.el, кажется, работает, но есть ли недостаток или лучший способ добиться того же эффекта?

 (defun clojure-jack-in-once ()
   "clojure-jack-in if it hasn't been run already, 
    as indicated by presence of *swank* buffer"
   (if (eq nil (get-buffer "*swank*"))
     (clojure-jack-in)))

  (add-hook 'clojure-mode-hook 'clojure-jack-in-once)

Ответы [ 2 ]

1 голос
/ 06 декабря 2011

Возможно, вы захотите расширить это, чтобы проверить жизнеспособность процесса, используя process-status и get-buffer-process, но нет фундаментальной причины, по которой вы не можете этого сделать.

Немного более приятный битelisp будет выглядеть следующим образом:

(unless (get-buffer "*swank*")
  (clojure-jack-in))

Добавление проверки:

(let ((proc (get-buffer-process "*swank*")))
  (unless (and proc (eq (process-status proc) 'run))
    (clojure-jack-in)))

Это должно проверить, все еще ли запущен процесс, и автоматически перезапустить при необходимости.

0 голосов
/ 28 января 2012

(slime-connected-p) - это то, что вы ищете.

Или (и (featurep 'slime) (slime-connected-p)) для безопасности.

...