Ru-Board.club
← Вернуться в раздел «Программы»

» SciTE - Open Source Text Editor for Windows & Linux

Автор: mozers
Дата сообщения: 26.03.2007 15:49
dB6
Не въехал я в смысл твоего предложения, но код исправил в точном соответствии.
Откомпилилось безо всяких предупреждений
Автор: mozers
Дата сообщения: 26.03.2007 21:42
ALL
Маленькое пожелание на тему новой функции os.exec от Midas:
Нельзя ли добавить опцию WaitOnReturn (т.е. ждать окончания выполнения или нет) ?
А если бы os.exec возвращала код завершения запущенного процесса, то это было бы вообще идеально

Корректное решение для записи ReadOnly файлов, я так понял, еще не найдено?
Автор: vladvro
Дата сообщения: 27.03.2007 13:52
Благодаря замечаниям и предложениям mozers вышла новая версия скрипта по раскраске кода для форума подробнее...

новшества:
- блок код дополняется заголовком с именем файла и номером строки (если был выделен кусок кода), и подписью внизу блока со ссылкой на исходник в форуме,
- стили "строка" и "комментарий" дополнительно обрамляются тегом отмены формата, для экранирования возможных вхождений в них тегов формата,
- символы табуляции заменяются на пробелы.
Автор: mimir
Дата сообщения: 27.03.2007 16:43

Цитата:
Маленькое пожелание на тему новой функции os.exec от Midas:
Нельзя ли добавить опцию WaitOnReturn (т.е. ждать окончания выполнения или нет) ?
А если бы os.exec возвращала код завершения запущенного процесса, то это было бы вообще идеально


Вот сделал через CreateProcess ибо WinExec устарела ( так говорит MSDN ).
Все тонкости еще сам не разобрал, но на сколько я понял для запуска команд надо явно указывать cmd.exe (bat можно и сразу).
И если процесс не завершился то тоже не ясно какой код должен вернуться.

[more=подробнее...][/color] строка 1
Код: static int l_CreateProcess(lua_State *L){
static const MAX_CMD = 1024;
BOOL RetCode = 0;
int DoWait = 0;
int top = lua_gettop(L);
char *CmdLine = 0;
STARTUPINFO si;
PROCESS_INFORMATION pi;
DWORD exit_code = 0;[no]//Код завершения процесса
[/no]

if(top == 0){
lua_pushnil(L);
lua_pushstring(L,[no]"No parameters!"[/no]);
return 2;
}

if( !lua_isstring(L,1) ){
lua_pushnil(L);
lua_pushstring(L,[no]"First param must be a string!"[/no]);
return 2;
}
if( top > 1 ){
if( !lua_isboolean(L,2) ){
lua_pushnil(L);
lua_pushstring(L,[no]"Second param must be a boolean!"[/no]);
return 2;
}
DoWait = lua_toboolean(L, 2);
}

CmdLine = malloc(MAX_CMD * sizeof(char));
ZeroMemory( CmdLine , sizeof(MAX_CMD * sizeof(char)) );
strncpy(CmdLine,luaL_checkstring(L,1),MAX_CMD-1);

ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );

[no]// Start the child process.
[/no]
RetCode = CreateProcess(
NULL, [no]// No module name (use command line)
[/no]
CmdLine, [no]// Command line
[/no]
NULL, [no]// Process handle not inheritable
[/no]
NULL, [no]// Thread handle not inheritable
[/no]
FALSE, [no]// Set handle inheritance to FALSE
[/no]
0, [no]// No creation flags
[/no]
NULL, [no]// Use parent's environment block
[/no]
NULL, [no]// Use parent's starting directory
[/no]
&si, [no]// Pointer to STARTUPINFO structure
[/no]
&pi [no]// Pointer to PROCESS_INFORMATION structure
[/no]
);

if( ! RetCode ){
lua_pushnil(L);
push_lasterr(L,[no]"\"CreateProcess\""[/no]);
free(CmdLine);
return 2;
}
CloseHandle( pi.hThread );
if(DoWait){
[no]// Wait until child process exits.
[/no]
WaitForSingleObject( pi.hProcess, INFINITE );
}
free(CmdLine);

GetExitCodeProcess(pi.hProcess,&exit_code);
[no]// Close process and thread handles.
[/no]
CloseHandle( pi.hProcess );

lua_pushnumber( L, exit_code );
return 1;
}
Автор: vladvro
Дата сообщения: 28.03.2007 10:14
Очередное обновление скрипта по раскраске кода для форума подробнее...

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

добавлено:
версия 1.4:
- добавлено корректное экранирование всех тегов формата для стилей "строка" и "комментарий"

Добавлено:
mimir

Цитата:
Вот сделал через CreateProcess ...

гуд, токо далеко не все понятно с этой функцией:
если пробуем вызвать os.exec("notepad.exe",true) возвращает 0, в MSDN сказано что это ошибка, пробуем получить сообщение об ошибке:
liolib.c строка 672
Код: if( !exit_code ){
lua_pushnil(L);
push_lasterr(L,[no]"\"GetExitCodeProcess\""[/no]);
free(CmdLine);
return 2;
}
Автор: mimir
Дата сообщения: 28.03.2007 14:54
Не надо путать код возврата процесса и код возврата функции.
Процесс может вернуть что угодно (иногда это даже документируют).
Например вызвал программу для отсылки почты, а она в случаи успех завершается с кодом 0, а если например сеть не доступна, то с кодом 1 , и т.д. И GetLastError тут совершенно не причем. Он возвращает ошибки произошедшие в ФУНКЦИИ ТЕКУЩЕГО ПОТОКА.
Автор: vladvro
Дата сообщения: 28.03.2007 16:00
mimir
Цитата:
Не надо путать код возврата процесса и код возврата функции.
а, точно... попутал
Автор: vladvro
Дата сообщения: 30.03.2007 10:15
небольшое обновление скрипта по раскраске кода для форума подробнее...

версия 1.4.1:
- если выделение содержит весь текст, то номер строки в заголовке не указывается
- при отображении куска кода убрана пустая строка в конце блока
Автор: Cicatriz
Дата сообщения: 30.03.2007 20:25
привет пользуюсь рубордовской версией и есть одна не большая проблемка, когда делаю экспорт в HTML то линии со словами получаются засвечены белыми полосами что очень бесит, кто-то знает как это убрать?

вот тут пример <<<<<<<<<<Ссылка>>>>>>>>>
Автор: 8AleX8
Дата сообщения: 31.03.2007 10:52
SciTE 1.73
http://scintilla.sourceforge.net/ScintillaHistory.html
Автор: vladvro
Дата сообщения: 31.03.2007 13:53
обновил скрипт для макросов [more]
macro_support.lua
Код: [no]--[[[/no]
[no]Macros support for SciTE[/no]
[no]Version 2.0[/no]
[no]Author: VladVRO[/no]
[no]---------------------------------------------------[/no]
[no]Description:[/no]
[no] macros recording, storing and playing support[/no]
[no] (Поддержка записи и воспроизведения макросов)[/no]

[no]Using:[/no]
[no] add next line into SciTEGlobal.properties:[/no]
[no] ext.lua.startup.script=$(SciteDefaultHome)\macro_support.lua[/no]
[no] or if you already have startup script than add next line in it:[/no]
[no] require ("macro_support.lua")[/no]

[no] and next lines into SciTEUser.properties:[/no]
[no] command.name.40.*=Macro Load From Selection[/no]
[no] command.40.*=MacroLoadFromSelection[/no]
[no] command.mode.40.*=subsystem:lua,savebefore:no[/no]

[no] command.name.41.*=Macro Fill To Buffer[/no]
[no] command.41.*=MacroFillToBuffer[/no]
[no] command.mode.41.*=subsystem:lua,savebefore:no[/no]

[no] command.name.42.*=Macro Fill To Buffer (LUA code)[/no]
[no] command.42.*=MacroFillToBuffer LUA[/no]
[no] command.mode.42.*=subsystem:lua,savebefore:no[/no]
[no]---------------------------------------------------[/no]
[no]]][/no]

scite.Perform([no]"macroenable:1"[/no])

[no]-- global tables[/no]
local glb_macro_buf = {}
local glb_macros_table = {}
local glb_macros_name_table = {}

