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

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

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


Автор: mozers, Отправлено:11:21 07-11-2006
SciTE 1.71 .23Ru-Board Edition [Сборка 07.11.2006]
Автор: codewarlock1101, Отправлено:18:20 07-11-2006
mozers
Че-то намутили! Теперь статус бар не прорисовывается автоматически!
Автор: unreal666, Отправлено:19:15 07-11-2006
codewarlock1101
А чего там не прорисовывается? Выделяю например что-нибудь (или изменяю лексер) - в строке состояния это показывается.

Добавлено:
mozers
Обзывай файл в инсталляторе не SciTE, а например SciTE_setup. А то имя файла (и его иконка) перекликается с самим исполняемым файлом SciTE.

Добавлено:
mozers
А чем ты компилировал SciTE.exe и с какими опциями ?
Чего-то пытаюсь компилить Visual Studio 2003 - файл получается 620 кб, а у тебя 452 кб (а SciLexer.dll вообще 788 кб против 330 кб твоих).
Как у тебя такой размер получился?
Автор: codewarlock1101, Отправлено:21:07 07-11-2006
unreal666
Попробуй это сделать при редактировании главного файла настроек
Автор: ALeXkRU, Отправлено:22:52 07-11-2006
unreal666

Цитата:
А чем ты компилировал SciTE.exe и с какими опциями ?
Чего-то пытаюсь компилить Visual Studio 2003 - файл получается 620 кб, а у тебя 452 кб (а SciLexer.dll вообще 788 кб против 330 кб твоих).
Как у тебя такой размер получился?

так, наверняка - этим
Автор: mozers, Отправлено:23:33 07-11-2006
codewarlock1101
Цитата:
Че-то намутили! Теперь статус бар не прорисовывается автоматически!
Ага. Есть такая ошибочка. Надо поправить SciTEGlobal_ToggleFold.lua [more]
Код:
-- Скрипт для автоматического сворачивания всех секций SciTEGlobal.properties
-- при его открытии или при первом переключении на его закладку
-- mozers™
-----------------------------------------------
local function ToggleFoldAll()
if props['fold.compess'] ~= '1' then
for i = 0,editor.LineCount do
if editor.FoldLevel[i] > SC_FOLDLEVELHEADERFLAG then
editor:MarkerAdd(i,1)
editor:ToggleFold(i)
end
end
props['fold.compess']='1'
end
end

-- Добавляем свой обработчик события OnOpen
local old_OnOpen = OnOpen
function OnOpen(file)
local result
if old_OnOpen then result = old_OnOpen(file) end
if props['FileNameExt'] == 'SciTEGlobal.properties' then
props['fold.compess'] = '0'
end
return result
end

-- Добавляем свой обработчик события OnUpdateUI
local old_OnUpdateUI = OnUpdateUI
function OnUpdateUI ()
local result
if old_OnUpdateUI then result = old_OnUpdateUI() end
if props['FileNameExt'] == 'SciTEGlobal.properties' then
if ToggleFoldAll() then return true end
end
return result
end
[/more]

unreal666
Цитата:
А чем ты компилировал SciTE.exe и с какими опциями ?
Поставил Microsoft Visual Studio .NET 2003 с опциями по умолчанию. И компилю SciTE с помощью этого батничка:
Код:
@echo off

set DevEnvDir=c:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE
SET VC=c:\Program Files\Microsoft Visual Studio .NET 2003
set MSVCDir=%VC%\VC7

set PATH=%DevEnvDir%;%MSVCDir%\BIN;%VC%\Common7\Tools;%VC%\Common7\Tools\bin\prerelease;%VC%\ ;Common7\Tools\bin;%PATH%;
set INCLUDE=%MSVCDir%\ATLMFC\INCLUDE;%MSVCDir%\INCLUDE;%MSVCDir%\PlatformSDK\include\prerelease;% MSVCDir%\PlatformSDK\include;
set LIB=%MSVCDir%\ATLMFC\LIB;%MSVCDir%\LIB;%MSVCDir%\PlatformSDK\lib\prerelease;%MSVCDir%\ PlatformSDK\lib;

