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

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

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


Автор: mozers, Отправлено:12:58 07-06-2006
SciTE 1.69 Ru-Board Edition

Цитата:
[07.06.2006] Сборка (ядро 1.69 .07Ru)
- Новое ядро .07Ru - Доработанный вариант оригинальной версии 1.69
Хотя Neil Hodgson многое, придуманное mimir-ом учел, но еще много чего нет. Поэтому вновь было поправлено:
1. Исправлена ошибка зависания SciTE при использовании command.input.
2. Исправлена ошибка с выводом текста по command.input и $(CurrentSelection) исключительно в кодировке UTF-8
(без этого многие скрипты будут просто неработоспособны)
3. Вновь научили Скайт понимать команду import в файлах *.abbrev

- Добавлен файл help\ScintillaHistory_rus.html (Автор перевода: ALeXkRU)
- Все основные файлы настроек перенесены из каталога properties в единственный файл - SciTEGlobal.properties
- В SciTEGlobal.properties организованы логические самосворачивающиеся секции (Автор идеи: Vadikan, Реализация: mozers™)
- Новый html.api и модернизированная подсветка синтаксиса PHP (Автор: Сергей Тугаринов)
- Переделан скрипт изменения размера отображаемого шрифта синхронно с печатным (Автор mozers™)
- Модернизирован скрипт трассировки выделенного текста в коды ASCII (ascii.lua) (Автор: gansA)
- Добавлен скрипт, генерирующий таблицу ASCII (ASCIITable.lua) - удобен в комплекте с предыдущим (Автор: khman)
- Мелкая правка скрипта атозакрытия скобок (по умолчанию он теперь отключен) (Авторы: gansA, mimir)
- Установка/снятие закладок (Bookmark) с помощью мыши
- Некоторые скрипты, ввиду их недоработанности, исключены из меню (но остались в каталоге)
- Куча небольших, но важных корректировок всех настроек (Коррективы: dB6, mimir)

Ссылка: SciTE_169_7Ru_070606.zip [890kB]
Автор: mozers, Отправлено:22:49 07-06-2006
mimir

Цитата:
Ты че издеваешси!!!???
при Ctrl-I(Ctrl-Space) - вылезает подсказка, а при Ctrl+Enter - нет

Точно так и есть. Туплю я

Давай все таки расставим все точки над i
У нас в меню 4 пункта:
1. Complete Symbol (Ctrl+I) или недокументированная (Ctrl+Space)
2. Complete Word (Ctrl+Enter)
3. Expand Abberation (Ctrl+B)
4. Insert Abberation (Ctrl+Shift+R)

В подключенном (я надеюсь) jscript.api добиваем 2 строчки
Код:
AutocompleteFunction_from_Api
AutocompleteOther_from_Api

Создаем новый файл test.js и пишем в нем 2 строчки
Код:
AutocompleteFunction_from_Text
AutocompleteOther_from_Text

Начинаем эксперемент. В только что созданном test.js преходим на новую строку и пишем
Код:
auto
и нажимаем (Ctrl+I) или (Ctrl+Space) - видим список автодополнения из api (2 пункта)
При использовании твоей доработанной версии 1.68 - список берется из текста и api (4 пункта)
Так я и не решил для себя как удобнее - одним списком или раздельно ???

если нажимаем (Ctrl+Enter) - видим список автодополнения из текущего текста (2 пункта)

если нажимаем (Ctrl+B) - махом "auto" заменяется на текст из abbrev

ну и по (Ctrl+Shift+R) можем выбрать и вставить любое сокращение из abbrev

Имхо вообще использовать Abbrev для дописывания слова неудобно и нерационально.
Он удобен для того чтобы запихнуть в него готовые частоупотребляемые процедуры.
Или в html можно его пользовать чтобы уже написанный текст тегами обрамлять...



Цитата:
> Рассуждаем логически:
'/' - Divide

SciTE не подчиняется твоей логике Не работает ни хрена

Вообще то ради чего весь этот гимор со скриптами?
Чтобы выводимый на печать текст тоже масштабировался вместе с отображаемым.
Может быть гораздо проще (и уж точно правильней) было бы подкорректировать исходники?
Эх, кто он - добрый и мудрый человек?...