[no]-- position in list for new recorded macro[/no]
[no]-- -1 - last position[/no]
[no]-- default = 1[/no]
local new_position = props[[no]'macro.new.record.position'[/no]]
if new_position == [no]""[/no] then
new_position = 1
else
new_position = tonumber(new_position)
end

[no]-- path to file with macros[/no]
macro_file = props[[no]'macro.file.path'[/no]]
if macro_file == [no]""[/no] then
macro_file = props[[no]'scite.userhome'[/no]]
if macro_file == [no]""[/no] then macro_file = props[[no]'SciteDefaultHome'[/no]] end
macro_file = macro_file..[no]"\\SciTE.macro"[/no]
end


function OnMacro(cmd, msg)
if cmd == [no]"macro:run"[/no] then
if msg == [no]"<clean list>"[/no] then
scite.Perform([no]"currentmacro:"[/no])
while table.getn(glb_macros_name_table) > 0 do
glb_macros_table[glb_macros_name_table[1]] = nil
table.remove(glb_macros_name_table,1)
end
else
local macro = glb_macros_table[msg]
if macro then
editor:BeginUndoAction()
for _,val in macro do
local c,lp,wp = unpack(val)
if IFACE_FUNCTIONS_USE_WP[c] then
scite.SendEditor(c,wp,lp)
else
scite.SendEditor(c,lp,0)
end
end
editor:EndUndoAction()
end
end
elseif cmd == [no]"macro:record"[/no] then
for c,wp,_,lp in string.gfind(msg, [no]"(%d+);(%d+);(%d+);(.*)"[/no]) do
table.insert(glb_macro_buf, {tonumber(c),lp,wp})
end
elseif cmd == [no]"macro:startrecord"[/no] then
table_clear(glb_macro_buf)
[no]-- visualization[/no]
if props[[no]'style.*.33.normal'[/no]] == [no]""[/no] then props[[no]'style.*.33.normal'[/no]] = props[[no]'style.*.33'[/no]] end
if props[[no]'macro.recording.numfield.style'[/no]] ~= [no]""[/no] then
props[[no]"style.*.33"[/no]] = props[[no]'macro.recording.numfield.style'[/no]]
scite.Perform([no]"reloadproperties:"[/no])
end
elseif cmd == [no]"macro:stoprecord"[/no] then
local name = MacroAddToList(glb_macro_buf, nil, new_position)
scite.Perform([no]"currentmacro:"[/no]..ifnil(name,[no]""[/no]))
table_clear(glb_macro_buf)
[no]-- visualization[/no]
if props[[no]'macro.recording.numfield.style'[/no]] ~= [no]""[/no] then
props[[no]'style.*.33'[/no]] = props[[no]'style.*.33.normal'[/no]]
scite.Perform([no]"reloadproperties:"[/no])
end
[no]-- autosave[/no]
if props[[no]'macro.autosave'[/no]] == [no]"1"[/no] then
MacroSaveToFile(macro_file)
end
elseif cmd == [no]"macro:getlist"[/no] then
if table.getn(glb_macros_name_table) > 0 then
local list = [no]""[/no]
for _,name in glb_macros_name_table do
list = list..name..[no]";"[/no]
end
list = list..[no]"<clean list>"[/no]
local old_sep = editor.AutoCSeparator
editor.AutoCSeparator = string.byte([no]';'[/no])
scite.Perform([no]"macrolist:"[/no]..list)
editor.AutoCSeparator = old_sep
else
print([no]"> no macros yet!"[/no])
end
end
end

function MacroAddToList(macro, name, pos)
if table.getn(macro) > 0 then
if not name then
local i = table.getn(glb_macros_name_table)
repeat
i = i + 1
name = [no]"record"[/no]..i
until glb_macros_table[name] == nil or i > 9999
end
if not glb_macros_table[name] or table.getn(glb_macros_name_table) == 0 then
if pos then
table.insert(glb_macros_name_table, pos, name)
else
table.insert(glb_macros_name_table, name)
end
end
glb_macros_table[name] = table_icopy({},macro)
end
return name
end

local function macro_to_string(mode)
local text = [no]""[/no]
local iface_num2name = {}
for name,num in IFACE_FUNCTIONS do
iface_num2name[num] = name
end
if mode == [no]"LUA"[/no] then
mode = true
else
mode = false
end
for _,name in glb_macros_name_table do
macro = glb_macros_table[name]
if macro then
text = text..[no]"\n--- "[/no]..name..[no]" ---\n"[/no]
for _,val in macro do
local c,lp,wp = unpack(val)
if string.len(lp) > 0 then
for _,v in MACRO_CONVERT_CHARS do
lp = string.gsub(lp,unpack(v))
end
lp = [no]"'"[/no]..lp..[no]"'"[/no]
end
if mode then
if IFACE_FUNCTIONS_USE_WP[c] then
if string.len(lp) > 0 then
wp = wp..[no]", "[/no]
end
else
wp = [no]""[/no]
end
text = text..[no]"editor:"[/no]..ifnil(iface_num2name[c],c)..[no]"("[/no]..wp..lp..[no]")\n"[/no]
else
text = text..ifnil(iface_num2name[c],c)..[no]";"[/no]..wp..[no]";"[/no]..lp..[no]"\n"[/no]
end
end
end
end
return text
end

local function macro_load(text)
local macro = {}
local name = nil
local text = text..[no]"\n"[/no]
for str in string.gfind(text, [no]"([^\n]*)[\n]"[/no]) do
if string.sub(str, 1, 3) == [no]"---"[/no] then
MacroAddToList(macro, name)
macro = {}
name = nil
for a in string.gfind(str, [no]"([%w_]+)"[/no]) do
name = a; break;
end
else
str = string.gsub(str, [no]"\r"[/no], [no]""[/no])
for fnc,wp,lp in string.gfind(str, [no]"(%w+);(%d+);(.*)"[/no]) do
local c = IFACE_FUNCTIONS[fnc]
if c then
if string.len(lp) > 0 then
lp = dostring([no]"return "[/no]..lp)
end
table.insert(macro, {c,lp,wp})
else
print([no]"> undefined function "[/no]..fnc)
return false
end
end
end
end
MacroAddToList(macro, name)
end


MACRO_CONVERT_CHARS = {
{[no]"\\"[/no], [no]"\\\\"[/no]},
{[no]"\'"[/no], [no]"\\\'"[/no]},
{[no]"\r"[/no], [no]"\\r"[/no]},
{[no]"\n"[/no], [no]"\\n"[/no]},
}

