Como enviar o conteúdo de um buffer do emacs para o gcc sem gravar no disco?

5

É comum para mim executar um pedaço de código descartável. Eu não estou particularmente interessado em salvar no meu disco, então estou trabalhando frequentemente dentro do emacs em um buffer não anexado a nenhum arquivo no meu sistema.

Ao trabalhar com interpretações (estou um pouco relutante em usar este termo) linguagens como Python, Scheme ou Lua, cada modo principal respectivo (os mais comuns) oferece maneiras de executar o REPL / intérprete dentro do editor e executando o conteúdo de um buffer diretamente. (Geralmente com uma função chamada send-buffer ou algo parecido).

No entanto, ao trabalhar com C, não consigo encontrar uma funcionalidade semelhante. Eu me vejo forçado a salvar o arquivo em disco, para dar a gcc um nome de arquivo como argumento.

Existe uma maneira de enviar o conteúdo de um buffer do emacs para o gcc sem gravar o arquivo no disco?

    
por rahmu 07.02.2013 / 16:20

1 resposta

4

Use C-x h ( mark-whole-buffer ), depois 'M-| ( shell-command-on-region ), depois use a sugestão de @ Kotte acima para executar gcc -x c -o tmp_prog - && tmp_prog

Ou aqui está uma função elisp que faz isso:

(defun compile-and-run-buffer()
  "Compiles the code in the buffer using gcc, run the exe and remove it."
  (interactive)
  (shell-command-on-region
   (point-min)
   (point-max)
   "gcc -x c -o emacs_tmp - && ./emacs_tmp && rm emacs_tmp"))
    
por 25.02.2013 / 07:42

Tags