сделать стартовой  |  добавить в избранное

   SciTE - редактор кода для программистов

Архив SciTE-форума


Автор: 8AleX8, Отправлено:18:05 25-10-2005
yurinb

Цитата:
Как scite настроить на редактирование DOS (CP866) файлов??

насколько я знаю ни как.
Автор: mozers, Отправлено:23:32 25-10-2005
yurinb
Я - новичок в SciTE, но не сказал бы однозначно "нет".
Во первых можно предварительно перекодировать файл в win1251, добавив такую команду в меню:

Код:
command.name.5.*=Convert to Win1251
command.5.*=$(SciteDefaultHome)\tools\xcode.exe -E -w $(FileNameExt) "$(FileNameExt)"
command.subsystem.5.*=1

а потом, отредактировав его, перекодировать опять в dos866

Код:
command.name.3.*=Convert to DOS866
command.3.*=$(SciteDefaultHome)\tools\xcode.exe -E -a $(FileNameExt) "$(FileNameExt)"
command.subsystem.3.*=1

Малюсенькую утилиту xcode для перекодировки можно взять тут Может кто уже давно написал lua скрипт для этих дел? Поделитесь! Кто знает что с Вами завтра случится? - а тут хоть люди благодарные останутся

Возможен очевидно и другой, более интересный способ:

Код:
code.page=866
character.set=255

Можно эти команды вставить в .properties , можно сделать отдельный ярлык для запуска редактора и вписать их в ком.строку, можно сделать пункт в меню Tools - результат в любом случае будет один - выбранный файл откроется в кодировке dos866 (Только фонт надо пользовать Courier New или Lucida Console, в крайнем случае Terminal - в остальных нужной кодовой страницы может и не быть).
Файл то мы просмотреть так сможем (причем в - лучшем виде), а вот редактировать, увы - нет
Мне кажется что умному человеку не составит большого труда написать LUA скрипт, заменяющий символы, вводимые с клавиатуры, на соответствующие в кодировке dos866. Вот тогда бы получилась конфетка
Я, увы, только еще начинаю...
Автор: eriik, Отправлено:10:02 26-10-2005
mozers

Цитата:
Файл то мы просмотреть так сможем (причем в - лучшем виде), а вот редактировать, увы - нет

Отчего ж?

Код:

if PLAT_WIN
    check.if.already.open=1
    #Russian (DOS,CP866) Encoding Command
    command.name.1.*=Russian (Dos)
    command.1.*=$(SciteDefaultHome)\SciTE.exe -code.page=866 -character.set=255 -chars.accented=_ _Ў'ў__"¤:_рс&#9532;&#9474;&#9578;_Ё%c_Є<<_&#9488;_-_R_Ї_а'б'в& quot;г"де-ж-з_иTй_к>л_м_н_о_п
    command.is.filter.1.*=1
    command.subsystem.1.*=1
    #Russian (Win1251) Encoding Command
    command.name.2.*=Russian (Win1251)
    command.2.*=$(SciteDefaultHome)\SciTE.exe -code.page=1251 -character.set=204 -chars.accented=АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя
    command.is.filter.2.*=1
    command.subsystem.2.*=1


-переключалка между DOS/WIN, по Ctrl+1/Ctrl+2. И смотри в какой хочешь, и редактируй в какой хочешь...

