menggambarkan-wajah karakter tidak di bawah / tidak dapat dijangkau oleh kursor

15

Saya suka menggunakan kombinasi describe-facedan customize-faceuntuk menyesuaikan tampilan lingkungan kerja saya. Kadang alur kerja ini gagal ketika saya ingin mengubah wajah lokasi yang tidak dapat saya jangkau dengan kursor; mode-line, header-line, header menyalahkan-menyalahkan dll. Sebagian besar waktu, saya dapat melacak dan kesalahan jalan saya untuk solusi tetapi kadang-kadang saya macet (saya tidak tahu header-line ada sampai kemarin misalnya) .

Apakah ada cara yang mudah untuk menggambarkan wajah lokasi dalam bingkai yang tidak dapat dijangkau oleh kursor? Misalnya dengan mouse.

Remvee
sumber

Jawaban:

7

Saya tidak tahu tentang menggunakan mouse, tetapi saya sering menemukan bahwa ini paling mudah bagi saya untuk menjalankan list-faces-displaydan kemudian saya mencari apa yang disebut wajah atau memindai secara visual untuk teks yang terlihat sama.

Jordon Biondo
sumber
1
Ini jawabannya, IMHO. Layar adalah WYSIWYG, dan memberi Anda akses langsung ke buffer Kustomisasi untuk wajah tertentu dan akses langsung ke deskripsi lengkap.
Drew
Saya setuju dan mengubah status. Solusi lainnya keren tapi tidak nyaman.
remvee
9

Ada 4 wilayah di mana teks dapat ditampilkan di Emacs, di sini adalah apa yang dapat Anda lakukan untuk memeriksa masing-masing.

  • Mode-line : Lihat nilai mode-line-format.
  • Header-line : Lihat nilai header-line-format.
  • Buffer : Jika wajah berada di wilayah buffer yang tidak dapat Anda jangkau, lihat nilainya (buffer-string).
  • Minibuffer : Jika titik saat ini di minibuffer, Anda dapat melakukannya M-: (buffer-string), dan itu akan menjelaskan isi minibuffer. Anda mungkin perlu (setq enable-recursive-minibuffers to t)terlebih dahulu.
  • Fringe or Margin : Tidak ada yang saya tahu.

Metode-metode ini akan memberi Anda seluruh isi wilayah ini, jadi mungkin perlu beberapa bacaan untuk benar-benar menemukan wajah yang Anda cari, tetapi pasti akan ada di sana. Yang paling penting, ini akan menjelaskan bahkan wilayah yang tidak dapat Anda jangkau.
Sebagai contoh, katakanlah saya ingin tahu wajah mana yang digunakan pada find-fileprompt.

  1. Meminta file pencarian dengan C-x C-f.
  2. Jelaskan minibuffer dengan M-: (buffer-string)

Itu akan memberikan sesuatu seperti output berikut, dan di sana pada akhirnya adalah wajah yang saya cari.

#("Find file: ~/" 0 11 (front-sticky t rear-nonsticky t field t read-only t point-entered minibuffer-avoid-prompt face minibuffer-prompt))
Malabarba
sumber
Menarik! Saya tidak tahu (buffer-string). Tetapi bagaimana saya memintanya ketika saya berada di minibuffer tanpa menghasilkan "Perintah mencoba menggunakan minibuffer saat di minibuffer"?
remvee
@remvee Ah, atur variabel enable-recursive-minibuffers ke t
Malabarba
Bagaimana dengan pinggiran?
Tikhon Jelvis
@TikhonJelvis oh, bagus. Itu saya tidak tahu.
Malabarba
Saya pikir itu juga meninggalkan margin?
Sigma
3

Ternyata Anda memang dapat menggunakan mouse (saya pikir ini mungkin persis seperti yang Anda cari):

  ;; 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)
braham-snyder
sumber
Ini sepertinya tidak bekerja untuk saya dalam modeline. Apakah itu bekerja untuk Anda di tempat yang disebutkan dalam pertanyaan?
zck
Bekerja untuk saya di magit-blameheader, serta, setidaknya, kandidat penyelesaian minibuffer, bis minibuffer, dan popup perusahaan. Yang mengatakan, itu tidak berfungsi untuk saya ketika saya menyebutnya pada mode- atau header-line: yang memberi saya (wrong-type-argument number-or-marker-p header-line)(atau [...] mode-line, masing-masing). Saya pikir itu mungkin kasus khusus (bersama dengan pinggiran dan margin).
braham-snyder