Я пытаюсь улучшить мою жизнь emacs в последнее время, и одна вещь, которую я сделал, - использовать projectile
и perspective
, чтобы упорядочить мои буферы разумно.Отправка команд bash в открытый буфер терминала в emacs
В качестве части этого я написал функцию elisp, чтобы открыть (или вернуться к) названный ansi-term buffer, который зависит от проекта. Это позволяет мне быстро попасть в терминал bash для проекта, который я сейчас просматриваю.
У меня возникли проблемы с поиском после того, как сантехника межсетевых экранов заключается в том, можно ли отправлять команды bash в открытый ansi-term buffer изнутри emacs. В частности, я пытаюсь убедиться, что буферы ansi-term buffer соответствуют правильному корневому каталогу проекта при его первом открытии. Это требует захвата контекста из пакета projectile
, поэтому я не могу на него надеть .bashrc
.
меня идеально было бы иметь возможность написать функцию Elisp, что:
1) Выбор ANSI-термина буфер по имени (так как я могу иметь один открытый с уникальным именем для каждого проекта)
2) посылает и выполняет команду в этом буфере
Есть ли способ сделать это?
EDIT
Окончательное решение для тех, кто заинтересован:
(defun visit-project-term-buffer()
"Create or visit a terminal buffer."
(interactive)
(if (not (get-buffer (persp-ansi-buffer-name)))
(progn
(split-window-sensibly (selected-window))
(other-window 1)
(ansi-term (getenv "SHELL"))
(rename-buffer (persp-ansi-buffer-name))
(end-of-buffer)
(insert (format "cd %s" (projectile-project-root)))
(term-send-input))
(switch-to-buffer-other-window (persp-ansi-buffer-name))))
Звучит здорово, что даст попробовать. Вы заглянули в «shell-pop» и «shell-here»? http://wikemacs.org/wiki/Shell#shell-pop они не полностью отвечают на ваш вопрос, потому что shell-pop будет использовать одно окно оболочки, если вы хотите много для разных проектов (и меня тоже!), но их код может помочь. – Ehvince