เนื่องจากคุณต้องการ "เพื่อแยกความแตกต่างระหว่างหน้าต่างโฟกัส" ให้ดีขึ้นคุณสามารถใช้วิธีอื่นแทนการเปลี่ยนสีขอบของหน้าต่างที่ใช้งานอยู่
ฉันรวมสามวิธีเพื่อแยกความแตกต่างระหว่างหน้าต่างที่ใช้งานและไม่ใช้งานได้ดีขึ้น
- ใช้สีของโหมดบรรทัดต่างกันสำหรับหน้าต่างที่แอ็คทีฟและไม่ทำงาน
- เน้นบรรทัดปัจจุบันที่มีจุดอยู่ในหน้าต่างที่ใช้งานอยู่
- ใช้สีพื้นหลังที่แตกต่างกันสำหรับหน้าต่างที่ทำงานและไม่ทำงาน
โปรดทราบว่าสีที่เลือกทั้งหมดที่กล่าวถึงข้างต้นควรทำงานได้ดีกับธีม Emacs ของคุณ
นี่คือทั้งสามวิธี:
ใช้สีโหมดบรรทัดที่แตกต่างกันสำหรับหน้าต่างที่ทำงานและไม่ทำงาน:
(custom-set-faces
'(mode-line ((t (:background "dim gray" :foreground "white"))))
'(mode-line-inactive ((t (:background nil)))))
เน้นบรรทัดปัจจุบันที่มีจุดอยู่ในหน้าต่างที่ใช้งานอยู่:
(global-hl-line-mode 1)
;; underline the current line
(set-face-attribute hl-line-face nil :underline t)
ใช้สีพื้นหลังที่แตกต่างกันสำหรับหน้าต่างที่ทำงานและไม่ทำงาน:
(defun highlight-selected-window ()
"Highlight selected window with a different background color."
(walk-windows (lambda (w)
(unless (eq w (selected-window))
(with-current-buffer (window-buffer w)
(buffer-face-set '(:background "#111"))))))
(buffer-face-set 'default))
(add-hook 'buffer-list-update-hook 'highlight-selected-window)
คุณสามารถเปลี่ยนสีในตัวอย่างโค้ดเพื่อให้ทำงานได้ดีกับธีม Emacs ของคุณ
นี่คือภาพหน้าจอสุดท้าย:
และมีฟังก์ชั่นอื่นที่คุณสามารถใช้เพื่อแฟลชหน้าต่างที่ใช้งานอยู่:
(global-set-key (kbd "<f12>") 'flash-active-buffer)
(make-face 'flash-active-buffer-face)
(set-face-attribute 'flash-active-buffer-face nil
:background "blue" :foreground nil)
(defun flash-active-buffer ()
(interactive)
(run-at-time "100 millisec" nil
(lambda (remap-cookie)
(face-remap-remove-relative remap-cookie))
(face-remap-add-relative 'default 'flash-active-buffer-face)))
คุณสามารถเปลี่ยนการเชื่อมโยงคีย์ในโค้ดขนาดเล็กเมื่อคุณต้องการแสดงหน้าต่างที่ใช้งานอยู่กดปุ่มหน้าต่างที่ใช้งานจะเป็นสีฟ้าหลังจากที่คุณเลื่อนคุณชี้สีจะหายไป
M-x customize-face mode-line-inactive
ความพยายาม