IFACE_FUNCTIONS = {
[[no]"AddText"[/no]] = 2001,
[[no]"AppendText"[/no]] = 2282,
[[no]"BackTab"[/no]] = 2328,
[[no]"Cancel"[/no]] = 2325,
[[no]"CharLeft"[/no]] = 2304,
[[no]"CharLeftExtend"[/no]] = 2305,
[[no]"CharLeftRectExtend"[/no]] = 2428,
[[no]"CharRight"[/no]] = 2306,
[[no]"CharRightExtend"[/no]] = 2307,
[[no]"CharRightRectExtend"[/no]] = 2429,
[[no]"Clear"[/no]] = 2180,
[[no]"ClearAll"[/no]] = 2004,
[[no]"Copy"[/no]] = 2178,
[[no]"CopyRange"[/no]] = 2419,
[[no]"Cut"[/no]] = 2177,
[[no]"DelLineLeft"[/no]] = 2395,
[[no]"DelLineRight"[/no]] = 2396,
[[no]"DelWordLeft"[/no]] = 2335,
[[no]"DelWordRight"[/no]] = 2336,
[[no]"DeleteBack"[/no]] = 2326,
[[no]"DeleteBackNotLine"[/no]] = 2344,
[[no]"DocumentEnd"[/no]] = 2318,
[[no]"DocumentEndExtend"[/no]] = 2319,
[[no]"DocumentStart"[/no]] = 2316,
[[no]"DocumentStartExtend"[/no]] = 2317,
[[no]"EditToggleOvertype"[/no]] = 2324,
[[no]"FormFeed"[/no]] = 2330,
[[no]"GotoLine"[/no]] = 2024,
[[no]"GotoPos"[/no]] = 2025,
[[no]"Home"[/no]] = 2312,
[[no]"HomeDisplay"[/no]] = 2345,
[[no]"HomeDisplayExtend"[/no]] = 2346,
[[no]"HomeExtend"[/no]] = 2313,
[[no]"HomeRectExtend"[/no]] = 2430,
[[no]"HomeWrap"[/no]] = 2349,
[[no]"HomeWrapExtend"[/no]] = 2450,
[[no]"InsertText"[/no]] = 2003,
[[no]"LineCopy"[/no]] = 2455,
[[no]"LineCut"[/no]] = 2337,
[[no]"LineDelete"[/no]] = 2338,
[[no]"LineDown"[/no]] = 2300,
[[no]"LineDownExtend"[/no]] = 2301,
[[no]"LineDownRectExtend"[/no]] = 2426,
[[no]"LineDuplicate"[/no]] = 2404,
[[no]"LineEnd"[/no]] = 2314,
[[no]"LineEndDisplay"[/no]] = 2347,
[[no]"LineEndDisplayExtend"[/no]] = 2348,
[[no]"LineEndExtend"[/no]] = 2315,
[[no]"LineEndRectExtend"[/no]] = 2432,
[[no]"LineEndWrap"[/no]] = 2451,
[[no]"LineEndWrapExtend"[/no]] = 2452,
[[no]"LineScrollDown"[/no]] = 2342,
[[no]"LineScrollUp"[/no]] = 2343,
[[no]"LineTranspose"[/no]] = 2339,
[[no]"LineUp"[/no]] = 2302,
[[no]"LineUpExtend"[/no]] = 2303,
[[no]"LineUpRectExtend"[/no]] = 2427,
[[no]"LinesJoin"[/no]] = 2288,
[[no]"LinesSplit"[/no]] = 2289,
[[no]"LoadLexerLibrary"[/no]] = 4007,
[[no]"LowerCase"[/no]] = 2340,
[[no]"MarkerAdd"[/no]] = 2043,
[[no]"MarkerAddSet"[/no]] = 2466,
[[no]"MarkerDefine"[/no]] = 2040,
[[no]"MarkerDefinePixmap"[/no]] = 2049,
[[no]"MarkerDelete"[/no]] = 2044,
[[no]"MarkerDeleteAll"[/no]] = 2045,
[[no]"MarkerDeleteHandle"[/no]] = 2018,
[[no]"MarkerGet"[/no]] = 2046,
[[no]"MarkerLineFromHandle"[/no]] = 2017,
[[no]"MarkerNext"[/no]] = 2047,
[[no]"MarkerPrevious"[/no]] = 2048,
[[no]"MoveCaretInsideView"[/no]] = 2401,
[[no]"NewLine"[/no]] = 2329,
[[no]"Null"[/no]] = 2172,
[[no]"PageDown"[/no]] = 2322,
[[no]"PageDownExtend"[/no]] = 2323,
[[no]"PageDownRectExtend"[/no]] = 2434,
[[no]"PageUp"[/no]] = 2320,
[[no]"PageUpExtend"[/no]] = 2321,
[[no]"PageUpRectExtend"[/no]] = 2433,
[[no]"ParaDown"[/no]] = 2413,
[[no]"ParaDownExtend"[/no]] = 2414,
[[no]"ParaUp"[/no]] = 2415,
[[no]"ParaUpExtend"[/no]] = 2416,
[[no]"Paste"[/no]] = 2179,
[[no]"ReplaceSel"[/no]] = 2170,
[[no]"ReplaceTarget"[/no]] = 2194,
[[no]"ReplaceTargetRE"[/no]] = 2195,
[[no]"ScrollCaret"[/no]] = 2169,
[[no]"SearchAnchor"[/no]] = 2366,
[[no]"SearchInTarget"[/no]] = 2197,
[[no]"SearchNext"[/no]] = 2367,
[[no]"SearchPrev"[/no]] = 2368,
[[no]"SelectAll"[/no]] = 2013,
[[no]"SelectionDuplicate"[/no]] = 2469,
[[no]"SetCharsDefault"[/no]] = 2444,
[[no]"SetSavePoint"[/no]] = 2014,
[[no]"SetSel"[/no]] = 2160,
[[no]"SetText"[/no]] = 2181,
[[no]"StutteredPageDown"[/no]] = 2437,
[[no]"StutteredPageDownExtend"[/no]] = 2438,
[[no]"StutteredPageUp"[/no]] = 2435,
[[no]"StutteredPageUpExtend"[/no]] = 2436,
[[no]"Tab"[/no]] = 2327,
[[no]"TargetFromSelection"[/no]] = 2287,
[[no]"UpperCase"[/no]] = 2341,
[[no]"VCHome"[/no]] = 2331,
[[no]"VCHomeExtend"[/no]] = 2332,
[[no]"VCHomeRectExtend"[/no]] = 2431,
[[no]"VCHomeWrap"[/no]] = 2453,
[[no]"VCHomeWrapExtend"[/no]] = 2454,
[[no]"WordLeft"[/no]] = 2308,
[[no]"WordLeftEnd"[/no]] = 2439,
[[no]"WordLeftEndExtend"[/no]] = 2440,
[[no]"WordLeftExtend"[/no]] = 2309,
[[no]"WordPartLeft"[/no]] = 2390,
[[no]"WordPartLeftExtend"[/no]] = 2391,
[[no]"WordPartRight"[/no]] = 2392,
[[no]"WordPartRightExtend"[/no]] = 2393,
[[no]"WordRight"[/no]] = 2310,
[[no]"WordRightEnd"[/no]] = 2441,
[[no]"WordRightEndExtend"[/no]] = 2442,
[[no]"WordRightExtend"[/no]] = 2311,
[[no]"WordStartPosition"[/no]] = 2266,
}

IFACE_FUNCTIONS_USE_WP = {
[IFACE_FUNCTIONS[[no]"CopyRange"[/no]]] = true,
[IFACE_FUNCTIONS[[no]"GotoLine"[/no]]] = true,
[IFACE_FUNCTIONS[[no]"GotoPos"[/no]]] = true,
[IFACE_FUNCTIONS[[no]"InsertText"[/no]]] = true,
[IFACE_FUNCTIONS[[no]"LinesSplit"[/no]]] = true,
[IFACE_FUNCTIONS[[no]"MarkerAdd"[/no]]] = true,
[IFACE_FUNCTIONS[[no]"MarkerAddSet"[/no]]] = true,
[IFACE_FUNCTIONS[[no]"MarkerDefine"[/no]]] = true,
[IFACE_FUNCTIONS[[no]"MarkerDefinePixmap"[/no]]] = true,
[IFACE_FUNCTIONS[[no]"MarkerDelete"[/no]]] = true,
[IFACE_FUNCTIONS[[no]"MarkerDeleteAll"[/no]]] = true,
[IFACE_FUNCTIONS[[no]"MarkerDeleteHandle"[/no]]] = true,
[IFACE_FUNCTIONS[[no]"MarkerGet"[/no]]] = true,
[IFACE_FUNCTIONS[[no]"MarkerLineFromHandle"[/no]]] = true,
[IFACE_FUNCTIONS[[no]"MarkerNext"[/no]]] = true,
[IFACE_FUNCTIONS[[no]"MarkerPrevious"[/no]]] = true,
[IFACE_FUNCTIONS[[no]"SearchNext"[/no]]] = true,
[IFACE_FUNCTIONS[[no]"SearchPrev"[/no]]] = true,
[IFACE_FUNCTIONS[[no]"SetSel"[/no]]] = true,
}


[no]----------------------------------------------------------[/no]
[no]-- io functions[/no]

function MacroFillToBuffer(mode)
editor:append(macro_to_string(mode))
end

function MacroLoadFromSelection()
macro_load(editor:GetSelText())
[no]-- autosave[/no]
if props[[no]'macro.autosave'[/no]] == [no]"1"[/no] then
MacroSaveToFile(macro_file)
end
end

function MacroLoadFromFile(filename)
local fl = io.input(filename)
fl:seek([no]"set"[/no])
macro_load(fl:read([no]"*a"[/no]))
end

function MacroSaveToFile(filename)
io.output(filename)
io.write(macro_to_string())
io.close()
end