cd scintilla\win32
nmake -f scintilla.mak
cd ..\..
cd scite\win32
nmake -f scite.mak
А то что размер такой маленький получается и для меня было приятным сюрпризом
В MinGW тоже, кстати, неплохо получается, только предупреждения сыплются непонятные...
Автор: unreal666, Отправлено:00:40 08-11-2006

Цитата:
Поставил Microsoft Visual Studio .NET 2003

Аналогично. Только после запуска твоего батника вылазит такая фигня:

Цитата:
Microsoft (R) Program Maintenance Utility Version 6.00.8168.0
Copyright (C) Microsoft Corp 1988-1998. All rights reserved.

    cl -Zi -TP -W4 -Zc:forScope -Zc:wchar_t -D_CRT_SECURE_NO_DEPRECATE=1 -O1 -MT -DNDEBUG -GL -I../include -I../src -c -Fo.\AutoComplete.obj ..\src\AutoComplete.cxx
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86
Copyright (C) Microsoft Corp 1984-1998. All rights reserved.

Command line error D2016 : '/Ze' and '/Za' command-line options are incompatible
NMAKE : fatal error U1077: 'cl' : return code '0x2'
Stop.

Т.е. чего-то с опциями компилятора. Только где они хранятся - хрен его знает.
Кстати, такой большой размер получился при компиляции через GUI (файлы проектов для VC - SciTE.dsp и SciLexer.dsp). Выставлял и оптимизация по размеру и по скорости. Один хрен - одинакового большого размера получаются.
Автор: IMPOMEZIA, Отправлено:00:58 08-11-2006
unreal666

Цитата:
Microsoft (R) Program Maintenance Utility Version 6.00.8168.0
Copyright (C) Microsoft Corp 1988-1998. All rights reserved.

и

Цитата:
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86
Copyright (C) Microsoft Corp 1984-1998. All rights reserved.

это говорит только об одном - для компиляции используется Microsoft Visual Studio 6.0 почему-то

Автор: unreal666, Отправлено:02:00 08-11-2006
IMPOMEZIA

Цитата:
это говорит только об одном - для компиляции используется Microsoft Visual Studio 6.0 почему-то

Спасибо за подсказку. Не обратил на это внимание.
Просто у меня стоит и Visual Studio 6 (точнее стоял - я его сейчас удалил).
А при копировании содержимого батника из поста в конце строк с SET вставились пробелы. Поэтому он их не находил и искал в путях из переменных окружения, а в них у меня как раз прописан Visual Studio 6.
Удалил 6-ку (можно было просто убрать пробелы в конце строк с SET ) и при попытке компиляции выдало, что файл nmake не является внутренней или внешней командой и я догадался, что что-то не так с путями в файле.
Убрал эти пробелы и все откомпилилось нормально.
Автор: codewarlock1101, Отправлено:11:01 08-11-2006
Если открыт один файл, то переключение шрифтов по Ctrl+F11 не работает.

