2009-10-04 33 views

Trả lời

9

Nếu theo "cửa sổ", bạn có nghĩa là định nghĩa cửa sổ của Emacs, tức là, các ô, không thực sự.

Nếu theo "cửa sổ", bạn có nghĩa là quan niệm của mọi người về cửa sổ, mà Emacs gọi khung, sau đó có. Dưới đây là ví dụ:

(defadvice handle-switch-frame (around switch-frame-set-background) 
    (set-background-color "white") 
    ad-do-it 
    (set-background-color "yellow")) 
(ad-activate 'handle-switch-frame) 

(defadvice delete-frame (after delete-frame-set-background) 
    (set-background-color "yellow")) 
(ad-activate 'delete-frame) 
+1

Và nếu anh ấy muốn nó trên mỗi cửa sổ, tôi sẽ chỉ đề xuất mô hình ngược video. Nếu bạn cần nhiều dấu hiệu trực quan hơn, hãy mở ít cửa sổ hơn. – jrockway

+0

Uh, mô hình hoạt động, nghĩa là. – jrockway

+2

Tôi có nghĩa là cửa sổ Emacs. Điểm nổi bật của dòng chế độ là không đủ cho tôi. Tôi sử dụng màn hình lớn, rất nhiều cửa sổ đang mở .. và khá thường xuyên tôi đã bắt đầu chỉnh sửa không phải là cửa sổ tôi muốn chỉnh sửa. Tôi sẽ thử nếu chế độ ngược lại video sẽ có một số cải tiến –

3

Nếu những gì bạn đang cố gắng đạt được là làm nổi bật bộ đệm/khung hiện tại, cách tôi thực hiện thông qua Highlight-Current-Line. Nó cho bạn thấy dòng con trỏ ở đâu, nhưng tác dụng phụ của nó là nó cũng cho bạn thấy bộ đệm/khung bạn đang ở. Bạn có thể cấu hình nó để làm nổi bật toàn bộ bộ đệm hoặc xem mã để xem chúng hoạt động như thế nào nó.

+0

Vâng, ý tôi là "không thực sự" là bạn không thể làm nổi bật cửa sổ, chỉ là bộ đệm, bởi vì bất kỳ sửa đổi nào đối với nội dung bộ đệm sẽ ảnh hưởng đến mọi khung nhìn của bộ đệm. Đối với tôi, colorine + con trỏ nhấp nháy làm tốt. –

+0

Thật vậy, bộ đệm là thuật ngữ tốt hơn so với cửa sổ. Tôi muốn làm nổi bật bộ đệm hiện tại :) –

6

Đây là giải pháp thay thế bằng cách sử dụng màu không hoạt động của mô hình phù hợp với nền để mô hình duy nhất có màu là cửa sổ hoạt động. Tôi có một móc cho minibuffer nhập và thoát, và cũng có thể khi chuyển đổi cửa sổ. Tôi sử dụng chữ in đậm cho một số kiểu mẫu nhất định như chỉ đọc và tên tệp, để màu khác không nổi bật khi chuyển cửa sổ. Khi tôi nhập minibuffer, các modeline cửa sổ hoạt động chuyển sang không hoạt động cho đến khi tôi thoát khỏi minibuffer, hoặc khi tôi chuyển từ một minibuffer hoạt động (để nó mở) đến cửa sổ khác. Tôi đã phải thiết lập các hộp nền modeline để phù hợp với cũng.

(set-face-attribute 'default nil :background "black" :foreground "white" 
    :font "Courier" :height 180) 

(set-face-attribute 'mode-line nil 
    :height 160 ;; affects everything 
    :foreground "black" :background "gray70") 

(set-face-attribute 'mode-line-inactive nil 
    :foreground "gray70" :background "black" :box '(:line-width 1 :color "black")) 

(defun enter-minibuffer-setup() 
    (whitespace-mode t) 
    (set-face-attribute 'mode-line nil 
    :height 160 :foreground "gray70" :background "black" :box '(:line-width 1 :color "black")) 
    (set-face-attribute 'minibuffer-prompt nil :background "black" :foreground "cyan") 
    (set (make-local-variable 'face-remapping-alist) 
    '((default :background "black" :foreground "yellow")))) 

(defun exit-minibuffer-setup() 
    (cond 
    ((or save-as-variable multi-extract-variable multi-attach-variable) 
     (set-face-attribute 'mode-line nil :height 160 :foreground "black" :background "#eab700")) 
    (t (set-face-attribute 'mode-line nil :height 160 :foreground "black" :background "gray70" :box nil))) 
    (set-face-attribute 'minibuffer-prompt nil :background "black" :foreground "cyan")) 

(add-hook 'minibuffer-setup-hook 'enter-minibuffer-setup) 

(add-hook 'minibuffer-exit-hook 'exit-minibuffer-setup) 

(defun lawlist-minibuffer-conditions() 
    (cond 
    ((minibufferp) 
     (set-face-attribute 'mode-line nil 
     :height 160 :foreground "gray70" :background "black" :box '(:line-width 1 :color "black")) 
     (set-face-attribute 'minibuffer-prompt nil :background "black" :foreground "cyan")) 
    (t 
     (set-face-attribute 'mode-line nil 
     :height 160 :foreground "black" :background "gray70") 
     (set-face-attribute 'minibuffer-prompt nil :background "black" :foreground "gray70")))) 

(defun lawlist-forward-window() 
(interactive) 
    (other-window 1) 
    (lawlist-minibuffer-conditions)) 

(defun lawlist-backward-window() 
(interactive) 
    (other-window -1) 
    (lawlist-minibuffer-conditions)) 

THAY THẾ ĐÁP (khái niệm tương tự): set-face-attribute là quá chậm cho việc thay đổi khuôn mặt trong redisplay. Phương pháp ưu tiên để điều chỉnh khuôn mặt trong ngữ cảnh đó là với hàm face-remap-add-relative; tuy nhiên, chức năng đó có một chút phức tạp để sử dụng vì các khuôn mặt chồng lên nhau và bị che khuất. Vì vậy, tôi sẽ cần phải sửa đổi câu trả lời thay thế dự thảo sau đây (trong tương lai) để kết hợp face-remap-add-relative - trong khi chờ đợi, tôi đang đặt face-remapping-alist theo cách thủ công (được thừa nhận không phải là phương pháp ưa thích theo hướng dẫn/chuỗi tài liệu).

(defvar modeline-selected-window nil) 

(let ((default-background (face-background 'default nil 'default))) 
(set-face-attribute 'mode-line-inactive nil :background default-background :box nil)) 

(defun modeline-record-selected-window() 
    (setq modeline-selected-window (selected-window))) 

(defun modeline-update-function() 
    (cond 
    ((minibufferp) 
     (let ((default-background (face-background 'default nil 'default))) 
     (with-selected-window (minibuffer-window) 
      (setq-local face-remapping-alist '(
      (default :foreground "blue") 
      (minibuffer-prompt :foreground "red")))) 
      (setq-default face-remapping-alist `((mode-line ,'mode-line-inactive))))) 
    (t 
     (with-selected-window (minibuffer-window) 
     (when (local-variable-p 'face-remapping-alist) 
      (kill-local-variable 'face-remapping-alist))) 
     (setq-default face-remapping-alist nil)))) 

(defun modeline-set-format() 
    (setq mode-line-format '(
    (:eval 
     (if (eq modeline-selected-window (selected-window)) 
     (propertize "SELECTED WINDOW" 'face 'font-lock-warning-face) 
     (propertize "NOT-SELECTED WINDOW" 'face 'font-lock-keyword-face))))) 
    ;; next two lines make the affect immediately apparent 
    (setq modeline-selected-window (selected-window))  
    (force-mode-line-update)) 

(define-minor-mode modeline-mode 
"This is a minor-mode for `modeline-mode`." 
    :init-value nil 
    :lighter " ML" 
    :keymap nil 
    :global t 
    :group nil 
    (cond 
    (modeline-mode 
     (add-hook 'post-command-hook 'modeline-record-selected-window) 
     (add-hook 'buffer-list-update-hook 'modeline-update-function) 
     (add-hook 'text-mode-hook 'modeline-set-format) 
     (when (called-interactively-p 'any) 
     (message "Globally turned ON `modeline-mode`."))) 
    (t 
     (remove-hook 'post-command-hook 'modeline-record-selected-window) 
     (remove-hook 'buffer-list-update-hook 'modeline-update-function) 
     (remove-hook 'text-mode-hook 'modeline-set-format) 
     (when (called-interactively-p 'any) 
     (message "Globally turned OFF `modeline-mode`."))))) 

(modeline-mode 1) ;; globally turn on minor-mode 

Example http://www.lawlist.com/images/modeline-example.png

+0

Ý tưởng hay và ảnh chụp màn hình đầy cảm hứng! – katspaugh

3

Crosshairs chế độ là đặt cược tốt nhất của bạn, tôi nghĩ. Nó không chỉ thu hút sự chú ý đến cửa sổ hoạt động, nhưng nó cũng cho bạn thấy ngay lập tức nơi con trỏ là một cách rõ ràng. Bạn có thể dễ dàng bật/tắt nó (tôi liên kết nó với C-+.)

Bạn cũng có thể sử dụng crosshairs-toggle-when-idle làm phương án thay thế. Nó không hiển thị dấu thập cho đến khi một sự chậm trễ đã qua. Nó cũng là một chuyển đổi.

Tất nhiên, bạn có thể sử dụng các hình chữ thập cùng với khuôn mặt mode-line trong khuôn mặt của bạn.

2

Tôi đã sử dụng hiwin-mode như đề xuất trong chủ đề này nhưng có một open issue với bộ đệm vỏ (khi không hoạt động, văn bản trở nên vô hình).

Do đó, một tùy chọn khác mà tôi đang thưởng thức cho đến thời điểm này là auto-dim-other-buffers mode.

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