2011-08-30 34 views
5

Tôi đã cố gắng một số mã từ Elisp Cookbook, và tôi ban đầu tought rằng mã này:elisp tạo đệm giấu tên từ nội dung của file

(defun process-file (file) 
    "Read the contents of a file into a temp buffer and then do 
something there." 
    (when (file-readable-p file) 
    (with-temp-buffer 
     (insert-file-contents file) 
     (goto-char (point-min)) 
     (while (not (eobp)) 
     ;; do something here with buffer content 
     (forward-line))))) 

sẽ tạo ra một mới (giấu tên/chưa được lưu) đệm trên cửa sổ emacs của tôi, có nội dung của tệp đó (và có thể mở nó ở nền trước). Tuy nhiên, điều này không xảy ra. Bạn có thể hướng dẫn tôi về điều này không?

EDIT: Tôi đã thử nghiệm một chút, và có như thế này:

(defun myTest (file) 
    (interactive "f") 
    ; check if file is readable 
    (when (file-readable-p file) 
     ; create a new "untitled" buffer 
     (let ((myBuf (get-buffer-create "untitled"))) 
      ; make it the current displayed buffer 
      (switch-to-buffer myBuf) 
      (insert "Hello"))))   

Đây có phải là cách để làm điều đó?

Vì đây là bộ đệm có tên "không có tiêu đề", tôi chỉ có thể có một trong các bộ đệm này trong một phiên. Có cái gì tôi có thể sử dụng để có nhiều hơn một, mà không cần đến số ngẫu nhiên?

Trả lời

3

Cách dễ nhất để tạo tên đệm duy nhất là sử dụng generate-new-buffer-name. Các tài liệu là:

(generate-new-buffer-name NAME &optional IGNORE) 

Return một chuỗi đó là tên không đệm hiện tại dựa trên TÊN. Nếu không có bộ đệm trực tiếp nào có tên NAME, hãy trả lại NAME. Nếu không, hãy sửa đổi tên bằng cách gắn thêm `', tăng NUMBER (bắt đầu tại 2) cho đến khi tìm thấy một tên chưa sử dụng và sau đó trả lại tên đó. Tùy chọn đối số thứ hai IGNORE chỉ định tên có thể sử dụng (nếu nó là trong chuỗi được thử) ngay cả khi bộ đệm có tên đó tồn tại.

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