LINUX.ORG.RU

Emacs LANG=ru_RU.UTF-8 не работает поиск в файлах в кодировке koi8-r


0

0

Есть у меня необходимость в редактировании файлов с кодировкой koi8-r и страшно мешает этот баг (или фича?)...

emacs прекрасно определяет автоматически кодировку файла, открывает, показывает текст, редактирует и сохраняет, но ничего не ищет...

например открыл файл(кодировка файла koi8-r): "русский ТЕКСТ текст РУССКИЙ" нажимаю C-\ C-s пишу русс - только пикает и всё...

причём если например дописать что-нибуть типа: "тест ТЕСТ новое русский ТЕКСТ текст РУССКИЙ новое" то вот среди вновь дописанного в данной сессии - всё прекрасно ищется.

так же прекрасно ищется если не пользоваться emacs'овой переключалкой, а переключать иксовой, что я сейчас и делаю, но тогда соответственно не работают клавиатурные команды и это постоянное переключение туда-сюда (нажать C-s - переключится - набрать текст поиска - переключится - нажать искать дальше - переключится - изменить текст поиска - переключится - искать дальше) вот ууужааасно задалбывает... :(

пробовал с пустым init.el - тоже самое, пробовал всяческие варианты русификации - не работает... работает только если прописать (set-language-environment "Russian") но тогда соответственно весь ввод/вывод, названия файлов - кракозябрами... (локаль то utf-8...)

как только пытаюсь оставить language-environment "Russian" и настроить ввод/вывод в локале (utf-8) - так сразу отваливается поиск в koi8-r...

Может кто-то сталкивался ? как лечить ? насколько я понимаю - видимо какая-то проблема с какими-то перекодировочными таблицами (потому что поиск с вводом через иксовую переключалку то - работает...) собственных знаний по emacs не хватает что бы разобраться, подскажите люди добрые :)

debian testing / GNU Emacs 22.1.1 / GNU Emacs 23.0.50.1 из пакета emacs-snapshot

Попробуй-ка открыть файл так: C-x RET c , затем выбрать koi8-r, потом открыть файл при помощи C-x C-f . Далее пробуй поиск с емаксовской переключалкой. Работает?

Zubok ★★★★★
()
Ответ на: комментарий от Eshkin_kot

Хм, а я только что проверил с одним файлом в cp1251 в Emacs 21.4 (локаль ru_RU.UTF-8). У меня работает нормально -- ищет, как ни в чем не бывало.

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

проверил cp1251 - работает ! а вот koi8-r - нет... для чистоты эксперимента пробовал запускал emacs -Q что бы он не читал файлы инициализации, аналогично... с виндовой всё ок, а koi8-r не ищет... читаю ссылку, спасибо, может быть ещё какие идеи есть ?

Eshkin_kot ★★
() автор топика
Ответ на: комментарий от Eshkin_kot

ещё обнаружил что по M-x find-file-literally русский в koi8-r ищется ! но только регистрозависимо и в буфере соответственно вместо русского отображаются коды символов... %)

Eshkin_kot ★★
() автор топика
Ответ на: комментарий от Eshkin_kot

У меня, к сожалению, не стоит 22 и 23. Надеюсь, сейчас кто-нибудь из счастливых обладателей отпишется.

Zubok ★★★★★
()

Что вас удерживает на 22 версии емакса?
если нет реальных причин, то советую перейти на бренч емакса unicode2
Раньше он назывался емакс 23.0.0 Сейчас он кажется называется 23.0.6
Это емакс с поддержкой xft шрифтов.
вот инструкции по установке из исходников:
http://www.emacswiki.org/cgi-bin/wiki/XftGnuEmacs
В дебиане должен быть пакет. Раньше он назывался как-то так: emacs-cvs-23

На этой ветке я уже больше года сижу. Проблем с кодировками не замечал.
багов тоже. Плюс нормальные шрифты.

anonymous
()
Ответ на: комментарий от anonymous

