Làm cách nào để tạo emacs tự động mở tệp nhị phân ở chế độ hexl? Có lẽ đủ để định nghĩa "nhị phân" là "chứa byte rỗng" (tôi cho rằng https://github.com/audreyr/binaryornot có thể được sử dụng nếu kết thúc là một heuristic không đủ).
Làm cách nào để tạo emacs tự động mở tệp nhị phân ở chế độ hexl? Có lẽ đủ để định nghĩa "nhị phân" là "chứa byte rỗng" (tôi cho rằng https://github.com/audreyr/binaryornot có thể được sử dụng nếu kết thúc là một heuristic không đủ).
Câu trả lời:
Nếu bạn biết các phần mở rộng tập tin đang hoạt động, giải pháp tốt nhất là chỉ sử dụng chế độ tự động chế độ để khởi động chế độ hexl.
Nếu không, và bạn lấy những gì bạn đã nói theo nghĩa đen:
It's probably sufficient to define "binary" as "contains a null byte"
Bạn có thể làm điều này bằng cách thêm một chức năng bật chế độ hexl nếu một tệp chứa byte rỗng vào find-file-hooks
.
Đây là một thực hiện:
(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)