emacsがバイナリファイルをhexl-modeで自動的に開くようにする


8

emacsがhexl-modeでバイナリファイルを自動的に開くようにするにはどうすればよいですか?「バイナリ」を「nullバイトを含む」として定義することでおそらく十分です(それが不十分なヒューリスティックになる場合は、https://github.com/audreyr/binaryornotを使用できると思います)。

回答:


5

ファイル拡張子が機能していることがわかっている場合、最善の解決策はauto-mode-alistを使用してhexl-modeを起動することです。

そうでない場合、あなたはあなたが文字通り言ったことを受け入れます:

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

これを行うには、ファイルにnullバイトが含まれている場合にhexl-modeをオンにする関数をに追加しますfind-file-hooks

ここに実装があります:

(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
すごい、これはうまくいくようです。
asmeurer 2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.