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

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

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


Автор: Midas, Отправлено:09:56 18-05-2007
vladvro
a) Тройной клик по строке
b) Клик по панели номеров строк
Автор: vladvro, Отправлено:14:57 18-05-2007
Midas
Цитата:
a) Тройной клик по строке
b) Клик по панели номеров строк

a) ну это для особо упорных... я к таким не отношусь
b) а я было думал что они обрабатываются как одна панель, рад что ошибался.
как вариант - пойдет, хотя первое время наверно буду мазать и вместо выделения делать букмарк
Автор: Moon_aka_Sun, Отправлено:00:55 19-05-2007
В 1.73 только у меня перестал работать Transpose Lines (^T), когда курсор стоит на пустой строке, или это повсеместное явление?

Изменение if (pdoc->DeleteChars(start, len2)) на if (len2==0 || pdoc->DeleteChars(start, len2)) в scintilla\src\Editor.cxx исправляет это.
Автор: mozers, Отправлено:09:12 19-05-2007
Moon_aka_Sun
К стыду своему должен сказать что многочисленные команды ядра Scintilla, несмотря на их удобство, используются мной гораздо реже, нежели команды оболочки SciTE. А все по причине их отсутствия в меню. Ну не помнит моя башка все эти клавиатурные комбинации! В Справку что ли каждый раз лазить?
Вот и этот баг заметил только после твоего поста...
Мысль (необдуманная): Может добавить все эти комбинации в меню Tools сборки (чисто для наглядности) ???
Автор: chupakabra, Отправлено:13:33 19-05-2007
Столкнулся с такой проблемой:
При движении курсора по строке с помощью стрелок заметил что строка (или даже весь текст) неприятно мерцает, видимо вследствие ее перерисовки. Загрузил оригинальную версию SciTE с тем же файлом - никаких намеков не мерцание. Но когда я скопировал все настройки из русской версии - мерцание появилось и там. Соответственно вопрос: может кто сталкивался и знает, что надо поправить в настройках чтобы избавиться от мерцания?
Автор: BioInfo, Отправлено:14:39 19-05-2007
chupakabra

Код:
[no]# Вывод данных непосредственно на экран (0) или сначала в буфер, [/no]
[no]# и только потом на экран (1)[/no]
buffered.draw=1
[no]# При 1 - более качественный (но и более медленный) способ прорисовки текста[/no]
two.phase.draw=1
Данный код внедрен в форум с помощью скрипта vladvro
З.Ы. Таких же проблем с затиранием файла локальных настроек при включении автосохранения позиции окна как у azzzis нет?
Автор: chupakabra, Отправлено:15:59 19-05-2007
BioInfo
Да, есть. Вот пример SciTEUser.properties до и после включения position.autosave=1: ссылка

Автор: BioInfo, Отправлено:19:48 19-05-2007
Внимание всем
Баг с position.autosave=1 заключается в следующем:
символы перевода строк в файле пользовательских настроек стоит не CR+LF, из-за этого он не верно считывается и перетирается.
Как нить поправлю чтобы распознавал, а пока лечится так:
Настройки -> Открыть файл пользовательских настроек
Настройки -> Символы перевода строки -> CR+LF
Настройки -> Конвертировать символы перевода строки

У самого эта опция включена, в файле пользовательских настроек записана куча параметров, в том числе и на расцветку, полет нормальный.
Автор: Moon_aka_Sun, Отправлено:01:26 21-05-2007

Цитата:
mozers написал: многочисленные команды ядра Scintilla, несмотря на их удобство

Конечно, ^T сама по себе смешна. А вот alt+up/down для перетаскивания строк - самое то. Но код-то используется один и тот же.

Внимание, вопрос! Кто-нибудь делал, чтобы doubleclick на табе закрывал файл? Что-то не видно такого.
Автор: mozers, Отправлено:09:43 21-05-2007
chupakabra
Совет BioInfo, возможно тебе и поможет, но хотелось бы вычислить "нехороший" скрипт. Попробуй закомментировать все строки с require в SciTEStartup.lua, а потом подключать по одному до появления мерцания.
Так ты поможешь не только себе, но и другим пользователям, которые мучаются молча.
(Сам бы так сделал, но у меня ни тормозов ни мерцания не наблюдается)

