Wenn Sie wissen, dass die Dateierweiterungen funktionieren, ist die beste Lösung, einfach den Auto-Modus-Alist zu verwenden, um den Hexl-Modus zu starten.
Wenn nicht, und Sie nehmen das, was Sie gesagt haben, wörtlich:
It's probably sufficient to define "binary" as "contains a null byte"
Sie können dies tun, indem Sie eine Funktion hinzufügen, die den Hexl-Modus aktiviert, wenn eine Datei ein Null-Byte enthält find-file-hooks
.
Hier ist eine Implementierung:
(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)