Цитата:
Это только меня раздражает когда по Esc закрываеться приложение

Меня тоже прямо бесит А сколько народу уже ругалось...
Вот масштабирование на печать бы сделать да белый цвет по умолчанию грохнуть - выпустить багфикс в нем и Esc убрать до кучи
В общем сборка, выложенная сегодня, мне ОЧЕНЬ не нравится...
Автор: gansA, Отправлено:10:14 08-06-2006
mozers
Немного подкрутил твой скрипт, установки меток двойным кликом.
Собсно добавил подсчет символов начала строки, что исключает случаии установки меток при дваойном клике на пустой строке, когда захватываются символы \r\n для 2 строк.
Для установки метки надо кликнуть по любому слову в строке.
Мож кому пригодится.

Цитата:

-- Установка / снятие закладок на строку (Bookmark) (то же что и Ctrl+F2)
-- с помощью двойного клика мыши
-- mozers™ icq#256106175
function OnDoubleClick()
local i = editor:LineFromPosition(editor.CurrentPos)
    local j = CountEnter(editor:GetSelText()) --// count \n

if editor:MarkerGet(i) == 0 and j == 0 then
editor:MarkerAdd(i,1)
else
editor:MarkerDelete(i,1)
end
end

function CountEnter(strInput)
    local i = 0
    for w in string.gfind(strInput, '\n') do
        i = i + 1
    end

    return i
end


Автор: dB6, Отправлено:19:30 08-06-2006

Цитата:
скрипт, установки меток двойным кликом.

Хм. Каждый раз, когда я хочу выделить слово с помощью двойного клика, у меня будет ставиться/сниматься закладка??
Автор: mozers, Отправлено:23:17 08-06-2006
gansA dB6
Вообще идеальный вариант чтобы маркер устанавливался от клика по колонке с номерами строк. Увы но OnMarginClick() не имеет параметров. Поэтому букмарк ставится не на той стоке по которой кликнули а на той, на которой стоит курсор
Еще вариант - кликать мышей с одновременно нажатой клавишей. Тоже проблема - как узнать какая клавиша в данный момент нажата?
А в сегодняшнем варианте, согласен, скрипт как та клавиша Esc на закрытие SciTE. (Вроде бы иногда и удобно, но ЗАДОЛБАЛА

Добавлено:
Вообще то MarginClick выделяет строку.
Второй MarginClick по этой строке снимает выделение и перемещает курсор в ее начало.
Если все это дело отследить, то двойной MarginClick будет ставить/снимать метки самым оптимальным образом...

Автор: gansA, Отправлено:09:05 09-06-2006
mozers dB6
Тут все дело вкуса, кто как привык пользоваться мышой .
Ведь этот скрипт дает еще одну возможность установки маркеров, помимо существующих:
1. стандартное нажатие Ctrl+F2 (можно перевесить на любое удобное и привычное сочетание клавиш)
2. поиск с установкой маркеров

По поводу MarginClick не все так просто , птому как на маржине в месте установки маркера может находиться fold.symbols и что тогда? Тогда заморочки с фолдингом...

PS: mozers


Автор: mozers, Отправлено:12:07 09-06-2006
gansA

Цитата:
стандартное нажатие Ctrl+F2

Для себя - можно, для народа переназначать стандартную комбинацию - дурной тон.

Цитата:
поиск с установкой маркеров

Так оно уже есть (встроено) - "Пометить все"


Цитата:
По поводу MarginClick не все так просто , птому как на маржине в месте установки маркера может находиться fold.symbols и что тогда?

Нее... Тут - все путем пузырьки фолдинга чуть правее.
Тыкать надо прямо на циферу с номером строки.
1й клик - определяем SelectText и сохраняем в переменной
2й клик - извлекаем содержимое строки на которой стоит курсор и сравниваем с переменной
Если равно - значит надо либо снять либо поставить маркер.
Если никто не опередит (говорю потому, что хотелось бы чтобы опередили) - сам набросаю.

Автор: gansA, Отправлено:16:14 09-06-2006

Цитата:
Так оно уже есть (встроено) - "Пометить все"

Дык я и перечилял стандартные методы ))).


Цитата:
OnMarginClick

