Envie o comando para o terminal do emacs

4

Eu gostaria de executar um comando em uma aba iterm (ou terminal, qualquer que seja) a partir do elisp. Eu não quero usar um emulador de terminal rodando sob emacs, já que eu ainda tenho que encontrar um que lide com a saída assim como um emulador de terminal independente.

Isso é possível?

Eu basicamente preciso disso, mas para um processo que não está sendo executado no emacs:

(term-simple-send proc "echo hello")
    
por spike 22.06.2012 / 18:18

4 respostas

3

Se você está preocupado com a qualidade da saída, por que não chamar o uxterm com a opção -hold ?

(defun external-xterm-shell-command (COMMAND)
  "Run a terminal command in an external xterm window."
  (interactive "sShell Command: ")
  (shell-command (concat "uxterm -hold -e " COMMAND)))
    
por 07.07.2012 / 15:38
4

Eu encontrei uma solução que parece estar funcionando bem.

Usando tmux , posso enviar um comando para uma sessão em execução como esta:

(defun es-send-via-tmux (command)
  (message (concat "running: " command))
  (call-process "/usr/local/bin/tmux" nil nil nil "send-keys" "-t 1" command "C-m")
 )

E.x .:

(es-send-via-tmux "echo hello") 
    
por 14.07.2012 / 01:52
2

Há algum tempo, desde que usei o OS X. IIRC, é possível usar o utilitário osascript para executar o AppleScript, que pode ser usado para enviar um comando para o Terminal.app. Algo como:

tell application "Terminal"
  do script "ls"
end tell
    
por 08.07.2012 / 14:10
0

Com iTerm.app eu uso o seguinte script, que é muito específico para minha configuração, mas você provavelmente pode adaptá-lo para o seu caso. Ele permite que você envie código para qualquer janela já existente e, opcionalmente, altere o diretório para corresponder ao arquivo do qual você está enviando o texto.

link

Há também este pacote: link Essa pode ser uma solução mais geral. Não tentei eu mesmo.

    
por 25.01.2018 / 16:03

Tags