Автор: mozers, Отправлено:11:11 26-10-2005
eriik
Жизнь выправляется к лучшему
А я эксперементировал-эксперементировал с этой строкой chars.accented (кстати, не описанной в документации - ничего так и не получилось (т.е. мой SciTE на нее похоже вообще не реагирует

Цитата:
отображение OEM здесь хромает

Почему? Уж что касается отображения то оно вообще у меня лучше чем в любом другом редакторе. И масштабируется и псевдографику корректно отображает. Может у тебя фонт какой неудачный стоит?
А вот что касается клавы... (т.е. редактирования) то скажу честно - твой код переврал форум (надо было его вставлять в тегах [code])
Поэтому - ввод не работает Пока...

Автор: eriik, Отправлено:13:34 26-10-2005
"отображение OEM здесь хромает" - это в смысле что форум переврал chars.accented
Я прежде посмотрел теги, но ничего путного не нашел.
Пробовал исправить - все равно некоторые выдаются юникодом
Автор: dB6, Отправлено:13:56 26-10-2005
eriik
Выложи может где txt.
Автор: eriik, Отправлено:15:03 26-10-2005
Стыдно признаться, но похоже я сглупил. Действительно, тод код что я выдал чуть выше хорош только для просмора, но не для редактирования. Странно, что я не замечал этого раньше - просто по работе приходилось больше набивать английские слова и псевдографику в DOS-OEM чем русские.

Приношу извинения тем кого случайно ввел в заблуждение!
Автор: mozers, Отправлено:15:21 26-10-2005
eriik
Тем не менее... Правильной дорогой идете, товарищи! (с)Ленин
Бум думать дальше...
Кстати, кспиременты показали что -code.page=866 погоду не делает (т.е. нафиг не нужен?)
Тома -character.set=255
Автор: dB6, Отправлено:16:08 26-10-2005
mozers

Цитата:
Откровенно говоря, ни хрена не понял я комментариях этого француза.
Подключил по простому:
Код:api.*.js=$(SciteDefaultHome)\api\JavaScript.api
Работает.
Только 20 методов всего... Это - практически нуль

Можно подключить и так.
А ты подключал в SciTEGlobal.properties или в cpp.properties ?
А расширить список методов можно, но только вручную редактируя api-файл


Автор: mozers, Отправлено:16:25 26-10-2005
dB6
Подключал в SciTEGlobal.properties
А че, неправильно?
Глупый вопрос: А при чем тут cpp.properties ?

Цитата:
вручную редактируя api-файл

Вручную... У... е... Это ж скока времени надо угорбить?... Такие вещи только толпой делать. Каждому - по букве и...
Есть у меня маленький скрипт, который выводит все свойства указанного объекта, но это - лишь чуть-чуть может упростить дело...


Автор: dB6, Отправлено:19:57 26-10-2005
mozers

Цитата:
Подключал в SciTEGlobal.properties
А че, неправильно?

Да не, правильно. Сорри, сам попутал.

Цитата:
Глупый вопрос: А при чем тут cpp.properties ?

Подсветка и т.д. для *.js настраивается там (ну если не переносил никуда сам), и используется лексер cpp.
Я просто думал, что api можно подключить через cpp.properties, а оказалось - что нет:/ Или я плохо пробовал. Попробую завтра разобраться.
Автор: mozers, Отправлено:23:21 26-10-2005
LUA скрипт - основное, (а главное - встроенное!) средство автоматизации SciTE.
Вызов скрипта можно назначить через меню Тооls.
Можно навесить шорткат на этот пункт меню.
Вопрос:
Может ли SciTE инициировать выполнение скрипта сам, допустим при:
- открытии документа
- нажатии на любую клавишу
- при клике мыши
- и т.д.
Если - ДА, то очень бы хотелось увидеть простенькие примеры.


Автор: 8AleX8, Отправлено:02:33 27-10-2005
mozers
http://scintilla.sourceforge.net/SciTELua.html

Цитата:
To begin, you can handle any many of the events exposed by the SciTE Extension Interface
http://scintilla.sourceforge.net/SciTEExtension.html
Автор: yurinb, Отправлено:02:57 27-10-2005
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.

Автор: mozers, Отправлено:11:05 27-10-2005
yurinb
Вы не поверите, но РАБОТАЕТ !!!
Браво, автор

Отвечаю себе сам

Цитата:
Может ли SciTE инициировать выполнение скрипта сам, допустим при:

- открытии документа - bool OnOpen(const char *path);
- нажатии на любую клавишу - bool OnChar(char ch);
- при клике мыши - bool OnDoubleClick();
Кароче - СИЛА

8AleX8
Из твоего конфига (в шапке):

Код:
    #Russian Encoding Command
    command.name.0.*=Russian
    command.0.*=$(SciteDefaultHome)\SciTE.exe -character.set=204 -chars.accented=АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя
    command.is.filter.0.*=1
    command.subsystem.0.*=2

Зачем нужна такая команда?
Не правильнее просто забить в конфиг:

Код:
character.set=204
chars.accented=АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя
?

Добавлено:
Предлагаю свой вариант строки статуса (может кому понравится?):

Код:
# Status Bar
statusbar.number=1
statusbar.text.1=\
Строка: $(LineNumber) Колонка: $(ColumnNumber)\
| Всего: $(BufferLength) байт, $(NbOfLines) строк | Выделено: $(SelLength) байт\
| [$(OverType)] [$(EOLMode)] $(FileAttr)


Добавлено:
Еще вопрос:
А можно как то фоновый цвет окна редактора сделать = системному Window Background ?
Автор: 8AleX8, Отправлено:17:31 27-10-2005
mozers

Цитата:
Из твоего конфига (в шапке):
Код:
#Russian Encoding Command command.name.0.*=Russian command.0.*=$(SciteDefaultHome)\SciTE.exe -character.set=204 -chars.accented=АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя command.is.filter.0.*=1 command.subsystem.0.*=2     
Зачем нужна такая команда? Не правильнее просто забить в конфиг:
Код:
character.set=204 chars.accented=АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя     
?

Так работать не будет.
Но буду рад увидиить более элегантнуй вариант.
Автор: eriik, Отправлено:17:54 27-10-2005
Ребята, а можно как-нибудь содержимое *.lua-файла засунуть в .properties и оттуда его вызывать?
Автор: Ang, Отправлено:18:32 27-10-2005
mozers

Цитата:
Цитата:вручную редактируя api-файл

Вручную... У... е... Это ж скока времени надо угорбить?...

А попробовать использовать программу "CTags" ? _http://ctags.sourceforge.net
Автор: dB6, Отправлено:22:43 27-10-2005

Цитата:
1. Если я пишу собственную функцию с параметрами (ну, допустим на VB)
то может ли SciTE потом, когда я ее буду вызывать (а она у меня на этом же листе) подсказать мне эти параметры? (Ну так, как это делают другие редакторы кода) ?

Насколько я знаю - нельзя. Может только название функции подсказать.
Если вдруг я не прав и можно сделать так, чтобы выводило подсказку - скажите мне, буду очень благодарен

Добавлено:

Цитата:
2. Если подключен api файл, то может ли SciTE подсказывать не все подряд, а в зависимости от слова?
Т.е. если я написал объект window то после точки мне вывалятся его свойства и методы, а если я написал document то появятся свойства/методы document ?

Мне кажется, что единственный вариант, это писать все свойства и методы для document и window в формате:
window.метод1(список параметров) описание
window.метод2(список параметров) описание
и т.д.
Да и сначала придется нажимать ctrl+space, а потом уже писать window и выбирать из отфильтрованных методов/свойств.


Автор: mozers, Отправлено:13:57 28-10-2005

Цитата:
Не правильнее просто забить в конфиг:
Код:
character.set=204 chars.accented=АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя

8AleX8

Цитата:
Так работать не будет

Странно. У меня - работает.

Цитата:
Но буду рад увидиить более элегантнуй вариант

Так yurinb и сделал Куда уж лучше
Вот только теперь для KOI-8 по аналогии наваять...
Ang

Цитата:
А попробовать использовать программу "CTags" ?

Качнул. Буду изучать... А сам то не пробовал ???




1 / 2 / 3 / 4 / 5 / 6 / 7 / 8 / 9 / 10 / 11 / 12 / 13 / 14 / 15 / 16 / 17 / 18 / 19 / 20 / 21 / 22 / 23 / 24 / 25 / 26 / 27 / 28 / 29 / 30 / 31 / 32 / 33 / 34 / 35 / 36 / 37 / 38 / 39 / 40 / 41 / 42 / 43 / 44 / 45 / 46 / 47 / 48 / 49 / 50 / 51 / 52 / 53 / 54 / 55 / 56 / 57 / 58 / 59 / 60 / 61 / 62 / 63 / 64 / 65 / 66 / 67 / 68 / 69 / 70 / 71 / 72 / 73 / 74 / 75 / 76 / 77 / 78 / 79 / 80 / 81 / 82 / 83 / 84 / 85 / 86 / 87 / 88 / 89 / 90 / 91 / 92 / 93 / 94 / 95 / 96 / 97 / 98 / 99 / 100 / 101 / 102 / 103 / 104 / 105 / 106 / 107 / 108 / 109 / 110 / 111 / 112 / 113 / 114 / 115 / 116 / 117 / 118 / 119 / 120 / 121 / 122 / 123 / 124 / 125 / 126 / 127 / 128 / 129 / 130 / 131 / 132 / 133 / 134 / 135 / 136 / 137 / 138 / 139 / 140 / 141 / 142 / 143 / 144 / 145 / 146 / 147 / 148 / 149 / 150 / 151 / 152 / 153 / 154 / 155 / 156 / 157 / 158 / 159 / 160 / 161 / 162 / 163 / 164 / 165 / 166 / 167 / 168 / 169 / 170 / 171 / 172 / 173 / 174 / 175 / 176 / 177 / 178 / 179 / 180 / 181 / 182 / 183 / 184 / 185 / 186 / 187 / 188 / 189 / 190 / 191 / 192 / 193 / 194 / 195 / 196 / 197 / 198 / 199 / 200 / 201 / 202 / 203 / 204 / 205 / 206 / 207 / 208 / 209 / 210 / 211 / 212 / 213 /
SciTE © 2004 - 2011