Fai in modo che emacs apra automaticamente i file binari in modalità hexl


8

Come posso fare in modo che emacs apra automaticamente i file binari in modalità hexl? Probabilmente è sufficiente definire "binario" come "contiene un byte nullo" (suppongo che https://github.com/audreyr/binaryornot potrebbe essere usato se finisce per essere un euristico insufficiente).

Risposte:


5

Se sai che le estensioni dei file stanno funzionando, la soluzione migliore è semplicemente usare la modalità automatica per avviare la modalità hexl.

Altrimenti, e prendi quello che hai detto letteralmente:

It's probably sufficient to define "binary" as "contains a null byte"

Puoi farlo aggiungendo una funzione che attiva la modalità hexl se un file contiene un byte null al file find-file-hooks.

Ecco un'implementazione:

(defun buffer-binary-p (&optional buffer)
  "Return whether BUFFER or the current buffer is binary.

A binary buffer is defined as containing at least on null byte.

Returns either nil, or the position of the first null byte."
  (with-current-buffer (or buffer (current-buffer))
    (save-excursion
      (goto-char (point-min))
      (search-forward (string ?\x00) nil t 1))))

(defun hexl-if-binary ()
  "If `hexl-mode' is not already active, and the current buffer
is binary, activate `hexl-mode'."
  (interactive)
  (unless (eq major-mode 'hexl-mode)
    (when (buffer-binary-p)
      (hexl-mode))))

(add-hook 'find-file-hooks 'hexl-if-binary)

1
Fantastico, questo sembra funzionare bene.
asmeurer il
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.