[no]----------------------------------------------------------[/no]
[no]-- common functions[/no]

function table_clear(tbl)
while table.getn(tbl) > 0 do table.remove(tbl) end
end

function table_icopy(tbl,from_tbl)
for _,v in from_tbl do table.insert(tbl,v) end
return tbl
end

function ifnil(Val, defVal)
if (Val == nil) then
return defVal;
else
return Val;
end
end


[no]----------------------------------------------------------[/no]
[no]-- load macros at startup[/no]
if props[[no]'macro.load.on.startup'[/no]] == [no]"1"[/no] then
MacroLoadFromFile(macro_file)
end
Автор: Cicatriz
Дата сообщения: 31.03.2007 15:18
vladvro
всё наладил, сорри проблемы были,смотри
http://85.136.161.84:31337/exmp.html
Автор: Sanc4eZ
Дата сообщения: 31.03.2007 19:36
Несколько вопросов:

1. Где редактируются схемы подсветки (в частности PHP) ?
На дефолтных невозможно работать.
Может кто подлиться своими схемами схемами ?!

2. Как заставить SCITE открываться развернутым на весь экран ?
Автор: iglezz
Дата сообщения: 31.03.2007 22:48
Sanc4eZ
1. подсветка PHP содержится в html_.properties
2. необходимо изменить или добавить в SciTEGlobal.properties/SciTEUser.properties:
Код: # Ширина и высота окна (в полный экран=-1)
position.width=-1
position.height=-1
Автор: vladvro
Дата сообщения: 02.04.2007 08:55
Cicatriz
проблема в дефолтных значениях зашитых в редакторе, решение:
меняем
SciTEProps.cxx строка 358
Код: StyleDefinition::StyleDefinition(const char *definition) :
size(0), fore([no]"#000000"[/no]), back([no]"#FFFFFF"[/no]),
Автор: Cicatriz
Дата сообщения: 02.04.2007 09:51
vladvro
чем мне его потом скомпилить, и куда всунуть? что-то я потерялся
Автор: vladvro
Дата сообщения: 02.04.2007 09:54
обновил скрипт для макросов [more]
macro_support.lua
Код: [no]--[[[/no]
[no]Macros support for SciTE[/no]
[no]Version 2.0.1[/no]
[no]Author: VladVRO[/no]
[no]---------------------------------------------------[/no]
[no]Description:[/no]
[no] macros recording, storing and playing support[/no]
[no] (Поддержка записи и воспроизведения макросов)[/no]

[no]Using:[/no]
[no] add next line into SciTEGlobal.properties:[/no]
[no] ext.lua.startup.script=$(SciteDefaultHome)\macro_support.lua[/no]
[no] or if you already have startup script than add next line in it:[/no]
[no] require ("macro_support.lua")[/no]

[no] and next lines into SciTEUser.properties:[/no]
[no] command.name.40.*=Macro Load From Selection[/no]
[no] command.40.*=MacroLoadFromSelection[/no]
[no] command.mode.40.*=subsystem:lua,savebefore:no[/no]

[no] command.name.41.*=Macro Fill To Buffer[/no]
[no] command.41.*=MacroFillToBuffer[/no]
[no] command.mode.41.*=subsystem:lua,savebefore:no[/no]

[no] command.name.42.*=Macro Fill To Buffer (LUA code)[/no]
[no] command.42.*=MacroFillToBuffer LUA[/no]
[no] command.mode.42.*=subsystem:lua,savebefore:no[/no]
[no]---------------------------------------------------[/no]
[no]]][/no]

scite.Perform([no]"macroenable:1"[/no])

[no]-- global tables[/no]
local glb_macro_buf = {}
local glb_macros_table = {}
local glb_macros_name_table = {}

[no]-- position in list for new recorded macro[/no]
[no]-- -1 - last position[/no]
[no]-- default = 1[/no]
local new_position = props[[no]'macro.new.record.position'[/no]]
if new_position == [no]""[/no] then
new_position = 1
else
new_position = tonumber(new_position)
end

[no]-- path to file with macros[/no]
macro_file = props[[no]'macro.file.path'[/no]]
if macro_file == [no]""[/no] then
macro_file = props[[no]'scite.userhome'[/no]]
if macro_file == [no]""[/no] then macro_file = props[[no]'SciteDefaultHome'[/no]] end
macro_file = macro_file..[no]"\\SciTE.macro"[/no]
end


function OnMacro(cmd, msg)
if cmd == [no]"macro:run"[/no] then
if msg == [no]"<clean list>"[/no] then
scite.Perform([no]"currentmacro:"[/no])
while table.getn(glb_macros_name_table) > 0 do
glb_macros_table[glb_macros_name_table[1]] = nil
table.remove(glb_macros_name_table,1)
end
else
local macro = glb_macros_table[msg]
if macro then
editor:BeginUndoAction()
for _,val in macro do
local c,lp,wp = unpack(val)
if IFACE_FUNCTIONS_USE_WP[c] then
scite.SendEditor(c,wp,lp)
else
scite.SendEditor(c,lp,0)
end
end
editor:EndUndoAction()
end
end
elseif cmd == [no]"macro:record"[/no] then
for c,wp,_,lp in string.gfind(msg, [no]"(%d+);(%d+);(%d+);(.*)"[/no]) do
table.insert(glb_macro_buf, {tonumber(c),lp,wp})
end
elseif cmd == [no]"macro:startrecord"[/no] then
table_clear(glb_macro_buf)
[no]-- visualization[/no]
if props[[no]'style.*.33.normal'[/no]] == [no]""[/no] then props[[no]'style.*.33.normal'[/no]] = props[[no]'style.*.33'[/no]] end
if props[[no]'macro.recording.numfield.style'[/no]] ~= [no]""[/no] then
props[[no]"style.*.33"[/no]] = props[[no]'macro.recording.numfield.style'[/no]]
scite.Perform([no]"reloadproperties:"[/no])
end
elseif cmd == [no]"macro:stoprecord"[/no] then
local name = MacroAddToList(glb_macro_buf, nil, new_position)
scite.Perform([no]"currentmacro:"[/no]..ifnil(name,[no]""[/no]))
table_clear(glb_macro_buf)
[no]-- visualization[/no]
if props[[no]'macro.recording.numfield.style'[/no]] ~= [no]""[/no] then
props[[no]'style.*.33'[/no]] = props[[no]'style.*.33.normal'[/no]]
scite.Perform([no]"reloadproperties:"[/no])
end
[no]-- autosave[/no]
if props[[no]'macro.autosave'[/no]] == [no]"1"[/no] then
MacroSaveToFile(macro_file)
end
elseif cmd == [no]"macro:getlist"[/no] then
if table.getn(glb_macros_name_table) > 0 then
local list = [no]""[/no]
for _,name in glb_macros_name_table do
list = list..name..[no]";"[/no]
end
list = list..[no]"<clean list>"[/no]
local old_sep = editor.AutoCSeparator
editor.AutoCSeparator = string.byte([no]';'[/no])
scite.Perform([no]"macrolist:"[/no]..list)
editor.AutoCSeparator = old_sep
else
print([no]"> no macros yet!"[/no])
end
end
end

function MacroAddToList(macro, name, pos)
if table.getn(macro) > 0 then
if not name then
local i = table.getn(glb_macros_name_table)
repeat
i = i + 1
name = [no]"record"[/no]..i
until glb_macros_table[name] == nil or i > 9999
end
if not glb_macros_table[name] or table.getn(glb_macros_name_table) == 0 then
if pos then
table.insert(glb_macros_name_table, pos, name)
else
table.insert(glb_macros_name_table, name)
end
end
glb_macros_table[name] = table_icopy({},macro)
end
return name
end

