อักขระอธิบายใบหน้าไม่อยู่ภายใต้ / ไม่สามารถเข้าถึงได้โดยเคอร์เซอร์


15

ฉันชอบใช้การรวมกันของdescribe-faceและcustomize-faceเพื่อปรับลักษณะที่ปรากฏของสภาพแวดล้อมการทำงานของฉัน บางครั้งเวิร์กโฟลว์นี้ล้มเหลวเมื่อฉันต้องการเปลี่ยนใบหน้าของตำแหน่งที่ฉันไม่สามารถเข้าถึงได้ด้วยเคอร์เซอร์ โหมดบรรทัด, ส่วนหัว, ส่วนหัวของ Magit-blame ฯลฯ ส่วนใหญ่ฉันสามารถติดตามและแก้ไขข้อผิดพลาดได้ แต่บางครั้งฉันก็ติดขัด (ฉันไม่รู้ว่ามีส่วนหัวจนกระทั่งเมื่อวานนี้) .

มีวิธีที่สะดวกในการอธิบายใบหน้าของตำแหน่งในเฟรมที่เคอร์เซอร์ไม่สามารถเข้าถึงได้หรือไม่? โดยวิธีการใช้เมาส์เช่น

คำตอบ:


7

ฉันไม่ทราบเกี่ยวกับการใช้เมาส์ แต่ฉันพบว่ามันง่ายที่สุดสำหรับฉันที่จะเรียกใช้ list-faces-displayแล้วเพียงแค่ค้นหาสิ่งที่ใบหน้าน่าจะเรียกหรือสแกนข้อความที่มีลักษณะเหมือนกัน


1
นี่คือคำตอบ IMHO จอแสดงผลคือ WYSIWYG และให้การเข้าถึงโดยตรงกับบัฟเฟอร์การปรับแต่งสำหรับใบหน้าที่กำหนดและการเข้าถึงคำอธิบายที่สมบูรณ์โดยตรง
ดึง

ฉันเห็นด้วยและเปลี่ยนสถานะ วิธีการแก้ปัญหาอื่น ๆ ที่ยอดเยี่ยม แต่ไม่สะดวก
เปิดเผย

9

มี 4 ภูมิภาคที่อาจมีการแสดงข้อความใน Emacs นี่คือสิ่งที่คุณสามารถทำได้เพื่อตรวจสอบแต่ละภูมิภาค

  • โหมดเส้น : mode-line-formatดูค่าของ
  • ส่วนหัวของเส้น : header-line-formatดูค่าของ
  • บัฟเฟอร์ : (buffer-string)ถ้าใบหน้าอยู่ในภูมิภาคของบัฟเฟอร์คุณไม่สามารถเข้าถึงการเห็นคุณค่าของ
  • Minibuffer : ถ้าจุดอยู่ใน minibuffer คุณสามารถทำได้M-: (buffer-string)และนั่นจะอธิบายเนื้อหาของ minibuffer คุณอาจต้อง(setq enable-recursive-minibuffers to t)ก่อน
  • ขอบหรือระยะขอบ : ไม่มีที่ฉันรู้

วิธีการเหล่านี้จะให้เนื้อหาทั้งหมดของภูมิภาคเหล่านี้ดังนั้นอาจต้องอ่านเพื่อค้นหาใบหน้าที่คุณกำลังมองหา แต่จริง ๆ แล้วจะอยู่ที่นั่น สิ่งสำคัญที่สุดคือมันจะอธิบายแม้กระทั่งภูมิภาคที่คุณไม่สามารถเข้าถึงได้
ตัวอย่างเช่นสมมติว่าฉันต้องการทราบว่ามีการใช้ใบหน้าใดในfind-fileพรอมต์

  1. C-x C-fเรียกหาไฟล์ที่มี
  2. อธิบาย minibuffer ด้วย M-: (buffer-string)

นั่นจะให้อะไรบางอย่างที่เหมือนเอาท์พุทต่อไปและที่นั่นในตอนท้ายคือใบหน้าที่ฉันมองหา

#("Find file: ~/" 0 11 (front-sticky t rear-nonsticky t field t read-only t point-entered minibuffer-avoid-prompt face minibuffer-prompt))

! ที่น่าสนใจ (buffer-string)ผมไม่ทราบว่า แต่ฉันจะเรียกใช้ได้อย่างไรในขณะที่ฉันอยู่ใน minibuffer โดยไม่ยอม "Command พยายามใช้ minibuffer ขณะอยู่ใน minibuffer"
เปิดเผย

@remvee Ah ตั้งค่าตัวแปร enable-recursive-minibuffers เป็น t
Malabarba

สิ่งที่เกี่ยวกับสวัสดิการ
Tikhon Jelvis

@TikhonJelvis โอ้จุดดี ที่ฉันไม่รู้
Malabarba

ฉันคิดว่านั่นจะทำให้ระยะขอบเหรอ?
Sigma

3

ปรากฎว่าคุณสามารถใช้เมาส์ได้ (ฉันคิดว่านี่อาจเป็นสิ่งที่คุณต้องการ):

  ;; based on: /emacs//a/19585/13444
  (defun brds/describe-char-at-mouse-click (click-event)
    "`describe-char' at CLICK-EVENT's position.
CLICK-EVENT should be a mouse-click event."
    (interactive "e")
    (run-hooks 'mouse-leave-buffer-hook)
    (let ((pos (cadr (event-start click-event))))
      (describe-char pos)))

  ;; <d>escribe
  (global-set-key (kbd "C-c d <down-mouse-1>")
                  #'brds/describe-char-at-mouse-click)

ดูเหมือนจะไม่เหมาะกับฉันใน modeline มันทำงานให้คุณในสถานที่ใด ๆ ที่กล่าวถึงในคำถาม?
zck

ทำงานให้กับฉันในmagit-blameส่วนหัวเช่นเดียวกับอย่างน้อยที่สุดผู้สมัครที่สำเร็จ minibuffer, minibuffer พรอมต์และป๊อปอัป บริษัท ที่กล่าวว่ามันไม่ทำงานสำหรับฉันอย่างใดอย่างหนึ่งเมื่อฉันเรียกมันว่าในโหมดหรือส่วนหัวของบรรทัด: ที่ให้ฉัน(wrong-type-argument number-or-marker-p header-line)(หรือ[...] mode-lineตามลำดับ) ฉันคิดว่ากรณีเหล่านั้นอาจเป็นกรณีพิเศษโดยเฉพาะ (พร้อมกับขอบและขอบ)
braham-snyder
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.