Moon_aka_Sun
Цитата:
Кто-нибудь делал, чтобы doubleclick на табе закрывал файл?
Я просил об этом BioInfo... он меня послал... на среднюю кнопу мыши

Автор: vladvro, Отправлено:10:59 21-05-2007
mozers
Цитата:
Совет BioInfo, возможно тебе и поможет, но хотелось бы вычислить "нехороший" скрипт. Попробуй закомментировать все строки с require в SciTEStartup.lua, а потом подключать по одному до появления мерцания.

проводим следующий эксперимент:
включаем режим переноса по словам (если он не включен), создаем новый файл с очень длинной строкой, так что бы она занимала скажем полэкрана, и выделяем ее.
у меня при этом начинает бегать по тексту светлая полоска (эффект медленной прорисовки текста).
коментарим строчку:
SciTEGlobal.properties строка 1221
Код:
ext.lua.startup.script=$(SciteDefaultHome)\tools\SciTEStartup.lua
Данный код внедрен в форум с помощью скрипта vladvro
перезапускаем, что бы быть уверенными что все скрипты отключены.
повторяем эксперимент - рузультат тот же.
теперь ставим опцию
Код:
buffered.draw=1
эффект пропадает.



Автор: chupakabra, Отправлено:12:42 21-05-2007
mozers
Я не понял причем тут скрипты. А настройка помогает, мерцание исчезает. По-моему проблема просто в том, что она по умолчанию отключена (В SciTEGlobal.properties прописано buffered.draw=0). Если ее включить, то ни у кого не будет проблемы с мерцанием.
Автор: BioInfo, Отправлено:14:29 21-05-2007
Всем

В беседе с mozers возник следующий вопрос, думаю нужно его обсудить со всеми, иначе как мы решим так и будет
Вопрос в следующем: какие команды (имеется ввиду иконки к ним) необходимы на тулбаре помимо уже существующих 17?
Напомню эти команды:
Создать, Открыть, Сохранить, Печать, Вырезать, Копировать, Вставить, Удалить, Отменить, Повторить, Найти, Заменить, Выполнить, Записать макрос, Прекратить запись, Выполнить макрос, Закрыть.
Это на данный момент является "стандартным" набором в сборке.
В иконках Midas я разобраться не могу.

azzzis

Цитата:
А можно ли в bmp с кнопками использовать более цветастые иконки? или в ядре ограничение на количество цветов?

Отвечаю, хоть и с задержкой. До этого были предложены тулбары с количеством цветов 16. Ядро глатает битмапы до 256 цветов, 1 из которых (верхний левый пиксель) "прозрачность".
Мною готовится тулбар по цветастее, но пока застопорилось все на 17 иконках.
Автор: WATERPROOF, Отправлено:01:06 22-05-2007

Цитата:
Вопрос в следующем: какие команды (имеется ввиду иконки к ним) необходимы на тулбаре помимо уже существующих 17?

Компилировать, собрать, выполнить!!!

отобразить непечатаемые знаки(пробелы), сохранить как, кодировка ...
Автор: chupakabra, Отправлено:12:07 22-05-2007
При редактировании исходного кода на C++ и включенной автоиндентации (indent.automatic=1) столкнулся с тем что редактор вставляет отступ после конструкций вида:
if (b) do();
Немного напрягает, можно как-то это поправить?
Автор: dB6, Отправлено:14:10 22-05-2007

Цитата:
Вопрос в следующем: какие команды (имеется ввиду иконки к ним) необходимы на тулбаре помимо уже существующих 17?

По мне так вообще этот тулбар не нужен..

Но если делать, то включать туда те команды, на которых нет хоткеев удобных и/или лезть далеков в меню.