Слишком неоднозначное решение получается, тк привязка маркера идет к курсору, а юзверь захочет поставить маркер на другой строке...

Лично меня двойной клик по слову с выделением нисколько не смушает )
Автор: St_MPA3b, Отправлено:21:34 09-06-2006
добавьте новый рубордовский билд в щапку, у меня времени нету)
Автор: mozers, Отправлено:22:43 09-06-2006
gansA

Цитата:
Слишком неоднозначное решение получается, тк привязка маркера идет к курсору

Ох, все вы программисты, усложняете так что простому смертному страшно становится взяться за решению любой задачи
Про OnMarginClick я еще наврал... Оказывается на щелчок по колонке с номерами строк вообще ни одно событие не откликается
OnMarginClick - щелчок только по колонке со значками фолдеров.
Глухо... Ан, нет - исхитрится можно

Код:
-- Установка / снятие закладок на строку (Bookmark) (то же что и Ctrl+F2)
-- с помощью двойного клика мыши на боковой панели с номерами строк
-- mozers™ icq#256106175

sel_text = ''

function SetMarker()
local i = editor:LineFromPosition(editor.CurrentPos)
if editor:MarkerGet(i) == 0 then
editor:MarkerAdd(i,1)
else
editor:MarkerDelete(i,1)
end
end

function OnUpdateUI()
local line_text = editor:GetCurLine()
if line_text ~= '' and line_text == sel_text and editor:GetSelText() == '' then
SetMarker()
end
sel_text = editor:GetSelText()
end

Работает
(Для надежного срабатывания лучше делать меедленный даблклик)

St_MPA3b
Ща добавим, занятой вы наш
Автор: mozers, Отправлено:12:04 10-06-2006
C помощью mimir перехватил таки стандартный шорткат нормализации размера шрифта.
Почему раньше этот Ctrl+KeypadDivide у меня не работал не понимаю
SciTEStartup.lua
Код:
-- Собственная функция, заменяющая стандартную Zoom
-- Достоинство: вместе с отображаемыми шрифтами, масштабируется и выводимый на принтер шрифт
-- mozers™ icq#256106175
function Zoom (i)
if i == '1' then
editor:ZoomIn()
end
if i == '-1' then
editor:ZoomOut()
end
if i == '0' then
editor.Zoom = 0
end
local zoom = editor.Zoom
local font_base = props['font.base']
local font_size = string.sub(font_base,string.find(font_base,'size:',1)+5)
props["print.magnification"] = zoom
props["font.current.size"] = font_size + zoom
--~ print ("Font Size: "..font_size + zoom.."px")
editor:VCHome()
end

.properties
Код:
command.name.7.*=Увеличить шрифт
command.7.*=Zoom 1
command.mode.7.*=subsystem:lua,savebefore:no
command.shortcut.7.*=Ctrl+KeypadPlus

command.name.8.*=Уменьшить шрифт
command.8.*=Zoom -1
command.mode.8.*=subsystem:lua,savebefore:no
command.shortcut.8.*=Ctrl+KeypadMinus

command.name.9.*=Размер шрифта по умолчанию
command.9.*=Zoom 0
command.mode.9.*=subsystem:lua,savebefore:no
command.shortcut.9.*=Ctrl+KeypadDivide

Кстати, в меню Tools шорткат Ctrl+KeypadDivide не показывается. Вместо него торчит Ctrl+9. При этом работают оба
Хотите увидеть Ctrl+KeypadDivide в меню - сделайте 9-ю команду например 3-ей - тогда будет все нормально.
Типа баг что ли ???

И еще раз:
Господа программисты! Это очень сложно внести изменения в код, чтобы Zoom одновременно менял значение print.magnification ???
Упрощенный вариант - print.magnification = editor.Zoom
Автор: masterZZZ, Отправлено:03:25 12-06-2006
Здравствуйте, уважаемые.
Спасибо всем за огромное количество информации по настройкам SciTE.
Всё настроил под себя, но споткнулся о параметры caret.policy.

