Sử dụng một vùng echo trống để hiển thị thông tin


10

Khu vực tiếng vang hầu hết thời gian trống, điều này khiến tôi nghĩ rằng tôi có thể sử dụng nó để hiển thị một số thông tin. Ví dụ, org-clockhiển thị tác vụ hiện tại, thời gian còn lại và tổng thời gian đã trôi qua trên modeline. Những thông tin này là không thực sự có thể đọc được ở đó (các modeline có thể khá ngắn), được lặp đi lặp lại trên mỗi modeline (vì nó áp dụng cho các phiên toàn emacs), và không hữu ích mà tôi sẵn sàng hy sinh một số không gian modeline quý báu cho nó . Mặt khác, nó có thể xuất hiện trong khu vực tiếng vang khi không có gì khác để hiển thị ở đây.

Có một cách kinh điển để đạt được điều này? Tôi đã nghĩ đến việc hack một chức năng chèn vào minibuffer-inactive-mode-hook(nhưng nó không hoạt động một cách đáng tin cậy, ví dụ như tin nhắn sẽ biến mất ngay sau khi khu vực tiếng vang được sử dụng lại) hoặc spam các tin nhắn không đăng nhập (nhưng điều này sẽ gây rối với các cách sử dụng khác của khu vực tiếng vang và xe buýt nhỏ).

Một phiên bản người nghèo này sẽ sử dụng bộ tính giờ nhàn rỗi, nhưng khu vực tiếng vang có thể trống mà không có emacs ở chế độ chờ (ví dụ như khi nhập một số văn bản).


1
Vùng echo được hiển thị là nội dung của `* Echo Area 0 *` hoặc `* Echo Area 1 *` và đây là những bộ đệm "bình thường". Nên vá Emacs để có thể cung cấp một hook hook bất cứ khi nào các bộ đệm này được "tuôn ra" (hoặc được hiển thị và trống), để chức năng này có thể được thực hiện một cách hiệu quả và đáng tin cậy.
Stefan

Đó không phải là chính xác những gì bạn có trong đầu nhưng Bastien Guerry đã làm một số điều thú vị để tiết kiệm màn hình đặc biệt là hiển thị dòng chế độ trong tiêu đề khung: bzg.fr/emacs-strip-tease.html
Dieter.Wilmus

Câu trả lời:


4

Một nhận xét về câu hỏi này đề cập rằng một gói có tên symon sử dụng tính năng như vậy.

Điều này đạt được bằng cách spam các tin nhắn không được ghi lại khi bộ thu nhỏ không hoạt động và bằng cách dừng phát lại mỗi khi lệnh được ban hành. Bản tóm tắt cho điều đó khá ngắn và sau vài phút sử dụng, tôi không thể nhận thấy bất kỳ vấn đề nào với điều đó: việc sử dụng tin nhắn và xe buýt nhỏ vẫn ưu tiên hơn các tin nhắn.

Các thành phần chính là:

  • một chức năng hiển thị, chạy trên bộ hẹn giờ nhàn rỗi (thông báo cuộc gọi message-log-maxđược đặt thành nil, để chuỗi hiển thị không nhận được trong *Messages*bộ đệm)
  • một chức năng hiển thị lại, chạy trên một bộ đếm thời gian
  • một chức năng dừng hiển thị, chạy vào pre-command-hook

Vấn đề duy nhất là màn hình bị dừng bất cứ khi nào một lệnh đang được chạy, bao gồm cả khi gõ.

Đối với những người quan tâm, tôi đã trích xuất mã có liên quan vào một gói soạn sẵn có trên github .


1

Câu trả lời, IMO, là không . Vùng echo dành cho tin nhắn phù du . Và rất nhiều thứ rõ ràng xóa đi bất cứ thứ gì có thể đã được lặp lại ở đó. Vì vậy, nhận ra những gì bạn yêu cầu theo bất kỳ cách hợp lý nào là vấn đề, IMO.

Tóm lại, sử dụng một thay thế. Đây là một số:

  1. Sử dụng một số bộ đệm khác (ví dụ: khung nhỏ hoặc cửa sổ mà bạn tiếp tục mở cho mục đích này). Đơn giản để làm, bạn có thể di chuyển nó xung quanh, chỉnh sửa nó, xóa nó hoặc làm bất cứ điều gì khác mà bạn thích với nó.

  2. Sử dụng một phần hoặc tất cả các dòng chế độ (rõ ràng bạn đã xem xét).

  3. Sử dụng một dòng tiêu đề.

  4. Sử dụng một tiêu đề khung.

