Làm cách nào để có được tên tệp của bộ đệm gốc trong bộ đệm nhân bản gián tiếp?


8

Tôi muốn xem xét các phần khác nhau của bộ đệm trong hai khung khác nhau, vì tôi có hai màn hình có hình dạng khác nhau mà tôi không thể dễ dàng kéo dài một khung hình. Một số googling dẫn tôi sử dụng clone-indirect-buffer, hoạt động độc đáo.

Tuy nhiên, buffer-file-nameđối với bộ đệm mới là nil. Làm thế nào tôi có thể xác định tên tệp của bộ đệm ban đầu một cách đáng tin cậy (cái này là bản sao của)?


2
Sự khác biệt / lợi thế để nhân bản bộ đệm và chỉ cần truy cập bộ đệm trong cả hai khung là gì?
Nathanael Farley

5
Bản sao phản ứng với các sự kiện như thu hẹp / mở rộng, gấp mã và phác thảo gấp độc lập với nhau. Nếu nó là cùng một bộ đệm trong hai cửa sổ, các loại sự kiện này sẽ được nhân đôi trong mỗi cửa sổ. Bản sao là hữu ích cho, ví dụ, có quan điểm khác nhau của các phần khác nhau của bộ đệm cùng một lúc.
Dan

Tôi thực sự không chắc chắn nếu bạn có thể đưa bộ đệm vào hai khung hình cùng một lúc. Tất nhiên bạn có thể ở hai cửa sổ trong cùng một khung, nhưng nếu tôi cố gắng thay đổi sang bộ đệm trong một khung khác C-x bthì sau đó lấy nét chuyển sang khung đã hiển thị bộ đệm.
rneatherway

1
@NathanaelFarley Tôi sử dụng bộ đệm gián tiếp khi tôi chia sẻ thiết bị đầu cuối với các trường đại học nghiêng vim của tôi, người có thể sử dụng bộ đệm gián tiếp với một cái gì đó như chế độ ác.
stsquad

Câu trả lời:


12

Tôi giữ hướng dẫn sử dụng Emacs và hướng dẫn Elisp về quay số nhanh cho những câu hỏi như thế này.

Từ hướng dẫn Elisp về bộ đệm gián tiếp :

Chức năng: bộ đệm-cơ sở-bộ đệm & bộ đệm tùy chọn

Hàm này trả về bộ đệm cơ sở của bộ đệm, mặc định là bộ đệm hiện tại. Nếu bộ đệm không gián tiếp, giá trị là 0. Mặt khác, giá trị là một bộ đệm khác, không bao giờ là bộ đệm gián tiếp.

Bạn có thể muốn (buffer-file-name (buffer-base-buffer))hoặc một cái gì đó như thế.


Đúng rồi, thế đó. Tôi vẫn thích defadvicelựa chọn của tôi , mặc dù. ;)
Dan

3

Đây là một câu trả lời gián tiếp cho câu hỏi của bạn - Tôi không chắc làm thế nào để tìm ra tên tệp của bộ đệm ban đầu là gì mà không làm như sau. (EDIT: @ Purple_arrows 'câu trả lời điền vào các chi tiết: bạn có thể sử dụng buffer-base-buffer. Vui lòng chấp nhận câu trả lời đó là chính xác nhất.)

Lời khuyên sau đây sẽ liên kết tên tệp của bộ đệm ban đầu với mỗi bản sao gián tiếp của nó:

(defadvice clone-indirect-buffer (around associate-filename activate)
  "Associate the original filename with the cloned buffer."
  (let ((filename buffer-file-name))
    ad-do-it
    (setq buffer-file-name filename)))

Bây giờ, mỗi bản sao có cùng tên tệp với bộ đệm ban đầu.

Tôi sử dụng bộ đệm nhân bản gián tiếp rất nhiều và muốn có thể, ví dụ, lưu tệp được liên kết khi tôi làm việc với bất kỳ bộ đệm nào, thay vì bản gốc. Lời khuyên này là giải pháp của tôi cho quy trình công việc mong muốn đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.