В файле Common.lua находится функция CurrentWord, которая не используется ни каким из скриптов
Автор: mozers, Отправлено:11:15 08-11-2006
codewarlock1101
Знаю Я вот как исправить - нет (( Поглядите FontChanger.lua - может у кого и получится без применения тяжелой артиллерии...

CurrentWord - это так, прозапас
Автор: codewarlock1101, Отправлено:11:57 08-11-2006
mozers
Лови!

Код:

-- Смена текущих установок шрифта
-- C блеском заменяет Ctrl+F11.
-- Действует одновременно на все отрытые буфера
-- Можно задать любые комбинации шрифтов
-- mozers™ icq#256106175 (выполняя пожелание Moon_aka_Sun)

-- Для подключения добавьте в свой файл .properties наборы необходимых шрифтов (font.0.* и font.1.*)
------------------------------------------------
function FontChange()
if props["font.set"] ~= "1" then
props["font.base"] = props["font.1.base"]
props["font.small"] = props["font.1.small"]
props["font.comment"] = props["font.1.comment"]
props["font.set"] = "1"
else
props["font.base"] = props["font.0.base"]
props["font.small"] = props["font.0.small"]
props["font.comment"] = props["font.0.comment"]
props["font.set"] = "0"
end
editor.Zoom = editor.Zoom
end

-- Добавляем свой обработчик события, возникающего при вызове пункта меню "Use Monospaced Font"
local old_OnMenuCommand = OnMenuCommand
function OnMenuCommand (msg, source)
local result=true
if old_OnMenuCommand then result = old_OnMenuCommand(msg, source) end
if msg == 450 then --IDM_MONOFONT
FontChange()
end
return result
end


Тут реально приходится колдовать.... Попробуй поиграться с result..... мистика млин

Вообще предлагаю свою реализацию этого скрипта ( плюсы -- можно просто добавить еще несколько наборов шрифтов и они подцепятся без заморочек)


Код:

function FontChange()
if props["font.set"]=="" then props["font.set"]="0" end
local nxt_font=string.char(string.byte(props["font.set"])+1)
if props["font."..nxt_font..".base"]=="" then
nxt_font="0"
end
props["font.base"] = props["font."..nxt_font..".base"]
props["font.small"] = props["font."..nxt_font..".small"]
props["font.comment"] = props["font."..nxt_font..".comment"]
props["font.set"]=nxt_font
editor.Zoom = editor.Zoom
end

-- Добавляем свой обработчик события, возникающего при вызове пункта меню "Use Monospaced Font"
local old_OnMenuCommand = OnMenuCommand
function OnMenuCommand (msg, source)
local result=true
if old_OnMenuCommand then result = old_OnMenuCommand(msg, source) end
if msg == 450 then --IDM_MONOFONT
FontChange()
end
return result
end

Автор: mozers, Отправлено:13:10 08-11-2006
codewarlock1101
Эээ..., дарагой, ты - неправ.
Ты убрал return "" и поэтому скрипт возвращает управление Скайту. В результате выполняется не то, что задумано, а срабатывает стандартная команда IDM_MONOFONT
Автор: codewarlock1101, Отправлено:13:13 08-11-2006
mozers
Че-то не понял... Работает же!
Автор: mozers, Отправлено:16:40 08-11-2006
codewarlock1101
Ну мы поняли друг друга Объясню для остальных:
Скрипты, приведенные codewarlock1101 прекрасно работают будучи запущенными из меню Tools (тогда код "Добавляем свой обработчик события..." можно вообще из них убирать).
Но вот если их навешивать вместо стандартных событий (в данном случае вместо IDM_MONOFONT) то надо серьезно озадачиваться тем, что вернет скрипт по результату своей работы.
В данном конкретном случае (подмены события OnMenuCommand), если скрипт не будет возвращать пустую строку "" то после выполнения этого скрипта, выполнится еще до кучи и стандартная команда IDM_MONOFONT и изуродует результаты его работы

Автор: codewarlock1101, Отправлено:17:20 08-11-2006
mozers
А вот это уж точно работает как надо!!!! [[Тебе на заметку - return "" -- все же не причем ]]

Код:

-- Смена текущих установок шрифта
-- C блеском заменяет Ctrl+F11.
-- Действует одновременно на все отрытые буфера
-- Можно задать любые комбинации шрифтов
-- mozers™ icq#256106175 (выполняя пожелание Moon_aka_Sun)

-- Для подключения добавьте в свой файл .properties наборы необходимых шрифтов (font.0.* и font.1.*)
------------------------------------------------
local function FontChange()

if props["font.set"]=="" then props["font.set"]="0" end
local nxt_font=string.char(string.byte(props["font.set"])+1)
if props["font."..nxt_font..".base"]=="" then
nxt_font="0"
end
props["font.base"] = props["font."..nxt_font..".base"]
props["font.small"] = props["font."..nxt_font..".small"]
props["font.comment"] = props["font."..nxt_font..".comment"]
props["font.set"]=nxt_font

end

-- Добавляем свой обработчик события, возникающего при вызове пункта меню "Use Monospaced Font"
local enable_idm=true
local old_OnMenuCommand = OnMenuCommand
function OnMenuCommand (msg, source)
local result=false
if old_OnMenuCommand then result = old_OnMenuCommand(msg, source) end
if enable_idm==true and msg == 450 then --IDM_MONOFONT
FontChange()
enable_idm=false
scite.MenuCommand("IDM_MONOFONT")
enable_idm=true
end
return result
end


Автор: vladvro, Отправлено:17:43 08-11-2006
mozers,codewarlock1101
друзья мои, хватит народ вводить в заблуждение!
mozers-у я уже писал, теперь повторю для всех:
все обработчики кроме OnSendEditor на выходе ожидают булевское значение handled, и если оно равно true, то если есть дальнейшая обработка, то она не делается, причем nil, которое возвращается по умолчанию, приравнивается к false, в случае с OnSendEditor - на выходе ожидается текстовое значение, и если оно не NULL, то тогда прекращается дальнейшая обработка, причем нюанс нынешней реализации состоит в том, что в NULL превращается не только nil, но и булевские значения (false и true)!

Автор: codewarlock1101, Отправлено:17:50 08-11-2006
а теперь следующий косяк! - подсветка фона определенная для ключевых слов и выражений, не показывается сразу после открытия файла (например string.gsub и подобный сининьким выделяются). А нормально начинает прорисовыватсья только после действий (типа zoom +-, или monofont). Нахимичено в ReadOnly.lua -- отключаешь - и все нормально

Добавлено:
vladvro
Что-то доходит до меня как до жирафа.... Если можешь - дай пожалуйста объяснения на примере.
1) Что значит на "выходе ожидают"???
Есть код:
local old_OnOpen = OnOpen
function OnOpen(file)
local result
if old_OnOpen then result = old_OnOpen(file) end
if props['FileNameExt'] == 'SciTEGlobal.properties' then
props['fold.compess'] = '0'
end
return result
end

красным - вызывает предыдущий обработчик, верно? ну и как он реагирует на результат? Один фих - следующие строки сработают.... и этот же результат он вернет в обработчик, которы его так же, в свою очередь перегрузил.... И так же нифига result не повлияет на ход событий...
Лучше даже, если сможешь привести наглядный пример, и объясни плиз как работает перегрузка обработчиков
Автор: mozers, Отправлено:21:22 08-11-2006
codewarlock1101
Цитата:
А вот это уж точно работает как надо!!!!

Неа. Не работает. Ты бы хоть проверил перед публикацией...
Единственное, что действительно принимается - это идея с nxt_font. Вот - действительно рабочий и проверенный вариант: [more]
Код:
-- Смена текущих установок шрифта
-- C блеском заменяет Ctrl+F11.
-- Действует одновременно на все отрытые буфера, циклически переключая заданные наборы шрифтов
-- Можно задать любое количество комбинаций шрифтов
-- mozers, codewarlock1101

-- Для подключения добавьте в свой файл .properties наборы необходимых шрифтов (font.0.*, font.1.*, font.2.*,...)
------------------------------------------------
local function FontChange()
if props["font.set"]=="" then
props["font.set"]="0"
end
local nxt_font=string.char(string.byte(props["font.set"])+1)
if props["font."..nxt_font..".base"]=="" then
nxt_font="0"
end
props["font.base"] = props["font."..nxt_font..".base"]
props["font.small"] = props["font."..nxt_font..".small"]
props["font.comment"] = props["font."..nxt_font..".comment"]
props["font.set"]=nxt_font
scite.MenuCommand("IDM_PREVFILE") scite.MenuCommand("IDM_NEXTFILE") -- used for updates current buffer
return true
end

-- Добавляем свой обработчик события, возникающего при вызове пункта меню "Use Monospaced Font"
local old_OnMenuCommand = OnMenuCommand
function OnMenuCommand (msg, source)
local result
if old_OnMenuCommand then result = old_OnMenuCommand(msg, source) end
if msg == 450 then --IDM_MONOFONT
if FontChange() then return true end
end
return result
end
[/more]
Цитата:
Тебе на заметку - return "" -- все же не причем
А ты его закомментируй и почуствуй, наконец, разницу. Кстати, я заменил return "" на return true - это же не OnSendEditor - тут vladvro - прав, хотя и с return "", кстати, нормально работало. Почему? - не моего ума дело
Единственный скрытый баг скрипта - выделенная строчка (она сработает если открыто более 1 файла). Но чем ее заменить - не знаю

vladvro
Изложил я, кстати, твои же выводы, только своими словами. Где я наврал?
Ну объясняй сам, если не нравится Только ПОНЯТНО объясняй

codewarlock1101
Цитата:
Нахимичено в ReadOnly.lua
Точно - "нахимичено". Во первых - я не знаю как правильно покрасить фон страницы, поэтому крашу так:
Код:
for i = 0, 32 do
editor.StyleBack = color
end
Если кто знает как это делать правильно - welcome

Добавлено:
А во-вторых нашел свою багу и прибил [more]
Код:
-- Наглядная установка/снятие режима "только для чтения"
-- индикация текущего режима буфера в строке состояния и цветом фона
-- VladVRO, mozers

-- Подключение:
-- В файл SciTEStartup.lua добавьте строку:
-- require (props["SciteDefaultHome"].."\\tools\\ReadOnly.lua")
-- включите scite.readonly в статусную строку:
-- statusbar.text.1=Line:$(LineNumber) Col:$(ColumnNumber) [$(scite.readonly)]
-- задайте в файле .properties цвет фона в режиме "только для чтения":
-- style.back.readonly=#F2F2F1
------------------------------------------------

-- Функция преобразования цвета из RGB в win
local function encodeRGB(color)
if string.sub(color,1,1)=="#" and string.len(color)>6 then
return tonumber(string.sub(color,6,7)..string.sub(color,4,5)..string.sub(color,2,3), 16)
else
return color
end
end

local function SetViewMode()
if props["style.back.readonly"]~='' then
local color = encodeRGB(props["style.back.readonly"])
editor.StyleBack[0] = color
editor.StyleBack[2] = color
editor.StyleBack[4] = color
editor.StyleBack[5] = color
editor.StyleBack[6] = color
editor.StyleBack[10] = color
editor.StyleBack[11] = color
editor.StyleBack[32] = color
end
end

local function SetEditMode()
if editor.ReadOnly then
local s,e,back = string.find(props["style.*.32"], "back#%x%x%x%x%x%x)")
if back~=nil then
local color = encodeRGB(back)
editor.StyleBack[0] = color
editor.StyleBack[2] = color
editor.StyleBack[4] = color
editor.StyleBack[5] = color
editor.StyleBack[6] = color
editor.StyleBack[10] = color
editor.StyleBack[11] = color
editor.StyleBack[32] = color
end
end
end

local function SetReadOnly(ro)
if ro then
SetViewMode()
props["scite.readonly"] = "VIEW"
else
SetEditMode()
props["scite.readonly"] = "EDIT"
end
scite.UpdateStatusBar()
return true
end

-- Добавляем свой обработчик события OnSwitchFile
local old_OnSwitchFile = OnSwitchFile
function OnSwitchFile(file)
local result
if old_OnSwitchFile then result = old_OnSwitchFile(file) end
if SetReadOnly(editor.ReadOnly) then return true end
return result
end

-- Добавляем свой обработчик события OnOpen
local old_OnOpen = OnOpen
function OnOpen(file)
local result
if old_OnOpen then result = old_OnOpen(file) end
if SetReadOnly(editor.ReadOnly) then return true end
return result
end

-- Добавляем свой обработчик события, возникающего при вызове пункта меню "Read-Only"
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_SETREADONLY then
if SetReadOnly(wp~=0) then return true end
end
return result
end
[/more]
Автор: unreal666, Отправлено:02:33 09-11-2006
mozers

Цитата:
А во-вторых нашел свою багу и прибил

Слава богу. А то у меня с твоим предыдущим вариантом в nncron-файлах подсветка синтаксиса совсем кривая была (не работала подсветка фона для конца и начал задач).



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