Зачем они нужны для
Цитата:
Компилировать, собрать, выполнить!!!
я не совсем понимаю.
Автор: Moon_aka_Sun, Отправлено:00:26 24-05-2007
Тогда ещё вопрос. Никто не думал над тем, чтобы сделать в File подменю Favorites и запихать туда 5-10 любимых файлов, которые чаще всего редактируются? Можно даже без всяких удобств, со списком этих файлов в Global properties или в ещё каком файле.
Автор: Fire_Sphere, Отправлено:01:27 24-05-2007
Подскажите плиз, как можно включить (если есть) такие вещи в SciTE:
- возможность устанавливать курсор за пределами конца строки (сейчас он прыгает по концам строк)
- при посветке кода в php вроде есть опция в файле html.properties :

Код:
# PHP variable in double quoted string
style.hypertext.126=fore:#007F00

но она "не работает". Всмысле какой цвет тут не задавай - переменная в строке всегда будет выводиться цветом этой самой строки, а никак не style.*.126

И кстати, можно где-то почитать полный список этих загадочных номеров? А то прямо шифровка, в Центр, и если-бы не комментарии то было-б совсем глухо...
Автор: vladvro, Отправлено:09:45 24-05-2007
Moon_aka_Sun
Цитата:
Никто не думал над тем, чтобы сделать в File подменю Favorites и запихать туда 5-10 любимых файлов, которые чаще всего редактируются?

а зачем, если есть сессии?

Fire_Sphere
Цитата:
- возможность устанавливать курсор за пределами конца строки

нет такой возможности

Цитата:
при посветке кода в php вроде есть опция в файле html.properties :
# PHP variable in double quoted string
style.hypertext.126=fore:#007F00
но она "не работает".

у меня работает.
Код:
<?php
echo "значение = $value";
?>


Цитата:
И кстати, можно где-то почитать полный список этих загадочных номеров?

"почитать" можно в исходниках редактора, а по мне так комментариев вполне достаточно.

