2012-12-28 9 views
12

私はgitを呼び出して最上位ディレクトリを取得します( Is there a way to get the git root directory in one command? に従って)。プロセス出力から改行を削除するにはどうすればよいですか?

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

しかし、返される文字列に改行があります。私はそれを取り除く方法がわかりません。

答えて

12

私はあなたが唯一の出力の最後に改行を削除したい場合は、

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

これは、出力の最後に改行を削除するだけではありません。私は別の答えを加えました。 –

6

を行う受け入れ答えはまた、(改行のペアを置き換え

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

を使用することができると思います"\n\n")は、$が文字列の末尾または改行の後に一致するため、単一の改行("\n")によって出力されますが、\\'は文字列の最後にのみ一致します。

関連する問題