Проблема в следующем:
При просмотре/редактировании нескольких файлов в одном многовкладочном окне SciTE при переключении с одной вкладки на другую линия текста с курсором меняет своё положение абсолютно непредсказуемым образом. Т.е. просматриваю два файла, нашёл интересное место, установил линию текста с курсором в нижней части окна, переключаюсь на вкладку второго файла, просматриваю его, возвращаюсь к первому файлу - линия текста с курсором может переместиться в верхнюю или нижнюю часть окна.
При работе с десятью файлами всё это превращается в беспредел по возвращению убегающих линий на место, удобное для восприятия.
Видимо в этом есть какая-то логика и это не баг а фича, но мне она не понятна и есть желание её отключить.
Подозрение падает на параметры:

Цитата:
caret.policy.xslop=1
caret.policy.width=20
caret.policy.xstrict=0
caret.policy.xeven=0
caret.policy.xjumps=0
caret.policy.yslop=1
caret.policy.lines=1
caret.policy.ystrict=1
caret.policy.yeven=1
caret.policy.yjumps=0
#visible.policy.strict=1
#visible.policy.slop=1
#visible.policy.lines=4

Единственное, что удалось - это привязать линию курсора к определённому месту с помощью параметра strict, но это не выход - хочется свободы...

В общем - чего хочется:
Что-бы линия курсора оставалась на том-же месте, на котором была оставлена до переключения на следующую вкладку во всех вкладках - это МИНИМУМ.

Получить толковое описание, основанное на личном опыте, вышеупомянутых параметров - это МАКСИМУМ.

Заранее спасибо ВСЕМ.

P.S.
"Жить стало лучше, жить стало веселее..."
by Stalin

Автор: mozers, Отправлено:12:44 12-06-2006
masterZZZ

Цитата:
При просмотре/редактировании нескольких файлов в одном многовкладочном окне SciTE при переключении с одной вкладки на другую линия текста с курсором меняет своё положение абсолютно непредсказуемым образом.

Похоже что какой то злобный lua скрипт хулиганит
Грохни все файлы *.properties (более мягкий вариант - отключи SciTEStartup.lua) и попробуй снова - такого безобразия не будет.
Автор: mozers, Отправлено:19:14 12-06-2006
Поговорил тут с Neil Hodgson (разработчиком SciTE)...
Прямо скажу, впечатление - удручающее
Мало того что этот тип приписал себе все то, что придумал и реализовал mimir.
Как выяснилось, то что SciTE может работать с кодировкой DOS 866 для него - новость.
"Это - незапланированное поведение и я не приложу никаких усилий чтобы поддерживать это в будущих версиях".
Нет слов...
То, что от реализации многих удачных находок этот кадр постоянно открещивается, не давая никаких аргументированных объяснений я уже не говорю...
"I won't be adding this" и все
Короче, ребята, ситуация такова что расчитывать надо только на свои силы.
Уважаемые русские программисты, все наши взоры прикованы к вам
Автор: masterZZZ, Отправлено:02:35 13-06-2006
Нашёл причину:

Цитата:
При просмотре/редактировании нескольких файлов в одном многовкладочном окне SciTE при переключении с одной вкладки на другую линия текста с курсором меняет своё положение абсолютно непредсказуемым образом.

Подозрение с caret.policy снимается.
Виноват параметр fold.on.open=1.

Воспроизвести можно на всех последних версиях SciTE

Цитата:
fold=1
fold.compact=1
fold.flags=16
fold.symbols=1
fold.on.open=1
fold.comment=1
fold.preprocessor=1




Автор: mimir, Отправлено:11:24 13-06-2006
Люди, как можно отменить выдиление, т.е. по ДоблеКлик я хочу поставить закладку и при этом я не хочу чтобы слово выделялось. Может кто знает как это сделать?Желательно чтобы курсор тоже оставался на масте.

Автор: mozers, Отправлено:12:20 13-06-2006
mimir
Ты - про первый вариант моего скрипта? (его еще gansA усовершенствовал) ?
А че те второй вариант (с помощью двойного клика мыши на боковой панели с номерами строк) вообще не понравился?
Или свой хочешь изобразить?
Я думаю, что слово все равно выделятся будет. Можно попробовать тут же в скрипте снять это выделение, подвинув курсор.
А чтобы ДаблКликнуть и курсор при этом не сместился - вообще фантастика. (Правда, если постоянно сохранять его координаты, а после ДаблКлика восстанавливать...)

