3

Emacs отображает символы без глифов в виде восьмеричных escape-последовательностей "\OOO", например, с начала файла PDF:

%PDF-1.4
%\344\343\317\322
1 0 obj
[/PDF/ImageB/ImageC/ImageI/Text]
endobj
4 0 obj
<</Length 5 0 R/Filter/FlateDecode>>
stream
9\323\317\221\321\356j\305
endstream

Могу ли я установить некоторую (относительно простую) конфигурацию для получения таковых в шестнадцатеричных escape-последовательностях "\xFF"? Как:

%PDF-1.4
%\xE4\xE3\xCF\xD2
1 0 obj
[/PDF/ImageB/ImageC/ImageI/Text]
endobj
4 0 obj
<</Length 5 0 R/Filter/FlateDecode>>
stream
9\xD3\xCF\x91\xD1\xEEj\xC5
endstream

(используя текстовый режим, или фундаментальный режим, или ... но не hexl-режим)

1 ответ1

2

Я никогда не играл с этим раньше, но, прочитав немного руководство Elisp и экспериментируя, я думаю, что вот что вы ищете:

(let ((ii          128)
      (new-dtable  (make-display-table))
      (hex-string  nil))
  (while (< ii 256) ; Convert decimal codes 128 to 255.
    (setq hex-string  (format "%X" ii))
    (aset new-dtable ii
          (vector
           (make-glyph-code ?\ 'escape-glyph)
           (make-glyph-code ?x 'escape-glyph)
           (make-glyph-code (aref hex-string 0) 'escape-glyph)
           (make-glyph-code (aref hex-string 1) 'escape-glyph)))
    (setq ii  (1+ ii)))
  (set-window-display-table (selected-window) new-dtable))

Если затем вы используете, скажем, C-q 3 4 4 RET , который обычно вставляет восьмеричную escape-последовательность \344 , он вставит глиф, показывающий xE4 .

Соответствующая часть руководства Elisp, на которую я смотрел, - это Character Display .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .