imleç tarafından erişilemeyen / erişilemeyen açıklama karakteri


15

Bir arada kullanarak gibi describe-faceve customize-facebenim çalışma ortamının görünümünü ayarlamak için. Bazen imleçle erişemediğim bir konumun yüzünü değiştirmek istediğimde bu iş akışı başarısız oluyor; mod satırı, başlık satırı, magit-suçlama başlıkları vb. Çoğu zaman, bir çözüme giden yolu izleyebilir ve hata yapabilirim ama bazen takıldım (örneğin başlık satırının düne kadar var olduğunu bilmiyordum) .

Bir konumun yüzünü imleç tarafından erişilemeyen bir çerçevede tanımlamanın uygun bir yolu var mı? Örneğin bir fare ile.

Yanıtlar:


7

Fareyi kullanmayı bilmiyorum, ancak çoğu zaman koşmanın en kolay olduğunu gördüm list-faces-displayve sonra yüzün muhtemelen ne aradığını aramak ya da aynı görünen metni görsel olarak taramak.


1
Cevap bu, IMHO. Ekran WYSIWYG'dir ve belirli bir yüz için Özelleştirme arabelleğine doğrudan erişim ve tam bir açıklamaya doğrudan erişim sağlar.
Drew

Kabul ediyorum ve durumu değiştirdim. Diğer çözüm havalı ama kullanışlı değil.
remvee

9

Emacs'ta metnin görüntülenebileceği 4 bölge vardır, işte her birini incelemek için neler yapabilirsiniz.

  • Mod satırı : değerine bakın mode-line-format.
  • Başlık satırı : değerine bakın header-line-format.
  • Tampon : Yüz, tamponun ulaşamayacağınız bir bölgesindeyse, değerine bakın (buffer-string).
  • Minibuffer : Nokta şu anda minibufferdaysa , yapabilirsiniz M-: (buffer-string)ve bu minibuffer içeriğini açıklar. Önce yapmanız gerekebilir (setq enable-recursive-minibuffers to t).
  • Saçak veya Marj : Bildiğim hiçbiri.

Bu yöntemler size bu bölgelerin tüm içeriğini verecektir, bu yüzden aradığınız yüzü bulmak gerçekten biraz zaman alabilir, ancak kesinlikle orada olacaktır. En önemlisi, ulaşamadığınız bölgeleri bile tarif edecektir.
Diyelim ki bilgi find-fileisteminde hangi yüzün kullanıldığını bilmek istiyorum .

  1. İle find-dosyasını çağır C-x C-f.
  2. Minibuffer'ı şununla açıklayın: M-: (buffer-string)

Bu, aşağıdaki çıktı gibi bir şey verecektir ve tam da sonunda aradığım yüz.

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

İlginç! Bilmiyordum (buffer-string). Ama ben minibuffer'dayken "Command minibufferdayken minibuffer kullanmaya çalıştı" mesajını vermeden nasıl çağırırım?
remvee

@remvee Ah, enable-recursive-minibuffers değişkenini t olarak ayarlayın
Malabarba

Saçak ne olacak?
Tikhon Jelvis

@TikhonJelvis oh, iyi bir nokta. Bilmiyorum.
Malabarba

Bence bu da marjları mı bırakıyor?
Sigma

3

Gerçekten fareyi kullanabileceğiniz ortaya çıkıyor (Bence bu tam olarak aradığınız şey olabilir):

  ;; 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)

Bu modelde benim için işe yaramıyor gibi görünüyor. Soruda belirtilen herhangi bir yerde sizin için çalışıyor mu?
zck

magit-blameEn azından minibuffer tamamlama adayları, minibuffer istemi ve şirket pop-up'larının yanı sıra üstbilgiler üzerinde çalışıyor . Bununla birlikte, bunu mod- veya başlık satırında çağırdığımda benim için çalışmıyor: bunlar bana (wrong-type-argument number-or-marker-p header-line)(veya [...] mode-linesırasıyla) veriyor . Bence bunlar özellikle özel durumlar olabilir (saçak ve kenar boşluğu ile birlikte).
braham-snyder
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.