Автор: mimir, Отправлено:12:36 13-06-2006

Цитата:
Ты - про первый вариант моего скрипта? (его еще gansA усовершенствовал) ?
А че те второй вариант (с помощью двойного клика мыши на боковой панели с номерами строк) вообще не понравился?

Я сделал по Ctrl+DoubleClick. Меня это полнустью устраивает.
Попозже если надо пришлю исправления.
А твой второй скрипт я не смотрел еще, но посмотрю обязательно .
На счет abbrev, так я надеялся на конструктивную критику и рац. предложения, но если это всех устраивает, то выкладывай.


Автор: mozers, Отправлено:14:35 13-06-2006
Дополнение для abbrev (c) mimir
Он теперь поддерживает переменные %SEL%(выделенный текст), %CLB% (скопированный) и %GUID% (это какой?).
Идея принадлежит codewarlock1101.

Например можно в abbrev написать так:
Код:
<a =<a href="|" alt="" target=_blank>%SEL%</a>

Теперь пишем '<a Привет' и выделяем 'Привет'.
Единственная тонкость в том, что курсор при этом должен распологаться на конце сокращения (после '<a ' пробелы тоже учитываются).
Я пишу так: все сокращения у меня заканчиваються пробелом; ввожу сокращение через пробел параметр и нажимаю Ctrl+Shift+left;Сtrl+B.

Пока по Ctrl+Shift+R не работает.
Может кто придумает как передать доп. параметры?

И, собственно, код: [more]

Код:
/*mimir*/
#define FINALLY(ARG) catch(...){ARG;}ARG;
inline void GUIDToStr(const GUID &g, char*a){
sprintf(a,"{%X-%X-%X-%X%X-%X%X%X%X%X%X}",g.Data1,g.Data2,g.Data3,
g.Data4[0],g.Data4[1],g.Data4[2],g.Data4[3],g.Data4[4],
g.Data4[5],g.Data4[6],g.Data4[7]);
}