Nếu là tôi, có lẽ tôi sẽ chọn # 1. (Nhưng tôi không thực sự muốn / cần hiển thị thông tin trạng thái toàn thời gian như vậy. Tôi rất có thể sẽ xác định một lệnh hiển thị cho tôi thông tin (thậm chí là lịch sử / nhật ký) theo yêu cầu.)


Cập nhật sau khi bình luận của bạn:

Bạn đã nói, trong câu hỏi của bạn, " tin nhắn sẽ biến mất ngay sau khi khu vực tiếng vang được sử dụng lại ". Vì vậy, nó có vẻ như sử dụng một không gian phù du như vậy vì khu vực tiếng vang sẽ không phù hợp với nhu cầu của bạn. Trả lời bình luận của bạn dường như mâu thuẫn với điều này.

Nếu bạn thực sự muốn sử dụng khu vực tiếng vang, thì hãy sử dụng minibuffer-inactive-mode-hook, như bạn đã đề cập hoặc sử dụng bộ hẹn giờ để gọi messagehoặc để chèn thông điệp thời gian vào khu vực tiếng vang theo một cách khác. Tuy nhiên, bạn đã lưu ý các vấn đề với điều đó. Những vấn đề đó (ghi đè, xóa) xuất phát từ bản chất phù du ( dự định ) của khu vực tiếng vang .

Tóm lại, bạn muốn sử dụng một khu vực dành cho tin nhắn phù du, nhưng bạn không muốn tin nhắn của mình biến mất ngay khi khu vực đó được sử dụng lại.

. (hoặc định kỳ) hiển thị đồng hồ của bạn hoặc bất cứ điều gì.)


Cám ơn bạn đã đóng góp ý kiến! Tuy nhiên, trước tiên, tôi không hiểu lắm, tại sao điều đó lại có vấn đề? Tôi muốn những thứ sẽ đi đến khu vực tiếng vang atm để ghi đè bất kỳ việc sử dụng nào khác của khu vực tiếng vang, vì vậy xóa nó đi là được. Và thông tin bổ sung chỉ nên được hiển thị khi vùng echo trống, vì vậy không có gì để xóa. Điều đó không giống như một đặc điểm kỹ thuật hợp lý? Về # 1, vấn đề là tôi không muốn lãng phí không gian màn hình. Khu vực tiếng vang luôn ở đó, ngay cả khi nó trống rỗng. Tôi đã liệt kê một số vấn đề với # 2, và # 3 và # 4 chia sẻ rất nhiều vấn đề này.
T. Verron

Về lý do tại sao tôi muốn hiển thị thông tin toàn thời gian, lấy ví org-clockdụ từ câu hỏi: Tôi muốn đồng hồ bấm giờ để nhắc nhở tôi về những gì tôi nên làm, và tôi phải làm điều đó ngay bây giờ , như thường xuyên nhất có thể
T. Verron

"tin nhắn biến mất ngay sau khi khu vực tiếng vang được sử dụng lại" Ok điều đó không rõ ràng. Ý tôi là nếu tôi sử dụng minibuffer-inactive-mode-hookvà thoát khỏi xe buýt nhỏ, thông báo sẽ hiển thị. Sau đó, nếu một số lệnh khác in một cái gì đó vào khu vực tiếng vang, tin nhắn mới này sẽ được thêm vào và tin nhắn phù du sẽ không quay trở lại (vì lần này, bộ thu nhỏ không tham gia vào lần này).
T. Verron

Về modeline, vấn đề chính là không gian có sẵn nhỏ ở đó (tôi thường có rất nhiều cửa sổ, được chia theo chiều ngang, vì vậy các mô hình rất ngắn).
T. Verron

Một lần nữa - " Tóm lại, bạn muốn sử dụng một khu vực dành cho tin nhắn phù du, nhưng bạn không muốn tin nhắn của mình biến mất ngay khi khu vực đó được sử dụng lại. " Sử dụng bộ hẹn giờ với messagehoặc post-command-hook, nếu bạn muốn. Nhưng vấn đề thiết yếu của việc biến mất / ghi đè đôi khi sẽ ngẩng cao đầu, bởi vì bạn đang cố gắng sử dụng một khu vực hiển thị tạm thời cho một cái gì đó mà bạn không muốn là tạm thời.
vẽ
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.