personaggio descrittivo non sotto / non raggiungibile dal cursore


15

Mi piace usare una combinazione di describe-facee customize-faceper regolare l'aspetto del mio ambiente di lavoro. A volte questo flusso di lavoro fallisce quando voglio cambiare la faccia di una posizione che non riesco a raggiungere con il cursore; mode-line, header-line, magit-blame headers ecc. Il più delle volte, riesco a rintracciare ed errori la mia strada verso una soluzione, ma a volte rimango bloccato (non sapevo che l'intestazione esistesse fino a ieri, per esempio) .

Esiste un modo conveniente per descrivere la faccia di una posizione in una cornice che non è raggiungibile dal cursore? Ad esempio con un mouse.

Risposte:


7

Non so come usare il mouse, ma ho spesso trovato che è più facile per me eseguire list-faces-displaye quindi solo cercare ciò che il viso è probabilmente chiamato o scansionare visivamente il testo che sembra lo stesso.


1
Questa è la risposta, IMHO. Il display è WYSIWYG e offre accesso diretto al buffer Personalizza per una determinata faccia e accesso diretto a una descrizione completa.
Drew

Accetto e modificato lo stato. L'altra soluzione è interessante ma non conveniente.
rimedio il

9

Esistono 4 regioni in cui il testo può essere visualizzato in Emacs, ecco cosa puoi fare per ispezionarle.

  • La riga della modalità : vedere il valore di mode-line-format.
  • La riga di intestazione : vedere il valore di header-line-format.
  • Buffer : se la faccia si trova in una zona del buffer che non è possibile raggiungere, vedere il valore di (buffer-string).
  • Minibuffer : se il punto è attualmente nel minibuffer, puoi farlo M-: (buffer-string)e questo descriverà il contenuto del minibuffer. Potrebbe essere necessario (setq enable-recursive-minibuffers to t)prima.
  • Frangia o margine : nessuno di cui io sia a conoscenza.

Questi metodi ti daranno l'intero contenuto di queste regioni, quindi potrebbero essere necessarie alcune letture per trovare effettivamente il viso che stai cercando, ma sarà sicuramente lì. Soprattutto, descriverà anche le regioni che non puoi raggiungere.
Ad esempio, diciamo che voglio sapere quale faccia viene utilizzata nel find-fileprompt.

  1. Richiamare find-file con C-x C-f.
  2. Descrivi il minibuffer con M-: (buffer-string)

Questo darà qualcosa come il seguente output, e proprio lì alla fine è la faccia che stavo cercando.

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

Interessante! Non lo sapevo (buffer-string). Ma come posso invocarlo mentre sono nel minibuffer senza cedere "Il comando ha tentato di usare il minibuffer mentre è nel minibuffer"?
rimedio il

@remvee Ah, imposta la variabile enable-recursive-minibuffers su t
Malabarba,

E la frangia?
Tikhon Jelvis,

@TikhonJelvis oh, buon punto. Che non lo so.
Malabarba,

Penso che lasci anche i margini?
Sigma,

3

Si scopre che puoi davvero usare il mouse (penso che questo potrebbe essere esattamente quello che stavi cercando):

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

Questo non sembra funzionare per me nella modeline. Funziona per te in tutti i luoghi citati nella domanda?
zck,

Lavora per me su magit-blameintestazioni, come minimo, candidati per il completamento del minibuffer, il prompt del minibuffer e i popup della società. Detto questo, non funziona neanche per me quando lo chiamo sulla modalità o sulla riga di intestazione: quelli mi danno (wrong-type-argument number-or-marker-p header-line)(o [...] mode-line, rispettivamente). Penso che potrebbero essere casi particolarmente speciali (insieme alla frangia e al margine).
Braham-Snyder,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.