2012-12-28 9 views
12

Io chiamo git ottenere la directory principale (secondo Is there a way to get the git root directory in one command? ).Come si elimina la nuova riga da un'uscita di processo?

(let ((tmpbuffer (get-buffer-create (make-temp-name "git")))) 
    (call-process "git" nil tmpbuffer nil "rev-parse" "--show-toplevel") 
    (with-current-buffer tmpbuffer 
    (with-output-to-string 
     (princ (buffer-string)) 
     (kill-buffer)))) 

Ma c'è una riga finale finale nella stringa restituita. Non sono sicuro di come sbarazzarmene.

risposta

12

Penso che si possa fare

(replace-regexp-in-string "\n$" "" 
       (shell-command-to-string "git rev-parse --show-toplevel")) 
+1

Ciò non rimuove solo i newline alla fine dell'output. Ho aggiunto una risposta alternativa. –

6

Se si desidera rimuovere un ritorno a capo alla fine della produzione, utilizzare

(replace-regexp-in-string "\n\\'" "" 
    (shell-command-to-string "git rev-parse --show-toplevel")) 

La risposta accettata sostituisce anche coppie di a capo ("\n\n") nell'output di nuove righe ("\n"), perché $ corrisponde alla fine della stringa o dopo una nuova riga, mentre \\' corrisponde solo alla fine della stringa.

Problemi correlati