bool SciTEBase::StartExpandAbbreviation() {
int currentPos = GetCaretInLine();
int position = SendEditor(SCI_GETCURRENTPOS); // from the beginning
char *linebuf = new char[currentPos + 2];
GetLine(linebuf, currentPos + 2); // Just get text to the left of the caret
linebuf[currentPos] = '\0';
int abbrevPos = (currentPos > 32 ? currentPos - 32 : 0);
const char *abbrev = linebuf + abbrevPos;
SString data;
size_t dataLength = 0;
int abbrevLength = currentPos - abbrevPos;
// Try each potential abbreviation from the first letter on a line
// and expanding to the right.
// We arbitrarily limits the length of an abbreviation (seems a reasonable value..),
// and of course stop on the caret.
while (abbrevLength > 0) {
data = propsAbbrev.Get(abbrev);
dataLength = data.length();
if (dataLength > 0) {
break; /* Found */
}
abbrev++; // One more letter to the right
abbrevLength--;
}

if (dataLength == 0) {
WarnUser(warnNotFound); // No need for a special warning
return true; // returning if expanded abbreviation is empty
}


/*mimir*/
SString currentSelection = EncodeString(SelectionExtend(0, false));
SString clpBuffer;
bool UseSel = false;
BOOL IsOpen=OpenClipboard(0);
if(IsOpen){
HANDLE Data;
Data = GetClipboardData(CF_TEXT);
try{
if(Data != 0){
try{
clpBuffer = static_cast<char*>(GlobalLock(Data));
}
FINALLY(GlobalUnlock(Data));
}
}
FINALLY(CloseClipboard());
}
SendEditorString(SCI_REPLACESEL, 0, "");




char *expbuf = new char[dataLength + 1];
strcpy(expbuf, data.c_str());
UnSlash(expbuf);
size_t expbuflen = strlen(expbuf);
int caret_pos = -1; // caret position
int currentLineNumber = GetCurrentLineNumber();
int indent = 0;
int indentExtra = 0;
bool isIndent = true;
char *pPerc=NULL;
int eolMode = SendEditor(SCI_GETEOLMODE);
if (props.GetInt("indent.automatic")) {
indent = GetLineIndentation(currentLineNumber);
}

SendEditor(SCI_BEGINUNDOACTION);
SendEditor(SCI_SETSEL, position - abbrevLength, position);

// add the abbreviation one character at a time
for (size_t i = 0; i < expbuflen; i++) {
char c = expbuf[i];
SString abbrevText("");
if (isIndent && c == '\t') {
indentExtra++;
SetLineIndentation(currentLineNumber, indent + SendEditor(SCI_GETINDENT) * indentExtra);
} else {
switch (c) {
case '|':
// user may want to insert '|' instead of caret
if (i < (dataLength - 1) && expbuf[i + 1] == '|') {
// put '|' into the line
abbrevText += c;
i++;
} else if (caret_pos == -1) {
if (i == 0) {
// when caret is set at the first place in abbreviation
caret_pos = SendEditor(SCI_GETCURRENTPOS) - abbrevLength;
} else {
caret_pos = SendEditor(SCI_GETCURRENTPOS);
}
}
break;
case '\n':
if (eolMode == SC_EOL_CRLF || eolMode == SC_EOL_CR) {
abbrevText += '\r';
}
if (eolMode == SC_EOL_CRLF || eolMode == SC_EOL_LF) {
abbrevText += '\n';
}
break;
case '%':/*mimir*/
pPerc=strstr(&expbuf[i+1],"%");
if(pPerc){
int lenPerc = pPerc - expbuf-i+1;
pPerc = new char[lenPerc+2];
strncpy(pPerc,&expbuf[i],lenPerc);
pPerc[lenPerc] = '\0';
if(strcmp(pPerc,"%SEL%")==0){
abbrevText +=currentSelection;
i+=lenPerc-1;
UseSel = true;
}else
if(strcmp(pPerc,"%CLP%")==0){
abbrevText +=clpBuffer;
i+=lenPerc-1;
UseSel = true;
}else
if(strcmp(pPerc,"%GUID%")==0){
char chGUID[40]={0};
GUID guid;
CoCreateGuid (&guid);
GUIDToStr(guid,chGUID);
abbrevText += chGUID;
i+=strlen(chGUID)-1;
}else
abbrevText += c;
delete pPerc;
}
break;
default:
abbrevText += c;
break;
}
SendEditorString(SCI_REPLACESEL, 0, abbrevText.c_str());
if (c == '\n') {
isIndent = true;
indentExtra = 0;
currentLineNumber++;
SetLineIndentation(currentLineNumber, indent);
} else {
isIndent = false;
}
}
}
if(!UseSel)/*mimir*/
SendEditorString(SCI_REPLACESEL, 0, currentSelection.c_str());
// set the caret to the desired position
if (caret_pos != -1) {
SendEditor(SCI_GOTOPOS, caret_pos);
}

SendEditor(SCI_ENDUNDOACTION);
delete []expbuf;
delete []linebuf;
return true;
}
[/more]


Добавлено:
mimir
Вот, выложил твое творение
Цитата:
На счет abbrev, так я надеялся на конструктивную критику и рац. предложения

Критика будет, только деконструктивная
Просто я с существующими то abbrev никак справится не могу - некогда, а готовых кроме mirk-а никто не прислал (глянь сборку - слезы одни , а тут еще такое глобальное новшество...

И вопросы возникают по изобретению:
%GUID% ???

Цитата:
Может кто придумает как передать доп. параметры?
не понял про что ты

Автор: mimir, Отправлено:15:13 13-06-2006

Цитата:
И вопросы возникают по изобретению:
%GUID% ???

GUID-это GUID.({41FA0775-E644-4195-81A7-E5713638A914});
Я как раз писала COM сарвер и там они очень пригодились для шаблонов интерфейсов, классов и и т.д.

Цитата:
не понял про что ты

Я вроде писал.
например для паскаля .
propsg=property %SEL%:%CLB% read Get%SEL% write Set%SEL%;
где
%SEL% - имя
%CLB% - тип

но если захотеть автоматически генерировать процедуры надо иметь еще имя класса
function %???%.Get%SEL%:%CLB%
begin
Result := F%SEL%;
end;

Вот я и смотрю, может в выделенном тексте искать конструкции типа %...% и брать их как %PAR_N%




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