local function macro_to_string(mode)
local text = [no]""[/no]
local iface_num2name = {}
for name,num in IFACE_FUNCTIONS do
iface_num2name[num] = name
end
if mode == [no]"LUA"[/no] then
mode = true
else
mode = false
end
for _,name in glb_macros_name_table do
macro = glb_macros_table[name]
if macro then
text = text..[no]"\n--- "[/no]..name..[no]" ---\n"[/no]
for _,val in macro do
local c,lp,wp = unpack(val)
if string.len(lp) > 0 then
for _,v in MACRO_CONVERT_CHARS do
lp = string.gsub(lp,unpack(v))
end
lp = [no]"'"[/no]..lp..[no]"'"[/no]
end
if mode then
if IFACE_FUNCTIONS_USE_WP[c] then
if string.len(lp) > 0 then
wp = wp..[no]", "[/no]
end
else
wp = [no]""[/no]
end
text = text..[no]"editor:"[/no]..ifnil(iface_num2name[c],c)..[no]"("[/no]..wp..lp..[no]")\n"[/no]
else
text = text..ifnil(iface_num2name[c],c)..[no]";"[/no]..wp..[no]";"[/no]..lp..[no]"\n"[/no]
end
end
end
end
return text
end

local function macro_load(text)
local macro = {}
local name = nil
local text = text..[no]"\n"[/no]
for str in string.gfind(text, [no]"([^\n]*)[\n]"[/no]) do
if string.sub(str, 1, 3) == [no]"---"[/no] then
MacroAddToList(macro, name)
macro = {}
name = nil
for a in string.gfind(str, [no]"([%w_]+)"[/no]) do
name = a; break;
end
else
str = string.gsub(str, [no]"\r"[/no], [no]""[/no])
for fnc,wp,lp in string.gfind(str, [no]"(%w+);(%d+);(.*)"[/no]) do
local c = IFACE_FUNCTIONS[fnc]
if c then
if string.len(lp) > 0 then
lp = dostring([no]"return "[/no]..lp)
end
table.insert(macro, {c,lp,wp})
else
print([no]"> undefined function "[/no]..fnc)
return false
end
end
end
end
MacroAddToList(macro, name)
end


MACRO_CONVERT_CHARS = {
{[no]"\\"[/no], [no]"\\\\"[/no]},
{[no]"\'"[/no], [no]"\\\'"[/no]},
{[no]"\r"[/no], [no]"\\r"[/no]},
{[no]"\n"[/no], [no]"\\n"[/no]},
}

IFACE_FUNCTIONS = {
[[no]"AddText"[/no]] = 2001,
[[no]"AppendText"[/no]] = 2282,
[[no]"BackTab"[/no]] = 2328,
[[no]"Cancel"[/no]] = 2325,
[[no]"CharLeft"[/no]] = 2304,
[[no]"CharLeftExtend"[/no]] = 2305,
[[no]"CharLeftRectExtend"[/no]] = 2428,
[[no]"CharRight"[/no]] = 2306,
[[no]"CharRightExtend"[/no]] = 2307,
[[no]"CharRightRectExtend"[/no]] = 2429,
[[no]"Clear"[/no]] = 2180,
[[no]"ClearAll"[/no]] = 2004,
[[no]"Copy"[/no]] = 2178,
[[no]"CopyRange"[/no]] = 2419,
[[no]"Cut"[/no]] = 2177,
[[no]"DelLineLeft"[/no]] = 2395,
[[no]"DelLineRight"[/no]] = 2396,
[[no]"DelWordLeft"[/no]] = 2335,
[[no]"DelWordRight"[/no]] = 2336,
[[no]"DeleteBack"[/no]] = 2326,
[[no]"DeleteBackNotLine"[/no]] = 2344,
[[no]"DocumentEnd"[/no]] = 2318,
[[no]"DocumentEndExtend"[/no]] = 2319,
[[no]"DocumentStart"[/no]] = 2316,
[[no]"DocumentStartExtend"[/no]] = 2317,
[[no]"EditToggleOvertype"[/no]] = 2324,
[[no]"FormFeed"[/no]] = 2330,
[[no]"GotoLine"[/no]] = 2024,
[[no]"GotoPos"[/no]] = 2025,
[[no]"Home"[/no]] = 2312,
[[no]"HomeDisplay"[/no]] = 2345,
[[no]"HomeDisplayExtend"[/no]] = 2346,
[[no]"HomeExtend"[/no]] = 2313,
[[no]"HomeRectExtend"[/no]] = 2430,
[[no]"HomeWrap"[/no]] = 2349,
[[no]"HomeWrapExtend"[/no]] = 2450,
[[no]"InsertText"[/no]] = 2003,
[[no]"LineCopy"[/no]] = 2455,
[[no]"LineCut"[/no]] = 2337,
[[no]"LineDelete"[/no]] = 2338,
[[no]"LineDown"[/no]] = 2300,
[[no]"LineDownExtend"[/no]] = 2301,
[[no]"LineDownRectExtend"[/no]] = 2426,
[[no]"LineDuplicate"[/no]] = 2404,
[[no]"LineEnd"[/no]] = 2314,
[[no]"LineEndDisplay"[/no]] = 2347,
[[no]"LineEndDisplayExtend"[/no]] = 2348,
[[no]"LineEndExtend"[/no]] = 2315,
[[no]"LineEndRectExtend"[/no]] = 2432,
[[no]"LineEndWrap"[/no]] = 2451,
[[no]"LineEndWrapExtend"[/no]] = 2452,
[[no]"LineScrollDown"[/no]] = 2342,
[[no]"LineScrollUp"[/no]] = 2343,
[[no]"LineTranspose"[/no]] = 2339,
[[no]"LineUp"[/no]] = 2302,
[[no]"LineUpExtend"[/no]] = 2303,
[[no]"LineUpRectExtend"[/no]] = 2427,
[[no]"LinesJoin"[/no]] = 2288,
[[no]"LinesSplit"[/no]] = 2289,
[[no]"LoadLexerLibrary"[/no]] = 4007,
[[no]"LowerCase"[/no]] = 2340,
[[no]"MarkerAdd"[/no]] = 2043,
[[no]"MarkerAddSet"[/no]] = 2466,
[[no]"MarkerDefine"[/no]] = 2040,
[[no]"MarkerDefinePixmap"[/no]] = 2049,
[[no]"MarkerDelete"[/no]] = 2044,
[[no]"MarkerDeleteAll"[/no]] = 2045,
[[no]"MarkerDeleteHandle"[/no]] = 2018,
[[no]"MarkerGet"[/no]] = 2046,
[[no]"MarkerLineFromHandle"[/no]] = 2017,
[[no]"MarkerNext"[/no]] = 2047,
[[no]"MarkerPrevious"[/no]] = 2048,
[[no]"MoveCaretInsideView"[/no]] = 2401,
[[no]"NewLine"[/no]] = 2329,
[[no]"Null"[/no]] = 2172,
[[no]"PageDown"[/no]] = 2322,
[[no]"PageDownExtend"[/no]] = 2323,
[[no]"PageDownRectExtend"[/no]] = 2434,
[[no]"PageUp"[/no]] = 2320,
[[no]"PageUpExtend"[/no]] = 2321,
[[no]"PageUpRectExtend"[/no]] = 2433,
[[no]"ParaDown"[/no]] = 2413,
[[no]"ParaDownExtend"[/no]] = 2414,
[[no]"ParaUp"[/no]] = 2415,
[[no]"ParaUpExtend"[/no]] = 2416,
[[no]"Paste"[/no]] = 2179,
[[no]"ReplaceSel"[/no]] = 2170,
[[no]"ReplaceTarget"[/no]] = 2194,
[[no]"ReplaceTargetRE"[/no]] = 2195,
[[no]"ScrollCaret"[/no]] = 2169,
[[no]"SearchAnchor"[/no]] = 2366,
[[no]"SearchInTarget"[/no]] = 2197,
[[no]"SearchNext"[/no]] = 2367,
[[no]"SearchPrev"[/no]] = 2368,
[[no]"SelectAll"[/no]] = 2013,
[[no]"SelectionDuplicate"[/no]] = 2469,
[[no]"SetCharsDefault"[/no]] = 2444,
[[no]"SetSavePoint"[/no]] = 2014,
[[no]"SetSel"[/no]] = 2160,
[[no]"SetText"[/no]] = 2181,
[[no]"StutteredPageDown"[/no]] = 2437,
[[no]"StutteredPageDownExtend"[/no]] = 2438,
[[no]"StutteredPageUp"[/no]] = 2435,
[[no]"StutteredPageUpExtend"[/no]] = 2436,
[[no]"Tab"[/no]] = 2327,
[[no]"TargetFromSelection"[/no]] = 2287,
[[no]"UpperCase"[/no]] = 2341,
[[no]"VCHome"[/no]] = 2331,
[[no]"VCHomeExtend"[/no]] = 2332,
[[no]"VCHomeRectExtend"[/no]] = 2431,
[[no]"VCHomeWrap"[/no]] = 2453,
[[no]"VCHomeWrapExtend"[/no]] = 2454,
[[no]"WordLeft"[/no]] = 2308,
[[no]"WordLeftEnd"[/no]] = 2439,
[[no]"WordLeftEndExtend"[/no]] = 2440,
[[no]"WordLeftExtend"[/no]] = 2309,
[[no]"WordPartLeft"[/no]] = 2390,
[[no]"WordPartLeftExtend"[/no]] = 2391,
[[no]"WordPartRight"[/no]] = 2392,
[[no]"WordPartRightExtend"[/no]] = 2393,
[[no]"WordRight"[/no]] = 2310,
[[no]"WordRightEnd"[/no]] = 2441,
[[no]"WordRightEndExtend"[/no]] = 2442,
[[no]"WordRightExtend"[/no]] = 2311,
[[no]"WordStartPosition"[/no]] = 2266,
}

