2012-12-28 20 views
12

Tôi gọi git nhận được thư mục toplevel (theo Is there a way to get the git root directory in one command? ).Làm cách nào để xóa dòng mới khỏi quá trình xuất?

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

Nhưng có một dòng mới trong chuỗi được trả lại. Tôi không chắc làm thế nào để thoát khỏi nó.

Trả lời

12

Tôi nghĩ rằng bạn có thể làm

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

Điều này không chỉ xóa các dòng mới ở cuối đầu ra. Tôi đã thêm một câu trả lời thay thế. –

6

Nếu bạn chỉ muốn xóa một dòng mới vào cuối của đầu ra, sử dụng

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

Câu trả lời được chấp nhận cũng thay thế cặp dòng mới ("\n\n") ở đầu ra bằng một dòng mới ("\n"), bởi vì $ kết quả khớp ở cuối chuỗi hoặc sau một dòng mới, trong khi \\' chỉ phù hợp ở cuối chuỗi.

Các vấn đề liên quan