Добавлено:
All
я очень часто пользуюсь поиском по файлам, и меня не устраивало то, как отображался результат, пришлось сделать модификацию ([more=подробнее...]
SciTEProps.cxx строка 574
Код:
void SciTEBase::ForwardPropertyToEditor(const char *key) {
SString value = props.Get(key);
SendEditorString(SCI_SETPROPERTY,
reinterpret_cast<uptr_t>(key), value.c_str());
[no]//!-start-[FindResultListStyle][/no]
SendOutputString(SCI_SETPROPERTY,
reinterpret_cast<uptr_t>(key), value.c_str());
[no]//!-end-[FindResultListStyle][/no]
}
Данный код внедрен в форум с помощью скрипта vladvro

SciTEProps.cxx строка 656
Код:
static const char *propertiesToForward[] = {
[no]//++Autogenerated -- run src/LexGen.py to regenerate[/no]
[no]//**\(\t"\*",\n\)[/no]
[no]"asp.default.language"[/no],
... // сокращено
[no]"lexer.cpp.allow.dollars"[/no],
[no]"lexer.d.fold.at.else"[/no],
[no]"lexer.errorlist.findliststyle"[/no], [no]//!-add-[FindResultListStyle][/no]
Данный код внедрен в форум с помощью скрипта vladvro

LexOthers.cxx строка 817
Код:
static int RecogniseErrorListLine(const char *lineBuffer, unsigned int lengthLine, unsigned int &styleLength) { [no]//!-change-[FindResultListStyle][/no]
Данный код внедрен в форум с помощью скрипта vladvro

LexOthers.cxx строка 930
Код:
} else if (state == stGccDigit) { [no]// <filename>:<line>[/no]
if (ch == [no]':'[/no]) {
state = stGcc; [no]// :9.*: is GCC[/no]
styleLength = i; [no]//!-add-[FindResultListStyle][/no]
break;
Данный код внедрен в форум с помощью скрипта vladvro

LexOthers.cxx строка 1005
Код:
static void ColouriseErrorListLine(
char *lineBuffer,
unsigned int lengthLine,
unsigned int startPos, [no]//!-add-[[/no]FindResultListStyle[no]][/no]
unsigned int endPos,
Accessor &styler) {
[no]//!-start-[[/no]FindResultListStyle[no]][/no]
unsigned int styleLength = 0;
int stl = RecogniseErrorListLine(lineBuffer, lengthLine, styleLength);
if (stl == SCE_ERR_GCC && styler.GetPropertyInt([no]"lexer.errorlist.findliststyle"[/no], 0) == 1) {
styler.ColourTo(startPos + styleLength, stl);
styler.ColourTo(endPos, SCE_ERR_DEFAULT);
} else {
styler.ColourTo(endPos, stl);
}
[no]//!-end-[[/no]FindResultListStyle[no]][/no]
}

static void ColouriseErrorListDoc(unsigned int startPos, int length, int, WordList *[], Accessor &styler) {
char lineBuffer[10000];
styler.StartAt(startPos);
styler.StartSegment(startPos);
unsigned int linePos = 0;
unsigned int startLine = startPos; [no]//!-add-[[/no]FindResultListStyle[no]][/no]
for (unsigned int i = startPos; i < startPos + length; i++) {
lineBuffer[linePos++] = styler[i];
if (AtEOL(styler, i) || (linePos >= sizeof(lineBuffer) - 1)) {
[no]// End of line (or of line buffer) met, colourise it[/no]
lineBuffer[linePos] = [no]'\0'[/no];
ColouriseErrorListLine(lineBuffer, linePos, startLine, i, styler); [no]//!-change-[[/no]FindResultListStyle[no]][/no]
linePos = 0;
startLine = i + 1; [no]//!-add-[[/no]FindResultListStyle[no]][/no]
}
}
if (linePos > 0) { [no]// Last line does not have ending characters[/no]
ColouriseErrorListLine(lineBuffer, linePos, startLine, startPos + length - 1, styler); [no]//!-change-[[/no]FindResultListStyle[no]][/no]
}
}
Данный код внедрен в форум с помощью скрипта vladvro

и добавить в конфиг опцию:
Код:
[no]# двухцветное отображение результата поиска[/no]
lexer.errorlist.findliststyle=1
Данный код внедрен в форум с помощью скрипта vladvro
[/more])
так было:
Код:
>Internal search for "class DcmFileFormat" in "*.asm *.c *.cc *.cpp *.cxx *.cs *.h *.hh *.hxx *.hpp *.rc"
[no]D:\dcmtk-3.5.4\dcmdata\include\dcmtk\dcmdata\dcfilefo.h:22: * Purpose: Interface of class DcmFileFormat[/no]
[no]D:\dcmtk-3.5.4\dcmdata\include\dcmtk\dcmdata\dcfilefo.h:55:class DcmFileFormat[/no]
[no]D:\dcmtk-3.5.4\dcmdata\libsrc\dcfilefo.cxx:22: * Purpose: class DcmFileFormat[/no]
[no]D:\dcmtk-3.5.4\dcmimgle\include\dcmtk\dcmimgle\didocu.h:66: * and functions provided by dcmdata (e.g. class DcmFileFormat, DcmItem).[/no]
[no]D:\dcmtk-3.5.4\dcmnet\libsrc\dimse.cxx:100:#include "dcmtk/dcmdata/dcfilefo.h" /* for class DcmFileFormat */[/no]
[no]D:\dcmtk-3.5.4\dcmqrdb\include\dcmtk\dcmqrdb\dcmqrcbs.h:42:class DcmFileFormat;[/no]
> Time: 0.556

так стало:
Код:
>Internal search for "class DcmFileFormat" in "*.asm *.c *.cc *.cpp *.cxx *.cs *.h *.hh *.hxx *.hpp *.rc"
[no]D:\dcmtk-3.5.4\dcmdata\include\dcmtk\dcmdata\dcfilefo.h:22:[/no] * Purpose: Interface of class DcmFileFormat
[no]D:\dcmtk-3.5.4\dcmdata\include\dcmtk\dcmdata\dcfilefo.h:55:[/no]class DcmFileFormat
[no]D:\dcmtk-3.5.4\dcmdata\libsrc\dcfilefo.cxx:22:[/no] * Purpose: class DcmFileFormat
[no]D:\dcmtk-3.5.4\dcmimgle\include\dcmtk\dcmimgle\didocu.h:66:[/no] * and functions provided by dcmdata (e.g. class DcmFileFormat, DcmItem).
[no]D:\dcmtk-3.5.4\dcmnet\libsrc\dimse.cxx:100:[/no]#include "dcmtk/dcmdata/dcfilefo.h" /* for class DcmFileFormat */
[no]D:\dcmtk-3.5.4\dcmqrdb\include\dcmtk\dcmqrdb\dcmqrcbs.h:42:[/no]class DcmFileFormat;
> Time: 0.556


Автор: BioInfo, Отправлено:11:50 24-05-2007

Цитата:
Думаю что в решении данного вопроса главное - следовать общим правилам
построения SciTE. Тут, как мне кажется, решением, минимально
затрагивающим общие принципы, было бы введение нового параметра для
построения меню Tools, что то типа command.48.hide...

Сделано, при добавлении command.hide.48 команда 48 не будет отображена
в меню, однако она будет работать при вызове (например из
контекстного).
[more=Читать дальше...]
В SciTEBuffers.cxx немного переделан этот кусок кода:

Код:
[no]//!-start-[SubMenu][/no]
prefix = [no]"command.separator."[/no];
prefix += SString(item);
int issep = props.GetInt(prefix.c_str());

prefix = [no]"command.hide."[/no];
prefix += SString(item);
int ishide = props.GetInt(prefix.c_str());

[no]// Finally add functions stated in "command.menu." in right submenu's (by default directly in Tools menu)[/no]
prefix = [no]"command.parent."[/no];
prefix += SString(item);
int toMenu = props.GetInt(prefix.c_str());
if(toMenu != NULL && toMenu >= 0 && toMenu < toolMax && IsMenu(UMenu[toMenu].hMenu)) {
SString localised = localiser.Text(sMenuItem.c_str());
if (issep)
::InsertMenu(UMenu[toMenu].hMenu, itemID, MF_BYPOSITION | MF_SEPARATOR, IDM_TOOLS + toolMax + 1, [no]""[/no]);
if (!ishide)
SetMenuItem(UMenu[toMenu].hMenu, itemID, localised.c_str(), sMnemonic[0] ? sMnemonic.c_str() : NULL);
}
else {
if (issep) {
::InsertMenu(hToolsMenu, menuPos, MF_BYPOSITION | MF_SEPARATOR, IDM_TOOLS + toolMax + 1, [no]""[/no]);
menuPos++;
}
if (!ishide) {
SciTEBase::SetMenuItemLocalised(menuTools, menuPos, itemID, sMenuItem.c_str(), sMnemonic[0] ? sMnemonic.c_str() : NULL);
menuPos++;
}
}
}
}
[no]//!-end-[SubMenu][/no]
Данный код внедрен в форум с помощью скрипта vladvro
[/more]

Цитата:
Я не пойму как работает автозакрытие скобок...
> Тут 2 скрипта стараются - braces_autoclose.lua (gansA, mimir, Midas)
> и html_tags_autoclose.lua (VladVRO)
> 2й поумнее будет.
> Вопросы - к авторам (первым я вообще не пользуюсь).
А когда открываю { сразу должен вставляется интер, таб, интер и
закрытая } и курсор после таба.

Смотреть на это безобразие нет мочи, по этому вот мой вариант.
По идее автоматически поставленная скобка должна убираться по
бекспейсу, однако бекспейс я отловить не смог, по этому убрать
поставленную автоматом скобку можно пока следующим образом:
Отмена (Ctrl+Z) или самому стереть (вперед + бекспейс)
Еще по идее не должно автозакрытие работать в закоменченной строке
Может в будующем доделаю.
(это мой первый опыт на lua, так что если есть что подправить пишите)
[more=Читать дальше...]

Код:
[no]-- Автозакрытие скобок - усовершенствованная модель[/no]
[no]-- Авторы: (gansA, mimir, Midas, mozers) полностью переделано Маслов Дмитрий[/no]
[no]-- Работает, если braces.autoclose=1 (параметр в файле SciTEGlobal.properties)[/no]
[no]-----------------------------------------------[/no]

[no]-- Добавляем свой обработчик события OnChar[/no]
local old_OnChar = OnChar
function OnChar(char)
[no]-- обрабатываем по дефолту[/no]
local result
if old_OnChar then result = old_OnChar(char) end
[no]-- далее запускаем волшебный обработчик[/no]
[no]-- если находимся в редакторе[/no]
if(editor.Focus)and(props[[no]'braces.autoclose'[/no]]==[no]'1'[/no]) then
local pos = editor.CurrentPos
local nextSimbol = string.format([no]"%c"[/no],editor.CharAt[pos])
if(nextSimbol==[no]"("[/no])or(nextSimbol==[no]"["[/no])or(nextSimbol==[no]"."[/no])or(nextSimbol==[no]"%"[/no])then
nextSimbol=string.format([no]"%%%s"[/no],nextSimbol)
end
if(char==[no]"("[/no])or(char==[no]"["[/no])or(char==[no]"."[/no])or(char==[no]"%"[/no])then
char=string.format([no]"%%%s"[/no],char)
end
local endBr = string.find(props[[no]'braces.close'[/no]],nextSimbol,1)
[no]-- если следующий символ закрывающаяся скобка[/no]
[no]-- и мы ее вводим, то ввод проглатываем[/no]
if(endBr~=nil)and(endBr>0)and(nextSimbol==char)then
editor:DeleteBack()
editor:CharRight()
else
[no]-- сразу вставляем закрывающуюся скобку если поставили открывающуюся[/no]
local brIdx = string.find(props[[no]'braces.open'[/no]],char,1)
if(brIdx~=nil)and(brIdx>0)then
editor:BeginUndoAction()
[no]-- по волшебному обрабатываем скобку { и } в cpp[/no]
if (char == [no]'{'[/no])and(GetLexerName() == [no]'cpp'[/no]) then
editor:NewLine()
editor:Tab()
pos = editor.CurrentPos
editor:NewLine()
editor:InsertText(editor.CurrentPos,[no]'}'[/no])
editor:GotoPos(pos)
elseif (char == [no]'}'[/no])and(GetLexerName() == [no]'cpp'[/no]) then
editor:BackTab()
else
local symE = string.sub(props[[no]'braces.close'[/no]],brIdx,brIdx)
if(symE~=nil)then editor:InsertText(pos,symE) end
end
editor:EndUndoAction()
end
end
end
return result
end
Данный код внедрен в форум с помощью скрипта vladvro
[/more]

Цитата:
Да, можно. Но тут (только В ЭТОМ КОНКРЕТНОМ случае) случился какой то
затык Событие OnSendEditor(id_msg, wp, lp) почему то не возникает
А по идее, анализируя соответствие id_msg SCI_ZOOMIN, SCI_ZOOMOUT
или SCI_SETZOOM можно продолжить обработку по своему сценарию.
Почему ВЕЗДЕ срабатывает, а ТУТ - НЕТ разбирался VladVRO.
Вроде даже нашел почему..., но поправить так и не смог

Теперь все работает.
[more=Читать дальше...]
Для этого необходимы следующие изменения:
В файле SciTEProps.cxx

Код:
[no]//!-start-[StyleDefault][/no]
#if PLAT_WIN
StyleDefinition style(sval.c_str());
char sColor[8];
ColourDesired color;
if (!(style.specified & StyleDefinition::sdBack)) {
color.Set( ::GetSysColor(COLOR_WINDOW) );
sprintf(sColor, [no]"#%2X%2X%2X\0"[/no],color.GetRed(), color.GetGreen(), color.GetBlue() );
style.back = sColor;
style.back.substitute([no]' '[/no], [no]'0'[/no]);
style.specified = static_cast<StyleDefinition::flags>(style.specified | style.sdBack);
}
if (!(style.specified & StyleDefinition::sdFore)) {
color.Set( ::GetSysColor(COLOR_WINDOWTEXT) );
sprintf(sColor, [no]"#%2X%2X%2X\0"[/no],color.GetRed(), color.GetGreen(), color.GetBlue() );
style.fore = sColor;
style.fore.substitute([no]' '[/no], [no]'0'[/no]);
style.specified = static_cast<StyleDefinition::flags>(style.specified | style.sdFore);
}
SetOneStyle(wEditor, STYLE_DEFAULT, style);
SetOneStyle(wOutput, STYLE_DEFAULT, style);
#else
SetOneStyle(wEditor, STYLE_DEFAULT, sval.c_str());
SetOneStyle(wOutput, STYLE_DEFAULT, sval.c_str());
#endif
SendEditor(SCI_SETZOOM, props.GetInt([no]"magnification"[/no])); [no]//!-add-[Zoom][/no]
[no]//!-end-[StyleDefault][/no]
Данный код внедрен в форум с помощью скрипта vladvro
В файле SciTEBase.cxx:

Код:
case SCN_ZOOM:
[no]//!-start-[Zoom][/no]
if (extender && OnSendEditorCallsCount < _MAX_EXTENSION_RECURSIVE_CALL) {
OnSendEditorCallsCount++;
char zoom[10];
extender->OnSendEditor(SCI_SETZOOM, 0, itoa(SendEditor(SCI_GETZOOM),zoom,10));
OnSendEditorCallsCount--;
}
[no]//!-end-[Zoom][/no]
SetLineNumberWidth();
break;
Данный код внедрен в форум с помощью скрипта vladvro
От сюда видно, что при изменении зума посылаем сообщение SCI_SETZOOM,
причем само значение зума записываем в lp.
[/more]
Итак, теперь скрипт отвечающий за размеры печатного текста будет
выглядеть так (ZoomAuto.lua):
(это мой второй опыт на lua, так что если есть что подправить пишите)
[more=Читать дальше...]

Код:
[no]-- Реакция на изменение размера шрифта в редакторе[/no]
[no]-- Авторы: (mozers™), переработано Маслов Дмитрий[/no]
[no]-- Достоинство: вместе с отображаемыми шрифтами, масштабируется и выводимый на принтер шрифт[/no]
[no]-- Для удобства использования можно добавить обработчики[/no]
[no]-- # ----------------------------------------------[/no]
[no]-- command.submenu.name.5.*=Text Size[/no]

[no]-- command.parent.20=5[/no]
[no]-- command.name.20.*=Magnify[/no]
[no]-- command.20.*=dostring editor:ZoomIn()[/no]
[no]-- command.mode.20.*=subsystem:lua,savebefore:no[/no]

[no]-- command.parent.21=5[/no]
[no]-- command.name.21.*=Reduce[/no]
[no]-- command.21.*=dostring editor:ZoomOut()[/no]
[no]-- command.mode.21.*=subsystem:lua,savebefore:no[/no]

[no]-- command.parent.22=5[/no]
[no]-- command.name.22.*=Restore to Normal[/no]
[no]-- command.22.*=dostring editor.Zoom = 0[/no]
[no]-- command.mode.22.*=subsystem:lua,savebefore:no[/no]
[no]-- # ----------------------------------------------[/no]

function ChangeFontSize(zoom)
props[[no]"magnification"[/no]] = zoom
props[[no]"print.magnification"[/no]] = zoom
props[[no]"font.current.size"[/no]] = editor.StyleSize[STYLE_DEFAULT] + zoom [no]-- Used in statusbar[/no]
scite.UpdateStatusBar()
end

[no]-- Добавляем свой обработчик событий[/no]
local old_OnSendEditor = OnSendEditor
function OnSendEditor(id_msg, wp, lp)
local result
if old_OnSendEditor then result = old_OnSendEditor(id_msg, wp, lp) end
if id_msg == SCI_SETZOOM then ChangeFontSize(lp) end
return result
end
Данный код внедрен в форум с помощью скрипта vladvro
Ну и чтобы все работало без нашего участия в SciTEStartup.lua добавляем:

Код:
[no]-- Изменение текущего размера шрифта (одновременно масштабируется и выводимый на принтер шрифт и показатель в строке состояния)[/no]
require (props[[no]"SciteDefaultHome"[/no]]..[no]"\\tools\\Zoom.lua"[/no])
Данный код внедрен в форум с помощью скрипта vladvro
[/more]



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