IFACE_FUNCTIONS_USE_WP = {
[IFACE_FUNCTIONS[[no]"CopyRange"[/no]]] = true,
[IFACE_FUNCTIONS[[no]"GotoLine"[/no]]] = true,
[IFACE_FUNCTIONS[[no]"GotoPos"[/no]]] = true,
[IFACE_FUNCTIONS[[no]"InsertText"[/no]]] = true,
[IFACE_FUNCTIONS[[no]"LinesSplit"[/no]]] = true,
[IFACE_FUNCTIONS[[no]"MarkerAdd"[/no]]] = true,
[IFACE_FUNCTIONS[[no]"MarkerAddSet"[/no]]] = true,
[IFACE_FUNCTIONS[[no]"MarkerDefine"[/no]]] = true,
[IFACE_FUNCTIONS[[no]"MarkerDefinePixmap"[/no]]] = true,
[IFACE_FUNCTIONS[[no]"MarkerDelete"[/no]]] = true,
[IFACE_FUNCTIONS[[no]"MarkerDeleteAll"[/no]]] = true,
[IFACE_FUNCTIONS[[no]"MarkerDeleteHandle"[/no]]] = true,
[IFACE_FUNCTIONS[[no]"MarkerGet"[/no]]] = true,
[IFACE_FUNCTIONS[[no]"MarkerLineFromHandle"[/no]]] = true,
[IFACE_FUNCTIONS[[no]"MarkerNext"[/no]]] = true,
[IFACE_FUNCTIONS[[no]"MarkerPrevious"[/no]]] = true,
[IFACE_FUNCTIONS[[no]"SearchNext"[/no]]] = true,
[IFACE_FUNCTIONS[[no]"SearchPrev"[/no]]] = true,
[IFACE_FUNCTIONS[[no]"SetSel"[/no]]] = true,
}


[no]----------------------------------------------------------[/no]
[no]-- io functions[/no]

function MacroFillToBuffer(mode)
editor:append(macro_to_string(mode))
end

function MacroLoadFromSelection()
macro_load(editor:GetSelText())
[no]-- autosave[/no]
if props[[no]'macro.autosave'[/no]] == [no]"1"[/no] then
MacroSaveToFile(macro_file)
end
end

function MacroLoadFromFile(filename)
local fl = io.open(filename)
if fl ~= nil then
fl:seek([no]"set"[/no])
macro_load(fl:read([no]"*a"[/no]))
fl:close()
end
end

function MacroSaveToFile(filename)
io.output(filename)
io.write(macro_to_string())
io.close()
end


[no]----------------------------------------------------------[/no]
[no]-- common functions[/no]

function table_clear(tbl)
while table.getn(tbl) > 0 do table.remove(tbl) end
end

function table_icopy(tbl,from_tbl)
for _,v in from_tbl do table.insert(tbl,v) end
return tbl
end

function ifnil(Val, defVal)
if (Val == nil) then
return defVal;
else
return Val;
end
end


[no]----------------------------------------------------------[/no]
[no]-- load macros at startup[/no]
if props[[no]'macro.load.on.startup'[/no]] == [no]"1"[/no] then
MacroLoadFromFile(macro_file)
end
Автор: ALeXkRU
Дата сообщения: 02.04.2007 14:17
SciTE Release 1.73
по традиции - вольное переложение хистори:

Released on 31 March 2007.
Релиз 1.73 (31 марта 2007)

SciTE adds a Directory properties file to configure behaviour for files in a directory and its subdirectories.
- в SciTE добавлено свойство файлов Каталога для настройки поведения файлов каталога и подкаталогов

Style changes may be made during text modification events.
- изменения в стиле могут быть сделаны во время модификации текста

Regular expressions recognize \d, \D, \s, \S, \w, \W, and \xHH.
- добавлено распознавание регулярных выражений \d, \D, \s, \S, \w, \W, and \xHH

Support for cmake language added.
- добавлена поддержка языка "cmake"

More Scintilla properties can be queried.
- теперь может быть вызвано больше свойств Scintilla

Edge line drawn under text.
- отрисовывается линия границы под текстом

A savesession command added to SciTE director interface.
- команда "savesession" (сохранить сессию) добавлена в интерфейс управления SciTE

SciTE File | Encoding menu item names changed to be less confusing.
- в SciTE изменены имена пунктов меню File | Encoding (Файл | Кодировка) для сокращения путаницы

SciTE on GTK+ dialog buttons reordered to follow guidelines.
- в SciTE для GTK+ диалоговые клавиши переставлены для соответствия руководству

SciTE on GTK+ removed GTK+ 1.x compatible file dialog code.
- в GTK+ из SciTE удален код диалога "Файл", использовавшийся для совместимости с GTK+ 1.x

SciTE on GTK+ recognizes key names KeypadMultiply and KeypadDivide.
- в GTK+ в SciTE добавлено распознавание имен клавиш KeypadMultiply и KeypadDivide (клавиши "Умножение" и "Деление" цифровой клавиатуры)

Background colour of line wrapping visual flag changed to STYLE_DEFAULT.
- флаг отображения цвета фона для переноса строки изменен на STYLE_DEFAULT

Makefile lexing enhanced for ':=' operator and when lines start with tab.
- лексер Makefile расширен оператором ':=' и добавлено распознавание строк, начинающихся с табулятора

TADS3 lexer and folder improved.
- улучшены лексер и фолдер для языка TADS3

SCN_DOUBLECLICK notification may set SCI_SHIFT, SCI_CTRL, and SCI_ALT flags on modifiers field.
- сообщение SCN_DOUBLECLICK может устанавливать флаги SCI_SHIFT, SCI_CTRL, и SCI_ALT в поле модификаторов

Slow folding of large constructs in Python fixed.
- исправлена ошибка с замедленным фолдингом в больших конструкциях Python

MSSQL folding fixed to be case-insensitive and fold at more keywords.
- исправлены ошибки фолдинга MSSQL: добавлена нечувствительность к регистру и обработка большего числа ключевых слов

SciTE's brace matching works better for HTML.
- в SciTE улучшена работа с согласованием фигурных скобок для HTML

Determining API list items checks for specified parameters start character before default '('.
- добавлена проверка определения элементов списка API для заданных параметров, начинающихся с символа '(' перед default

Hang fixed in HTML lexer.
- исправлено зависание в лексере HTML

Bug fixed in with LineTranspose command where markers could move to different line.
- исправлена ошибка в команде LineTranspose (перенос строки), при которой маркеры могли переноситься на другую строку

Memory released when buffer completely emptied.
- теперь память освобождается при полном опустошении буфера

If translucency not available on Windows, draw rectangular outline instead.
- если в Windows не доступна полупрозрачность, взамен отрисовывается внешняя прямоугольная рамка

Bash lexer handles "-x" in "--x-includes..." better.
- в лексере Bash улучшена обработка параметра "-x" в "--x-includes..."

AutoIt3 lexer fixes string followed by '+'.
- исправлена ошибка в лексере AutoIt3 для строк, следующих после '+'

LinesJoin fixed where it stopped early due to not adjusting for inserted spaces..
- исправлена ошибка в комаде LinesJoin (соединение строк), при которой команда преждевременно завершалась из-за некорректной вставки выравнивающих пробелов

