Tại sao một số lệnh chấm dứt khi rời khỏi trình thu thập dữ liệu (isearch) trong khi các lệnh khác không (find-file)?


6

Thỉnh thoảng tôi bắt đầu mở một tệp và trước khi tôi chọn tệp vì một số lý do tôi thực hiện C-x otrước khi trả lời lời nhắc. Sau đó, mỗi khi tôi thử và chạy find-filelại, nó phàn nàn về việc Command đã cố sử dụng xe buýt nhỏ trong khi ở xe buýt nhỏ . Tuy nhiên, nếu tôi sử dụng một lệnh như isearch-forward-regexp, (ngay cả khi đã có find-filedấu nhắc), lỗi sẽ không bị ném và tôi không thể quay lại sử dụng bộ thu nhỏ other-window.
Tại sao một số lời nhắc tạm thời nâng cấp xe buýt nhỏ để other-windowcoi xe buýt nhỏ là mục tiêu khả thi, còn những người khác thì không?


Chỉ cần làm rõ, tôi không hỏi làm thế nào để có được unstuck.
Ban đầu khi tôi gặp phải điều này, tôi sẽ chuyển sang bộ thu nhỏ và thực hiện Esc Esc Eschoặc C-gthoát khỏi dấu nhắc, để tôi có thể bắt đầu một lệnh mới sử dụng bộ thu nhỏ. Tuy nhiên, khi suy nghĩ về câu hỏi này, tôi nhận ra rằng abort-recursive-edit( C-]) sẽ đóng chiếc xe buýt nhỏ này trong tiến trình mà không phải thực hiện other-window+ keyboard-quit.

Tuy nhiên, tôi không chắc chắn trường hợp sử dụng ban đầu là gì. Có lẽ, nó có nghĩa là để hỗ trợ sao chép dán vào dấu nhắc của xe buýt nhỏ hoặc để hỗ trợ chạy một lệnh ở giữa macro?

Những gì tôi làm muốn biết là nếu có một cách để vô hiệu hóa đệ quy này theo cách đó là với isearch. Có isearchan toàn không vì nó sử dụng sự kiện đọc thay vì lời nhắc chặn? Có một cái móc để kích hoạt abort-recursive-editkhi thoát khỏi xe buýt nhỏ?


TL; DR

  1. Tại sao một số lệnh của bộ thu thập dữ liệu nâng cấp bộ thu nhỏ thành mục tiêu other-windowvà chặn chạy các lệnh bộ thu nhỏ mới, trong khi các lệnh khác, chẳng hạn như isearch, thì không?
  2. Có cách nào để vô hiệu hóa điều này?
  3. Trường hợp sử dụng dự định của tính năng này là gì?

2
Câu hỏi của bạn không rõ ràng, với tôi. Chỉ là bạn đang cố gắng làm gì? C-]hủy bỏ một cấp độ của xe buýt nhỏ, vâng. Isearch không sử dụng xe buýt nhỏ. Và " bị mắc kẹt " phải làm gì với bất kỳ phần còn lại của những gì bạn mô tả? Bạn không cần phải sử dụng switch-windowtất cả, trong bối cảnh như vậy. Nhưng không rõ bạn đang cố gắng làm gì. Cố gắng tách các phần khác nhau của mô tả của bạn và cố gắng đưa ra một câu hỏi duy nhất.
vẽ

2
Cố gắng cài đặt enable-recursive-minibuffersđể ttránh Lệnh cố gắng sử dụng xe buýt nhỏ trong khi trong tin nhắn xe buýt nhỏ . Nó có thể giúp làm rõ câu hỏi ban đầu, nếu bạn đăng câu hỏi recursive-editriêng.
Vamsi

Câu trả lời:


5
  1. Nhiều lệnh tương tác đọc đầu vào của bộ thu nhỏ. find-filelà một trong những lệnh như vậy. Đọc đầu vào của bộ thu nhỏ "kích hoạt" cửa sổ xe buýt nhỏ, đó là lý do tại sao bạn có thể chuyển sang sử dụng other-windowlệnh đó. Tương tác isearchlà đặc biệt bởi vì nó được thực hiện như một chế độ nhỏ. Về mặt kỹ thuật, nó không đọc chuỗi tìm kiếm của bạn từ bộ thu nhỏ, mà thay vào đó, bắt các phím bấm của bạn khi bạn nhập và lặp lại chúng với bộ thu nhỏ message. Đây là lý do tại sao bạn thấy other-windowhành vi khác nhau.
  2. Điều này có thể hoặc không thể giúp bạn, nhưng về mặt kỹ thuật, bạn có thể sửa đổi hành vi nhanh chóng find-filebằng cách sửa đổi chức năng được lưu trữ trong read-file-name-function. Tôi đã không cố gắng tư vấn chức năng dựa trên câu trả lời của @ kaushalmodi's, nhưng nếu nó hoạt động tôi sẽ cập nhật điều này.
  3. Tôi không thể nói cho bất kỳ tin tặc nào đã làm việc với mã trong Minecraftuffer.el, nhưng từ mô tả sau trong hướng dẫn, tôi đoán hành vi này được thiết kế để cho phép bạn giết chết văn bản:

Khi xe buýt nhỏ hoạt động, khu vực tiếng vang được xử lý giống như cửa sổ Emacs thông thường. Chẳng hạn, bạn có thể chuyển sang cửa sổ khác (với Cx o), chỉnh sửa văn bản ở đó, sau đó quay lại cửa sổ xe buýt nhỏ để kết thúc đối số. Bạn thậm chí có thể giết văn bản trong một cửa sổ khác, quay lại cửa sổ xe buýt nhỏ và kéo văn bản vào đối số.


2

Đoạn mã dưới đây [ Nguồn ] hủy bỏ chỉnh sửa đệ quy khi tiêu điểm di chuyển ra khỏi bộ thu nhỏ. Điều này là để tránh các trường hợp khó chịu khi C-gnhấn liên tục không chỉnh sửa bộ đệm mini vì tiêu điểm con trỏ đã di chuyển ra khỏi nó.

(defun dừng sử dụng-xe buýt nhỏ ()
  "tiêu diệt xe buýt nhỏ"
  (khi (và (> = (đệ quy độ sâu) 1) (cửa sổ kích hoạt nhỏ)
    (hủy bỏ đệ quy-chỉnh sửa)))
(add-hook 'mouse-left-buffer-hook' stop-using-Minecraftuffer)

1

Drew đã bình luận về điều này, nhưng ...

isearch1 không thực sự sử dụng xe buýt nhỏ, có lẽ là một phần của sự nhầm lẫn của bạn. Nó hiển thị mọi thứ trong khu vực tiếng vang (nằm trong cùng cửa sổ với xe buýt nhỏ, nhưng thực tế không phải là xe buýt nhỏ).

Trong trường hợp đó, khái niệm chuyển sang và từ xe buýt nhỏ trong khi chạy isearch không có ý nghĩa gì.

1 lệnh Lờ đi như isearch-edit-stringlàm sử dụng minibuffer, nhưng không phải là một phần của hầu hết các cơ sở isearch workflow.

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.