ничего не удерживает :) я пробовал GNU Emacs 23.0.50.1 из emacs-snapshot там эта же самая проблема...
23.0.6 это более новая версия чем 23.0.50.1 ? я не совсем понимаю нумерацию... %)

ещё удалось заметить (по C-u C-x =) следующую штуку:
содержимое буфера: Файл Файл
где первое слово - загружено из файла в кодировке koi8-r, а второе - я вручную дописал

для буквы Ф из файла (эту букву поиск в упор не видит/не ищет):
  character: Ф (3652, #o7104, #xe44, U+0424)
    charset: cyrillic-iso8859-5 (Right-Hand Part of Latin/Cyrillic Alphabet (ISO/IEC 8859-5): ISO-IR-144.)
 code point: #x44
     syntax: w 	which means: word
   category: y:Cyrillic
buffer code: #x8C #xC4
  file code: #xE6 (encoded by coding system cyrillic-koi8-unix)
    display: by this font (glyph code)
     -Misc-Fixed-Medium-R-Normal--15-140-75-75-C-90-ISO8859-5 (#xC4)

для буквы Ф написанной вручную (эту букву поиск ищет хорошо):
  character: Ф (332868, #o1212104, #x51444, U+0424)
    charset: mule-unicode-0100-24ff (Unicode characters of the range U+0100..U+24FF.)
 code point: #x28 #x44
     syntax: w 	which means: word
   category: y:Cyrillic
buffer code: #x9C #xF4 #xA8 #xC4
  file code: #xE6 (encoded by coding system cyrillic-koi8-unix)
    display: by this font (glyph code)
     -Misc-Fixed-Medium-R-Normal--15-140-75-75-C-90-ISO10646-1 (#x424)

как видно - у них разный charset и buffer code наверное в этом проблема ?
Гуру emacs'а, может быть есть способ что бы файл в koi8-r загружался с charset: mule-unicode-0100-24ff,
а не с charset: cyrillic-iso8859-5 ? тогда бы это наверное решило проблему...

ps: попробовал вариант когда работает поиск (set-language-environment "Russian")
описание буквы Ф из файла выглядит точно так же... но тем-не менее поиск работает...
ничего не понимаю... %)

Eshkin_kot ★★
() автор топика
Ответ на: комментарий от Eshkin_kot

Если у тебя не 23-unicode, то это закономерно. Дело в том, что Emacs (не уникодный) внутри использует кодировку 8859-5. Если ты печатаешь с переключалкой C-\, то у тебя все символы будут в 8859-5, а если с переключалкой иксов, то как раз mule-unicode-0100-24ff. Это и в Emacs 21 также. Но вот вопрос, в какой кодировке работает поиск. Получается, что в mule-unicode-0100-24ff. У меня так: если надпись вбита с емаксовой переключалкой, то и ищется она, если шаблон поиска вбивать с C-\. Если надпись вбита с иксовой переключалкой, то ищется она тоже через переключение иксовой кодировки.

Zubok ★★★★★
()
Ответ на: комментарий от Eshkin_kot

я его победил !!!!! ураааа !!!! :))

(setq unify-8859-on-decoding-mode 't)

и оно заработало ! эта опция как я понял как раз старается приводить если возможно к одной charset (mule-unicode) при декодировании из file code ! уф... два дня мучился... :) всем спасибо за помощь !

Eshkin_kot ★★
() автор топика
Ответ на: комментарий от Eshkin_kot

Кстати, вопрос возник по ходу. Как там в Emacs 22 со знаками препинания, которые находятся на кнопках цифр в русской раскладке? Не спутаны? Нормально набираются?

Zubok ★★★★★
()
Ответ на: комментарий от Eshkin_kot

>по умолчанию используется russian-computer

Ага, понял. Значит, добавили нормальную раскладку. В Emacs 21.4 ее нет, поэтому пришлось подправить cyrillic-jcucken через (quail-defrule...) для восьми кнопочек.

Zubok ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.