StutteredPageDown fixed when lines wrapped.
- исправлена ошибка прокручивания страницы при переносе строк

FormatRange fixed to not double count line number width which could lead to a large space.
- исправлена ошибка в области форматирования (FormatRange), удваивающая ширину поля счетчика строк, что могло приводить к увеличению области этого поля

SciTE Export As PDF and Latex commands fixed to format floating point numbers with '.' even in locales that use ','.
- в SciTE исправлена работа команд "Экспортировать в формате PDF" и ".. в формате Latex": формат чисел с плавающей запятой указывается с '.' даже если в локальных настройках ','

SciTE bug fixed where File | New could produce buffer with contents of previous file when using read-only mode.
- исправлена ошибка SciTE, при которой команда Файл | Новый (File | New) в режиме только для чтения (read-only) могла выводить буфер с содержимым предыдущего файла

SciTE retains current scroll position when switching buffers and fold.on.open set.
- SciTE теперь при переключении буферов сохраняет текущую позицию прокрутки (скроллинга) и установленном параметре fold.on.open

SciTE crash fixed where '*' used to invoke parameters dialog.
- исправлена ошибка, приводившая к краху SciTE, при использовании '*' в качестве параметра вызова диалога

SciTE bugs when writing large UCS-2 files fixed.
- Исправлена ошибка SciTE при записи больших файлов UCS-2

Bug fixed when scrolling inside a SCN_PAINTED event by invalidating window rather than trying to perform synchronous painting.
- исправлена ошибка, возникающая в функции обработки события SCN_PAINTED при прокрутке. Теперь предпочтительно используется перерисовка окна, вместо более сложного по выполнению синхронного отображения

SciTE for GTK+ View | Full Screen works on recent versions of GTK+.
- для SciTE в GTK+ теперь команда Вид | Полноэкранный режим (View | Full Screen) работает в новых версиях GTK+

SciTE for Windows enables and disables toolbar commands correctly.
- в SciTE для Windows теперь корректно работает команда включения\выключения панелей инструментов
Автор: dB6
Дата сообщения: 02.04.2007 14:45
ALeXkRU

Цитата:
вольное переложение хистори

Немного подкорректировал:
SciTE Release 1.73
[more=Читать дальше]
Released on 31 March 2007.
Релиз 1.73 (31 марта 2007)

SciTE adds a Directory properties file to configure behaviour for files in a directory and its subdirectories.
- в SciTE добавлено свойство файлов Каталога для настройки поведения файлов каталога и подкаталогов

Style changes may be made during text modification events.
- Изменения в стиле могут быть сделаны во время модификации текста

Regular expressions recognize \d, \D, \s, \S, \w, \W, and \xHH.
- добавлено распознавание регулярных выражений \d, \D, \s, \S, \w, \W, and \xHH

Support for cmake language added.
- добавлена поддержка языка "cmake"

More Scintilla properties can be queried.
- теперь может быть вызвано больше свойств Scintilla

Edge line drawn under text.
- отрисовывается линия границы под текстом

A savesession command added to SciTE director interface.
- команда "savesession" (сохранить сессию) добавлена в интерфейс управления SciTE

SciTE File | Encoding menu item names changed to be less confusing.
- в SciTE изменены имена пунктов меню File | Encoding (Файл | Кодировка) для сокращения путаницы

SciTE on GTK+ dialog buttons reordered to follow guidelines.
- в SciTE для GTK+ диалоговые клавиши переставлены для соответствия руководству

SciTE on GTK+ removed GTK+ 1.x compatible file dialog code.
- в GTK+ из SciTE удален код диалога "Файл", использовавшийся для совместимости с GTK+ 1.x

SciTE on GTK+ recognizes key names KeypadMultiply and KeypadDivide.
- в GTK+ в SciTE добавлено распознавание имен клавиш KeypadMultiply и KeypadDivide (клавиши "Умножение" и "Деление" цифровой клавиатуры)

Background colour of line wrapping visual flag changed to STYLE_DEFAULT.
- флаг отображения цвета фона для переноса строки изменен на STYLE_DEFAULT

Makefile lexing enhanced for ':=' operator and when lines start with tab.
- лексер Makefile расширен оператором ':=' и добавлено распознавание строк, начинающихся с табулятора

TADS3 lexer and folder improved.
- улучшены лексер и фолдер для языка TADS3

SCN_DOUBLECLICK notification may set SCI_SHIFT, SCI_CTRL, and SCI_ALT flags on modifiers field.
- сообщение SCN_DOUBLECLICK может устанавливать флаги SCI_SHIFT, SCI_CTRL, и SCI_ALT в поле модификаторов

Slow folding of large constructs in Python fixed.
- исправлена ошибка с замедленным фолдингом в больших конструкциях Python

MSSQL folding fixed to be case-insensitive and fold at more keywords.
- сделаны изменения в фолдинге MSSQL: добавлена нечувствительность к регистру и обрабатывается больше ключевых слов

SciTE's brace matching works better for HTML.
- в SciTE улучшена работа с согласованием фигурных скобок для HTML

Determining API list items checks for specified parameters start character before default '('.
- добавлена проверка определения элементов списка API для заданных параметров, начинающихся с символа '(' перед default

Hang fixed in HTML lexer.
- исправлено зависание в лексере HTML

Bug fixed in with LineTranspose command where markers could move to different line.
- исправлена ошибка в команде LineTranspose (перенос строки), при которой маркеры могли переноситься на другую строку

Memory released when buffer completely emptied.
- теперь память освобождается при полном опустошении буфера

If translucency not available on Windows, draw rectangular outline instead.
- если в Windows не доступна полупрозрачность, взамен отрисовывается внешняя прямоугольная рамка

Bash lexer handles "-x" in "--x-includes..." better.
- в лексере Bash улучшена обработка параметра "-x" в "--x-includes..."

AutoIt3 lexer fixes string followed by '+'.
- исправлена ошибка в лексере AutoIt3 для строк, следующих после '+'

LinesJoin fixed where it stopped early due to not adjusting for inserted spaces..
- исправлена ошибка в комаде LinesJoin (соединение строк), при которой команда преждевременно завершалась из-за некорректной вставки выравнивающих пробелов

StutteredPageDown fixed when lines wrapped.
- исправлена ошибка прокручивания страницы при переносе строк

FormatRange fixed to not double count line number width which could lead to a large space.
- исправлена ошибка в области форматирования (FormatRange), удваивающая ширину поля счетчика строк, что могло приводить к увеличению области этого поля

SciTE Export As PDF and Latex commands fixed to format floating point numbers with '.' even in locales that use ','.
- в SciTE исправлена работа команд "Экспортировать в формате PDF" и ".. в формате Latex": формат чисел с плавающей запятой указывается с '.' даже если в локальных настройках ','

SciTE bug fixed where File | New could produce buffer with contents of previous file when using read-only mode.
- исправлена ошибка SciTE, при которой команда Файл | Новый (File | New) в режиме только для чтения (read-only) могла выводить буфер с содержимым предыдущего файла

SciTE retains current scroll position when switching buffers and fold.on.open set.
- SciTE теперь при переключении буферов сохраняет текущую позицию прокрутки (скроллинга) и установленном параметре fold.on.open

SciTE crash fixed where '*' used to invoke parameters dialog.
- исправлена ошибка, приводившая к краху SciTE, при использовании '*' в качестве параметра вызова диалога

SciTE bugs when writing large UCS-2 files fixed.
- Исправлена ошибка SciTE при записи больших файлов UCS-2

Bug fixed when scrolling inside a SCN_PAINTED event by invalidating window rather than trying to perform synchronous painting.
- исправлена ошибка, возникающая в функции обработки события SCN_PAINTED при прокрутке. Теперь предпочтительно используется перерисовка окна, вместо более сложного по выполнению синхронного отображения

SciTE for GTK+ View | Full Screen works on recent versions of GTK+.
- для SciTE в GTK+ теперь команда Вид | Полноэкранный режим (View | Full Screen) работает в новых версиях GTK+

