Записки программиста, обо всем и ни о чем. Но, наверное, больше профессионального.

2013-04-10

SciTE and UTF-8

Я уже неоднократно упоминал, что мой любимый текстовый редактор — SciTE. В нем есть всё, что мне нужно, а если чего нет, то это не слишком сложно добавить.

Сегодня расскажу, как правильно установить стартовую кодировку файла — UTF-8 by default, ибо современные реалии таковы, что подавляющее большинство файлов вокруг — в кодировке UTF-8. Но сначала небольшое пояснение.

Есть у SciTE багофича — редактор предполагает, что по умолчанию все открываемые файлы содержат текст в кодировке «Code Page Property», конкретная кодовая страница задается в настройках редактора (конечно, редактор содержит механизмы автоопределения кодировок, но они не все файлы могут корректно автоопределить). При желании, можно через меню редактора кодировку поменять на UTF-8, к примеру. Почему авторы не захотели сделать наоборот — по умолчанию выбирать UTF-8 а по желанию настраиваемую Code Page, лично мне не ясно. Наверняка были уважительные причины.


В интернетах много рекомендаций, как включить в SciTE кодировку UTF-8 по умолчанию:
но все эти рекомендации скорее вредны, чем полезны. Ибо предполагают установку Code Page Property в unicode, что, конечно, дает желаемый эффект — все файлы по умолчанию считаются в кодировке UTF-8. Но при этом пропадает возможность использовать какую-либо другую кодировку, например CP-1251, столь популярную до сих пор у нас.

Вот, только теперь, после такого многословного вступления в тему, я дарю вам хороший, годный рецепт установки умолчальной кодировки в UTF-8 в SciTE.

Рецепт основан на использовании событий в редакторе, скриптах Lua, содержащих обработчики некоторых событий и возможности имитировать в скриптах вызовы пунктов меню редактора.

Для избежания повторений ознакомьтесь с предыдущей статьей
и скачайте используемые мною скрипты
Теперь:
Подключите к SciTE суперскрипт scite-extman
#/home/valik/.SciTEUser.properties
ext.lua.directory=$(SciteUserHome)/lua/scite_lua
ext.lua.startup.script=$(SciteUserHome)/lua/extman.lua
Это раз.

Добавьте в папку со скриптами обработчик события открытия файла
#/home/valik/lua/scite_lua/valik_cmd.lua
function ToggleEncoding()
 if buffer and not buffer["MadeUTF8"] then
  scite.MenuCommand(IDM_ENCODING_UCOOKIE)
  buffer["MadeUTF8"] = true
 end
 return false
end
scite_OnOpen(ToggleEncoding)
Это два. Кстати, полный список команд меню можно глянуть тут

Перезапустите редактор. Это три.

Теперь, не потеряв возможности использовать кодировку CP1251, у нас редактор открывает файлы в кодировке UTF-8 по умолчанию.

original post http://vasnake.blogspot.com/2013/04/scite-and-utf-8.html

2 комментария:

  1. Ссылка на скрипты - битая. Это не удивительно, зачем пользовать dropbox

    ОтветитьУдалить
    Ответы
    1. Спасибо за обнаружение баги. Исправил ссылку.

      К сожалению, SciTE не запускается на Маке, а на работе у меня сейчас Мак. Ближайшее к Скайту, что нашлось -- это Geany.

      Удалить

Архив блога

Ярлыки

linux (241) python (191) citation (186) web-develop (170) gov.ru (159) video (124) бытовуха (115) sysadm (100) GIS (97) Zope(Plone) (88) бурчалки (84) Book (83) programming (82) грабли (77) Fun (76) development (73) windsurfing (72) Microsoft (64) hiload (62) internet provider (57) opensource (57) security (57) опыт (55) movie (52) Wisdom (51) ML (47) driving (45) hardware (45) language (45) money (42) JS (41) curse (40) bigdata (39) DBMS (38) ArcGIS (34) history (31) PDA (30) howto (30) holyday (29) Google (27) Oracle (27) tourism (27) virtbox (27) health (26) vacation (24) AI (23) Autodesk (23) SQL (23) Java (22) humor (22) knowledge (22) translate (20) CSS (19) cheatsheet (19) hack (19) Apache (16) Manager (15) web-browser (15) Никонов (15) Klaipeda (14) functional programming (14) happiness (14) music (14) todo (14) PHP (13) course (13) scala (13) weapon (13) HTTP. Apache (12) SSH (12) frameworks (12) hero (12) im (12) settings (12) HTML (11) SciTE (11) USA (11) crypto (11) game (11) map (11) HTTPD (9) ODF (9) Photo (9) купи/продай (9) benchmark (8) documentation (8) 3D (7) CS (7) DNS (7) NoSQL (7) cloud (7) django (7) gun (7) matroska (7) telephony (7) Microsoft Office (6) VCS (6) bluetooth (6) pidgin (6) proxy (6) Donald Knuth (5) ETL (5) NVIDIA (5) Palanga (5) REST (5) bash (5) flash (5) keyboard (5) price (5) samba (5) CGI (4) LISP (4) RoR (4) cache (4) car (4) display (4) holywar (4) nginx (4) pistol (4) spark (4) xml (4) Лебедев (4) IDE (3) IE8 (3) J2EE (3) NTFS (3) RDP (3) holiday (3) mount (3) Гоблин (3) кухня (3) урюк (3) AMQP (2) ERP (2) IE7 (2) NAS (2) Naudoc (2) PDF (2) address (2) air (2) british (2) coffee (2) fitness (2) font (2) ftp (2) fuckup (2) messaging (2) notify (2) sharepoint (2) ssl/tls (2) stardict (2) tests (2) tunnel (2) udev (2) APT (1) CRUD (1) Canyonlands (1) Cyprus (1) DVDShrink (1) Jabber (1) K9Copy (1) Matlab (1) Portugal (1) VBA (1) WD My Book (1) autoit (1) bike (1) cannabis (1) chat (1) concurrent (1) dbf (1) ext4 (1) idioten (1) join (1) krusader (1) license (1) life (1) migration (1) mindmap (1) navitel (1) pneumatic weapon (1) quiz (1) regexp (1) robot (1) science (1) serialization (1) spatial (1) tie (1) vim (1) Науру (1) крысы (1) налоги (1) пианино (1)