2012-12-28 18 views
12

Wywołuję git, uzyskuję katalog polecenia (zgodnie z Is there a way to get the git root directory in one command? ).Jak usunąć nowy wiersz z wyjścia procesowego?

(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)))) 

Ale jest zwracany ciąg znaków nowej linii. Nie jestem pewien, jak się tego pozbyć.

Odpowiedz

12

myślę, że można zrobić

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

To nie tylko usuwa znaki nowej linii na końcu wydruku. Dodałem alternatywną odpowiedź. –

6

Jeśli chcesz tylko usunąć przełamane na samym końcu wyjścia, użyj

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

Zaakceptowanych odpowiedź zastępuje również pary nowych linii ("\n\n") w wyniku pojedynczych znaków nowej linii ("\n"), ponieważ $ dopasowuje na końcu ciągu lub po znaku nowej linii, natomiast \\' dopasowuje tylko na końcu ciągu.

Powiązane problemy