yurinb
Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору mozers Цитата: Мне кажется что умному человеку не составит большого труда написать LUA скрипт, заменяющий символы, вводимые с клавиатуры, на соответствующие в кодировке dos866. Вот тогда бы получилась конфетка | Ты был прав на 100% Посидел я сегодня вечером, поразбирался с scite и LUA и вроде написал нормальный переключатель между DOS и WIN кодировками, который не перезаписывает исходный текстовый файл(мне это было очень важно) и не вызывает внешние программы-перекодировщики: 1. Создаем загрузочный файл со скриптами, если его еще нет (у меня это startup.lua в той же папке, что и SciTE.exe) и в конце файла добавляем строки Код: -- win1251 to cp866 keyboard mapper -- 2005-10-27 (c) icq=2614215 function change_codepage_ru() if props["character.set"]=='255' then props["character.set"]='204' return 0 else props["character.set"]='255' return 0 end end local charset1251to866 = { [168]=240, --Ё [184]=241, --ё [185]=252, --номер [192]=128,[193]=129,[194]=130,[195]=131,[196]=132, [197]=133,[198]=134,[199]=135,[200]=136,[201]=137, [202]=138,[203]=139,[204]=140,[205]=141,[206]=142, [207]=143,[208]=144,[209]=145,[210]=146,[211]=147, [212]=148,[213]=149,[214]=150,[215]=151,[216]=152, [217]=153,[218]=154,[219]=155,[220]=156,[221]=157, [222]=158,[223]=159,[224]=160,[225]=161,[226]=162, [227]=163,[228]=164,[229]=165,[230]=166,[231]=167, [232]=168,[233]=169,[234]=170,[235]=171,[236]=172, [237]=173,[238]=174,[239]=175,[240]=224,[241]=225, [242]=226,[243]=227,[244]=228,[245]=229,[246]=230, [247]=231,[248]=232,[249]=233,[250]=234,[251]=235, [252]=236,[253]=237,[254]=238,[255]=239 } function OnChar(charAdded) if props["character.set"]=='255' then local a1=string.byte(charAdded) if charset1251to866[a1] ~= nil then local pos = editor.CurrentPos editor:SetSel(pos, pos - 1) editor:ReplaceSel( string.char( charset1251to866[a1] ) ) end return 0 end end | 2. открываем в scite меню - Open/Open user options file и в конце файла добавляем строки Код: ext.lua.startup.script=$(SciteDefaultHome)/startup.lua command.name.1.*=change codepage command.1.*=change_codepage_ru command.subsystem.1.*=3 command.mode.1.*=savebefore:no command.shortcut.1.*=Ctrl+1 | 3. перезапускаем scite Теперь если открыть файл в DOS кодировке достаточно нажать CTRL-1 и он станет нормально отображаться и редактироваться! Повторное нажатие CTRL-1 переведет его обратно в режим кодировки win1251. |