SciTE for Windows enables and disables toolbar commands correctly.
- в SciTE для Windows теперь корректно работает команда включения\выключения панелей инструментов
[/more]
Автор: ALeXkRU
Дата сообщения: 02.04.2007 17:40
dB6
сенкс, поправил
Автор: mozers
Дата сообщения: 03.04.2007 01:03
Уважаемые переводчики поправьте, пожалуйста, на досуге и этот файл согласно новой History.
Если получится, то изложить бы его более понятным языком...

Откомпилировал код 1.73 со всеми вашими доработками (очень много их добавилось есть и приятные сюрпризы). Вроде как работает.
Непонятки с этим пунктом:
Цитата:
сообщение SCN_DOUBLECLICK может устанавливать флаги SCI_SHIFT, SCI_CTRL, и SCI_ALT в поле модификаторов
Т.е. с одной стороны, изобретение mimir-a попало в официальный релиз. С другой стороны, когда глядишь исходники, то выясняется что файлы Editor.cxx иEditor.h сняты 1:1, в ScintillaWin.cxx немного изменен код, в файлы LuaExtension.cxx, MultiplexExtension.cxx, SciTEBase.cxx, DirectorExtension.cxx, SingleThreadExtension.cxx, Extender.h, LuaExtension.h, MultiplexExtension.h, DirectorExtension.h, SingleThreadExtension.h вообще никаких изменений не внесено.
В результате фича не работает или работает но как то не так. КАК ???
Лучше ли Нейловский вариант нашего ? На каком варианте лучше остановиться ?
Автор: vladvro
Дата сообщения: 03.04.2007 09:47
mozers
Цитата:
Т.е. с одной стороны, изобретение mimir-a попало в официальный релиз. С другой стороны...
видимо Нейл решил включить это фичу только в ядро Scintilla, а в редактор не включать (помним, что ядро это отдельная разработка и используется еще другими разработчиками редакторов).
нам конечно нужны все изменения в файлах редактора, что бы фича работала как и прежде.
Автор: mozers
Дата сообщения: 03.04.2007 17:06
Ядро 1.73 .37Ru
EXE + DLL [449kB]
Source [388kB] (только измененные файлы)

Цитата:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[StyleDefault] (Автор: VladVRO)
Устанавливает дефолтовые значения цвета символов и фона равными системным значениям, что позволяет не задавать явно в файлах настройки во всех стилях для получения соответсвующего фона при экспорте файла.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[BookmarksWithSession] (Автор: dB6)
При сохранении сессии, сохраняет в файле сессии список букмарков для каждого файла.
Сохранение идет в формате:
<pos=1 bm=12,142,300> C:\Some\Path\To\File.ext
"bm=" и строки, отмеченные букмарками через запятую.
Сохраняется строка длиной 110 символов, букмарки, которые не "влезли" в строку - не сохраняются. Сделано для совместимости с немодернизированным SciTE.
При загрузке сессии, загружает из файла сессии список букмарков для каждого файла.
Считывается строка длинной 110 символов, остальное обрезается.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[os.run] (Автор: mimir)
Добавлена новая LUA команда os.run(Command, [WindowStyle], [WaitOnReturn]) позволяющая задать вид окна запускаемой внешней команды, приостановить выполнение скрипта на время ее выполнения и получить код завершения.
Аналогичная os.exec(<Cmd>, <WindowStyle>) исключена за ненадобностью.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[TabsMoving] (Автор: VladVRO)
Две новых команды IDM_MOVETABLEFT и IDM_MOVETABRIGHT позволяют перемещать текущую закладку.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[SubMenu] (Автор: HSolo)
Исправлена ошибка, при которой SciTE вылетал при превышении некоторого числа пунктов меню Tools (Автор: VladVRO)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[selection.hide.on.deactivate] (Автор: mozers)
Параметр selection.hide.on.deactivate=0 позволяет не снимать выделение с текста когда окно SciTE теряет фокус.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[ToolbarButtons] (Автор: mozers, dB6)
На панель инструментов добавлены кнопки для записи/воспроизведения макросов

Доработок очень много. Очень большая вероятность что я где то апшибся и что то пропустил или добавил но не так.
Доработки без описания что это такое и зачем надо - убрал: (LexSQL.cxx [mimir], SciTEBase.h [DoMenuCommand])
Так что очень прошу всех (особено наших разработчиков) - проверьте работоспособность хотя бы ваших доработок и правильность их описания на русском и английском!

По поводу [OnDoubleClick] так же ниче не ясно. Мне почему то кажется что тот код, что написал Нейл, должен работать аналогично изобретению mimir-а. Только событие это анализировать надо как то иначе. Как??? Я пока новый код Нейл-а закомментировал, оставив старый вариант mimir-а.

Так что текущая версия - БЕТА в чистом виде (поэтому и на сайте ссылки на нее нет). Тестируем!!!
Автор: 8AleX8
Дата сообщения: 04.04.2007 11:53
Нужна помощь.
У меня есть текстовые файлы в которых в вперемешку использованы символы переноса строки "CR+LF" и "CR". Я вижу эти символы, когда включаю View -> End of Line.
Мне необходимо удалить все "CR". Хотел сделать это через find & replace.
Когда я делаю поиск с использованием REG-EXP. и \r - SciTE ничего не находит. Что делать?
Автор: dB6
Дата сообщения: 04.04.2007 12:10
8AleX8

Цитата:
Мне необходимо удалить все "CR". Хотел сделать это через find & replace.
Когда я делаю поиск с использованием REG-EXP. и \r - SciTE ничего не находит. Что делать?

А если выбрать в меню Настройки->Символы перевода строки -> LF, а потом Настройки->Конвертировать символы перевода строки ?
Автор: vladvro
Дата сообщения: 04.04.2007 12:15
mozers
исправление для [BookmarksWithSession] - меняем:
SciTEBuffers.cxx строка 471
Код: //!-start-[BookmarksWithSession]
char *file, line[MAX_PATH + 128], bmLine[MAX_PATH + 118];
bmLine[0]=[no]'\0'[/no];

for (int i = 0; i < bufferMax; i++)
{
if (!fgets(line, sizeof (line), sessionFile))
Автор: dB6
Дата сообщения: 04.04.2007 12:51
vladvro

Цитата:
исправление для [BookmarksWithSession]

Это больше мне, чем mozers.
Да, так более правильно. Но мне интересно - в каком случае появляются "левые букмарки"?

Автор: vladvro
Дата сообщения: 04.04.2007 13:00
dB6
Цитата:
- в каком случае появляются "левые букмарки"?

если букмарков нет, но были в предыдущем файле, например:
Код: <pos=1> D:\DIST\Editors\SciTE\scite_src\scite\src\SciTEBase.cxx
<pos=28613 bm=12,98,114,125,139,154,172,185,196,216,232,254,284,306,371,392,415,430,449,468,496,788,806,819,973,1038,1098> D:\DIST\Editors\SciTE\scite_src\scite\bin\SciTEGlobal.properties
<pos=-212> D:\DIST\Editors\SciTE\scite_src\scite\bin\home\SciTEUser.properties
Автор: 8AleX8
Дата сообщения: 04.04.2007 13:05
dB6

Цитата:
А если выбрать в меню Настройки->Символы перевода строки -> LF, а потом Настройки->Конвертировать символы перевода строки ?

Нет это не то.
Возможно я не ясно выразился. Мне необходимо все CR из файла удалить, а все CR+LF оставить как есть.
Автор: dB6
Дата сообщения: 04.04.2007 13:06
vladvro
Цитата:
третий буфер открывается с букмарками второго

И правда.. И как это я проглядел? Спасибо за подсказку!

Добавлено:
8AleX8

Цитата:
Возможно я не ясно выразился. Мне необходимо все "CR" из файла удалить, а все "CR+LF" оставить как есть.

Ну тогда делаем так:
Ставим галочку "Преобразовывать backslash-выражения".
НЕ ставим галочку "Регулярные выражения"
И пользуемся для поиска:
\r = CR
\n = LF
Только они воспринимаются, как разные символы (как оно и есть на самом деле), поэтомцу я бы сначала заменил бы \r\n на что-нибудь типа "_CRLF_", потом удалил бы все оставшиеся CR с помощью замены \r. и заменил бы обратно "_CRLF_" на \r\n.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869

Предыдущая тема: LeechGet


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.