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

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

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


Автор: mozers, Отправлено:01:22 17-03-2007
Корректное исправление ошибки с % для AutocompleteObject.lua:
Код:
if char ~= " " then
-- props["scite.lexer.name"] - value set script lexer_name.lua
if string.find(props["autocomplete."..props["scite.lexer.name"]..".start.characters"], char, 1, 1) == nil then
return false
end
end


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

ROWrite - какие то мысли вслух... Еще не переварил до конца...


Цитата:
А как выделять текст, чтоб он подсвечивался как LUA
Как подсветить участок текста произвольным образом? (Я правильно перевел твой вопрос?)
Произвольным не получится. Можно только любым стилем текущего лексера.
Посмотри SciTEHexEdit.lua для примера. Чесноговоря до конца не понял но работает.

Автор: vladvro, Отправлено:12:13 17-03-2007
mimir
Цитата:

Цитата:
дописал скрипт ROWrite.lua:
А зачем? ИМХО лучше нормально сделать возврат сообщения об ошибки.

дак зачем мне нормальное сообщение об ошибке? мне надо что бы оно работало в любом случае что у меня и реализовано теперь.

Цитата:
ЗЫ. А как выделять текст, чтоб он подсвечивался как LUA (ну типа local, if ...)?

не понял вопроса, выделять где?
Автор: mimir, Отправлено:09:29 18-03-2007

Цитата:
Цитата:ЗЫ. А как выделять текст, чтоб он подсвечивался как LUA (ну типа local, if ...)?

не понял вопроса, выделять где?


Да я в форуме говорю. Когда посты со скриптами делаешь. Увидел у тебя подсветку и тоже захотел.
Извините, что ввел в заблуждение.

Удачи!
Автор: mozers, Отправлено:11:34 18-03-2007
vladvro
Мне тоже интересно
Лично я пользуюсь плагином R2 для Maxthon - очень сильно упрощает офрмление постов, есть предпросмотр и куча других фич... Но автоматом раскрашивать код он не умеет.

ALL
Задача: Как определить включен тулбар в данный момент или нет? Я полагал, что при включении тулбара изменяется содержимое ключа toolbar.visible... Но на поверку оказалось что - нет
Аналогичная ситуация и с другими элементами интерфейса - как определить текущие установки пользователя - неясно ...
Автор: vladvro, Отправлено:11:37 19-03-2007
mimir, mozers
Цитата:
Да я в форуме говорю. Когда посты со скриптами делаешь. Увидел у тебя подсветку и тоже захотел.

написал луашный скрипт в скайте [more]
Код:
local STYLES = {
[1] = {color="008000"},
[2] = {color="008000"},
[4] = {color="AC00A9"},
[5] = {color="0000DF"},
[6] = {color="9999CC"},
[7] = {color="9999CC"},
[10] = {color="FF0000"},
[13] = {color="0080C0"},
[14] = {color="8000FF"},
[15] = {color="0080C0"},
[16] = {color="660000"},
[17] = {color="B35900"},
[18] = {color="408080"},
[19] = {color="AAAA00"},
}

local new = ""
local text = editor:GetSelText()
local start = editor.SelectionStart - 1
local len = string.len(text)
local bold,color = false,nil
for i = 1, len do
local sid = scite.SendEditor(SCI_GETSTYLEAT,start+i)
local style = STYLES[sid]
if style == nil then
if color ~= nil then
new = new.."[/color]"
color = nil
end
if bold then
new = new.."[/b]"
bold = false
end
else
if color ~= style.color and color ~= nil then
new = new.."[/color]"
end
if bold and not style.bold then
new = new.."[/b]"
bold = false
end
if not bold and style.bold then
new = new.."[b]"
bold = true
end
if color ~= style.color then
new = new.."[color="..style.color.."]"
color = style.color
end
end
new = new..string.sub(text,i,i)
end
-- update
local ss = editor.SelectionStart
editor:ReplaceSel(new)
editor:SetSel(ss, ss+string.len(new))

конвертирует выделенный текст в форматированный текст форума, используя синтаксическую подсветку самого редактора (номер стиля) и таблицу цветов STYLES

ремарки по использованию:
- сам текст скрипта раскрасить не получается, т.к. нет возможности заэкранировать встречающиеся в нем теги форматирования
- в таблице цветов можно задать жирный шрифт: bold=true (например: [1] = {color="008000",bold=true}), но мое личное мнение, что наглядности на форуме это не добавляет.
[/more]

Цитата:
Лично я пользуюсь плагином R2 для Maxthon
ага, я подозревал что у тебя что то такое есть , вот только я не знаю что такое Maxthon?

Цитата:
как определить текущие установки пользователя - неясно

дописать код самого редактора


Автор: mozers, Отправлено:14:15 19-03-2007
vladvro
Цитата:
написал луашный скрипт в скайте


Цитата:
что такое Maxthon?
Maxthon Плагины

Цитата:
Цитата:как определить текущие установки пользователя - неясно
дописать код самого редактора
"Дописать" - это радикально, но я думаю, дико волокитно. Я нашел в SciTEDirector такую хрень
Цитата:
enumproperties:dyn|local|user|base|embed - Перечислить все параметры в заданном окружении.
Попробовал в работе - нефига не понял что за чушь эта функция выдает Мож кто объяснит как ей пользоваться?

ALL
Как сделать видимым выделение в редакторе, если окно SciTE неактивно?
ОЧЕНЬ НАДО.
Автор: vladvro, Отправлено:18:43 20-03-2007
mozers
Цитата:
"Дописать" - это радикально, но я думаю, дико волокитно. Я нашел в SciTEDirector такую хрень
согласен волокитно, но полагаю, что другого вырианта не дано
а найденная "хрень" позволяет получить содержимое списков props, propsLocal, propsUser, propsBase, propsEmbed, propsAbbrev,
но в интерфейсе Луа она не реализована, с другой стороны почти все это доступно через props[], т.к. в скайте заложена следующая схема вложенного поиска по спискам:
props -> propsLocal -> propsUser -> propsBase -> propsEmbed

Автор: Perchilla, Отправлено:12:29 22-03-2007
Приветствую всех! Подскажите пожалуйста, можно ли так вывернуться с командной строкой, чтобы открыть файл в отдельной вкладке, если scite уже запущен?
Автор: mozers, Отправлено:13:06 22-03-2007
Perchilla
Я полагаю, что ты - описАлся. Не в отдельной вкладке (он там открывается по умолчанию), а в отдельном окне? Если я угадал, то так:
Код:
scite.exe -property:check.if.already.open=0 "%1"
В сборке Ru-Board такая фича имеется (в отдельном окне можно открыть текущий буфер).
Автор: codewarlock1101, Отправлено:13:15 22-03-2007
переименование файла из скайта

Код:

##rename.lua:

local nnc
local fp=props['FilePath']
props["1"]=props['FileNameExt']
props["2"]=''
props["3"]=''
props["4"]=''
if scite.ShowParametersDialog("Rename file to...") then
nnc=props["1"]
if nnc~='' then
string.gsub(fp,'\(.+\\\)[^\\]*', function (a) nnc=a..nnc scite.MenuCommand('IDM_CLOSE')
os.rename(fp,nnc) scite.Open(nnc) end)
end
end


##SciTEGlobal.properties:
command.parent.120=30
command.name.120.*=Rename
command.120.*=dofile D:\warez\SciTE\tools\rename.lua
command.mode.120.*=subsystem:lua,savebefore:no
command.shortcut.120.*=Shift+F6



mozers Что -то я упустил эту фичу, как ее вызвать?


Автор: mozers, Отправлено:13:27 22-03-2007
ALL
Сочинил тут скриптик, не то чтобы - шедевр, но идея дико нравится
Код:
// Registry Jump
// Version: 1.0
// Autor: mozers™
// ------------------------------------------------
// Открывает выделенную ветвь в редакторе реестра
// Понимает записи вида:
// HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
// HKLM\SYSTEM\CurrentControlSet\Control
// HKLM\\SYSTEM\\CurrentControlSet\\Control
// Подключение:
// command.name.78.*=Registry Jump
// command.78.*=wscript "$(SciteDefaultHome)\tools\RegJump.js"
// command.input.78.*=$(CurrentSelection)
// command.mode.78.*=subsystem:windows,replaceselection:no,savebefore:no,quiet:yes
// ------------------------------------------------

var key = WScript.StdIn.ReadAll();
if (key == "") {
WScript.Quit();
}

key = key.replace(/^HKLM\\/,'HKEY_LOCAL_MACHINE\\');
key = key.replace(/^HKCR\\/,'HKEY_CLASSES_ROOT\\');
key = key.replace(/^HKCU\\/,'HKEY_CURRENT_USER\\');
key = key.replace(/\\\\/g,'\\');
key = "My Computer\\" + key

var WshShell = new ActiveXObject("WScript.Shell");
WshShell.RegWrite ('HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Applets& #92;\Regedit\\Lastkey',key,'REG_SZ');
WshShell.Run('regedit', 1, false);
Данный код внедрен в форум с помощью скрипта vladvro
Автор: Perchilla, Отправлено:14:07 22-03-2007

Цитата:
Я полагаю, что ты - описАлся. Не в отдельной вкладке (он там открывается по умолчанию), а в отдельном окне?

Я использую сборку от http://gisdeveloper.tripod.com/scite.html.
Там по умолчанию открывается в новом окне. В русской сборке как - то сделали открытие в новой вкладке, но я пока не готов пересесть на неё . Вот и спрашиваю, как сделать.

Автор: mozers, Отправлено:14:42 22-03-2007
Perchilla
Цитата:
В русской сборке как - то сделали открытие в новой вкладке, но я пока не готов пересесть на неё
Пересаживайся и увидишь как много чего сделали окромя этого
Код:
# Если SciTE открыт, то файлы загружаются в существующую копию программы
check.if.already.open=1


Автор: vladvro, Отправлено:14:06 23-03-2007
нашел сегодня ошибку - скайт вылетает при превышении некоторого числа пунктов меню тулз.
для исправления меняем в файле SciTEBuffers.cxx
строку 1051:
} UMenu[100];
на
} UMenu[toolMax];

Автор: mozers, Отправлено:18:44 23-03-2007
И я вот тоже нашел ошибку
Команда saveas:<path> постоянно выкатывает диалог сохранения файла, хотя, по идее (SciTEBase.cxx), этот диалог должен появлятся только при отсутствии параметра (нового имени файла).
Вот если-б кто поправил это дело, то переименовывать файлы можно было бы на порядок более аккуратно (без изменения позиции закладки)...
Автор: vladvro, Отправлено:13:40 25-03-2007
новый функционал для скайта - перемещение табов (вкладок) [more]
добавляем в файл SciTEBase.h
строка 284:
Код:
void ShiftTo(int index_from, int index_to); //!-add-[TabsMoving]

строка 595:
Код:
//!-start-[TabsMoving]
void ShiftTab(int index_from, int index_to);
void MoveTabRight();
void MoveTabLeft();
//!-end-[TabsMoving]

файл SciTEBuffers.cxx
строка 195:
Код:
//!-start-[TabsMoving]
void BufferList::ShiftTo(int index_from, int index_to) {
// shift buffer to new place in buffers array
if (index_from == index_to ||
index_from < 0 || index_from >= length ||
index_to < 0 || index_to >= length) return;
int step = 1;
if (index_from > index_to)
step = -1;
Buffer tmp = buffers[index_from];
for(int i=index_from; i!=index_to; i+=step)
buffers[i] = buffers[i+step];
buffers[index_to] = tmp;
}
//!-end-[TabsMoving]

строка 745:
Код:
//!-start-[TabsMoving]
void SciTEBase::ShiftTab(int index_from, int index_to) {
buffers.ShiftTo(index_from, index_to);
buffers.SetCurrent(index_to);
BuffersMenu();

#if PLAT_WIN
// Tab Bar
::SendMessage(reinterpret_cast<HWND>(wTabBar.GetID()), TCM_SETCURSEL, (WPARAM)index_to, (LPARAM)0);
#endif
#if PLAT_GTK
if (wTabBar.GetID())
gtk_notebook_set_page(GTK_NOTEBOOK(wTabBar.GetID()), index_to);
#endif

DisplayAround(buffers.buffers[buffers.Current()]);
}

void SciTEBase::MoveTabRight() {
if (buffers.length < 2) return;
int index_from = buffers.Current();
int index_to = index_from + 1;
if (index_to >= buffers.length)
index_to = 0;
ShiftTab(index_from, index_to);
}

void SciTEBase::MoveTabLeft() {
if (buffers.length < 2) return;
int index_from = buffers.Current();
int index_to = index_from - 1;
if (index_to < 0)
index_to = buffers.length - 1;
ShiftTab(index_from, index_to);
}
//!-end-[TabsMoving]

строка 818:
Код:
// int menuStart = 5;
int menuStart = 7; //!-changed-[TabsMoving]

файл SciTEProps.cxx, строка 1664:
Код:
{"IDM_MOVETABRIGHT", IDM_MOVETABRIGHT}, //!-add-[TabsMoving]
{"IDM_MOVETABLEFT", IDM_MOVETABLEFT}, //!-add-[TabsMoving]

файл SciTEBase.cxx, строка 3889:
Код:
//!-start-[TabsMoving]
case IDM_MOVETABRIGHT:
MoveTabRight();
WindowSetFocus(wEditor);
break;
case IDM_MOVETABLEFT:
MoveTabLeft();
WindowSetFocus(wEditor);
break;
//!-end-[TabsMoving]

файл SciTERes.rc, строка 174:
Код:
MENUITEM "Move Tab &Right", IDM_MOVETABRIGHT //!-add-[TabsMoving]
MENUITEM "Move Tab &Left", IDM_MOVETABLEFT //!-add-[TabsMoving]

файл SciTE.h, строка 179:
Код:
#define IDM_MOVETABRIGHT 508 //!-add-[TabsMoving]
#define IDM_MOVETABLEFT 509 //!-add-[TabsMoving]


и для удобства использования можно добавить в файл настроек клавиши быстрого вызова:
Код:
user.shortcuts=\
...
Ctrl+Shift+PageUp|IDM_MOVETABLEFT|\
Ctrl+Shift+PageDown|IDM_MOVETABRIGHT|\
...

[/more]

пожелание: если кто-то сделает поддержку перемещения мышкой (надо реализовать события захвата и премещения + визуализацию, для перемещения таба использовать функцию ShiftTab) буду крайне рад .
Автор: mozers, Отправлено:17:39 25-03-2007
Обновил SciTE Helper v.0.5
Версия 0.5 сильно отличается от предыдущих. Появилось много новых методов и свойств. Стало возможным непосредственно выполнять конструкции на LUA и получать результаты.
Так, например, стало возможным реализовать сохранение текущих установок пользователя при завершении работы SciTE:
[more]save_settings.lua
Код:
-- Save SciTE Settings
-- Version: 1.0
-- Autor: mozers™
---------------------------------------------------
-- При завершении работы SciTE (через меню или по шорткату)
-- cохраняет размер и положение окна SciTE и другие текущие установки, измененные через меню
-- Для работы требуется скрипт tools\save_settings.js
-- Подключение:
-- Добавьте в SciTEStartup.lua строку
-- require (props["SciteDefaultHome"].."\\tools\\save_settings.lua")
-- Задайте в файле .properties шорткаты для завершения работы SciTE
-- user.shortcuts=\
-- Alt+X|IDM_QUIT|\
-- Alt+F4|IDM_QUIT|
---------------------------------------------------

local function SaveSettings()
if props['save.session'] == '1' then
os.exec('wscript.exe "'..props["SciteDefaultHome"]..'\\tools\\save_settings.js"')
os.msgbox ('Your settings are successfully saved!')
end
end

local function fNOT (val)
if val=='0' then
return '1'
elseif val=='1' then
return '0'
end
end

-- Добавляем свой обработчик события OnMenuCommand
local old_OnMenuCommand = OnMenuCommand
function OnMenuCommand(cmd, source)
if old_OnMenuCommand then old_OnMenuCommand(cmd, source) end
if cmd == 140 then -- IDM_QUIT
SaveSettings()
elseif cmd == 408 then -- IDM_VIEWTOOLBAR
props['toolbar.visible'] = fNOT(props['toolbar.visible'])
elseif cmd == 410 then -- IDM_VIEWTABBAR
props['tabbar.visible'] = fNOT(props['tabbar.visible'])
elseif cmd == 411 then -- IDM_VIEWSTATUSBAR
props['statusbar.visible'] = fNOT(props['statusbar.visible'])
elseif cmd == 402 then -- IDM_VIEWSPACE
props['view.whitespace'] = fNOT(props['view.whitespace'])
elseif cmd == 403 then -- IDM_VIEWEOL
props['view.eol'] = fNOT(props['view.eol'])
elseif cmd == 404 then -- IDM_VIEWGUIDES
props['view.indentation.guides'] = fNOT(props['view.indentation.guides'])
elseif cmd == 407 then -- IDM_LINENUMBERMARGIN
props['line.margin.visible'] = fNOT(props['line.margin.visible'])
elseif cmd == 413 then -- IDM_OPENFILESHERE
props['check.if.already.open'] = fNOT(props['check.if.already.open'])
elseif cmd == 401 then -- IDM_SPLITVERTICAL
props['split.vertical'] = fNOT(props['split.vertical'])
elseif cmd == 414 then -- IDM_WRAP
props['wrap'] = fNOT(props['wrap'])
elseif cmd == 415 then -- IDM_WRAPOUTPUT
props['output.wrap'] = fNOT(props['output.wrap'])
end
end
Данный код внедрен в форум с помощью скрипта vladvro
save_settings.js
Код:
// Save SciTE Settings
// Version: 1.0
// Autor: mozers™
// ------------------------------------------------
// При завершении работы SciTE (через меню или по шорткату)
// cохраняет размер и положение окна SciTE и другие текущие установки, измененные через меню
// Вызывается из скрипта tools\save_settings.lua
// Для работы требуется SciTE Helper <http://scite.ruteam.ru/poleznye-utility/scite-helper-dlya-upravleniya-redaktorom-iz-skriptov-i-programm>
// ------------------------------------------------
var fso = new ActiveXObject("Scripting.FileSystemObject");
var ForReading = 1, ForWriting = 2, ForAppending = 8;
var SciTE=new ActiveXObject("SciTE.Helper");

var props_file = SciTE.Props('SciteDefaultHome')+'\\SciTEGlobal.properties';

SaveProp('position.left', SciTE.Left);
SaveProp('position.top', SciTE.Top);
SaveProp('position.width', SciTE.Width);
SaveProp('position.height', SciTE.Height);
SaveProp('toolbar.visible', SciTE.Props('toolbar.visible'));
SaveProp('tabbar.visible', SciTE.Props('tabbar.visible'));
SaveProp('statusbar.visible', SciTE.Props('statusbar.visible'));
SaveProp('view.whitespace', SciTE.Props('view.whitespace'));
SaveProp('view.eol', SciTE.Props('view.eol'));
SaveProp('view.indentation.guides', SciTE.Props('view.indentation.guides'));
SaveProp('line.margin.visible', SciTE.Props('line.margin.visible'));
SaveProp('check.if.already.open', SciTE.Props('check.if.already.open'));
SaveProp('split.vertical', SciTE.Props('split.vertical'));
SaveProp('wrap', SciTE.Props('wrap'));
SaveProp('output.wrap', SciTE.Props('output.wrap'));

function SaveProp(key, value){
var file = fso.OpenTextFile(props_file, ForReading);
var text = file.ReadAll();
file.Close();
var re = new RegExp("(\n[\t ]*?"+key+"=).*?\n","ig");
text=text.replace(re,"$1"+value+"\n");
var file = fso.OpenTextFile(props_file, ForWriting);
file.Write(text);
file.Close();
}
Данный код внедрен в форум с помощью скрипта vladvro[/more]
Или вот мой вариант переименования текущего файла (то, что предложил codewarlock1101) только тут закладка остается на прежнем месте:
[more]rename.vbs
Код:
' Rename
' Version: 1.0
' Autor: mozers™ (идея codewarlock1101)
' ------------------------------------------------
' Переименовывает текущий файл
' Для подключения добавьте в свой файл .properties следующие строки:
' command.name.82.*=Rename current file
' command.82.*=wscript "$(SciteDefaultHome)\tools\rename.vbs"
' command.mode.82.*=subsystem:windows,replaceselection:no,savebefore:no,quiet:yes
' command.shortcut.82.*=Shift+F6
' ------------------------------------------------
Option Explicit
Dim FSO, SciTE
Dim dir, filename, filename_new
Set FSO = CreateObject("Scripting.FileSystemObject")
Set SciTE = CreateObject("SciTE.Helper")

dir = SciTE.Props("FileDir")
filename = SciTE.Props("FileNameExt")

filename_new = InputBox("Enter new filename:", "Rename file", filename)

filename = dir & "\" & filename
filename_new = dir & "\" & filename_new

If filename_new <> "" And filename_new <> filename Then
SciTE.Send ("open:" & filename)
SciTE.Send ("saveas:" & filename_new)
FSO.DeleteFile (filename)
End If

Set SciTE = Nothing
Set FSO = Nothing
WScript.Quit
Данный код внедрен в форум с помощью скрипта vladvro[/more]

vladvro
Цитата:
новый функционал для скайта - перемещение табов (вкладок)
Давно мечтал
Автор: mozers, Отправлено:08:18 26-03-2007
C некоторых пор (после доработки [LowerUpperCase]) при компиляции SciTE постоянно получаю предупреждение:
Код:
..\src\Document.cxx(39) : warning C4800: 'BOOL' : forcing value to bool 'true' or 'false' (performance warning)
..\src\Document.cxx(44) : warning C4800: 'BOOL' : forcing value to bool 'true' or 'false' (performance warning)
Понимаю, что это - не страшно, но может быть все таки можно поправить?
Кроме этого места, все остальное компилятору вполне нравится.
Автор: vladvro, Отправлено:14:52 26-03-2007
Обновил скрипт раскраски кода для форума [more]
скрипт по раскраске кода для форума, примером его работы является сам этот пост

code-poster.lua
Код:
[no]-- Code Poster[/no]
[no]-- Version: 1.4.4[/no]
[no]-- Autor: VladVRO[/no]
[no]---------------------------------------------------[/no]
[no]-- Description:[/no]
[no]-- конвертирует выделенный текст или весь файл в форматированный текст форума, используя[/no]
[no]-- синтаксическую подсветку самого редактора (номер стиля) и таблицу цветов STYLES.[/no]
[no]-- корректно работает для: C/C++, CSS, JavaScript, Lau, VB, VBscript, Properties[/no]

[no]-- Для подключения добавьте в свой файл .properties следующие строки:[/no]
[no]-- command.name.125.*=Преобразовать в код для форума[/no]
[no]-- command.125.*=dofile $(SciteDefaultHome)\tools\code-poster.lua[/no]
[no]-- command.mode.125.*=subsystem:lua,savebefore:no[/no]

[no]-- ремарки по использованию:[/no]
[no]-- - в скрипте используется функция editor.LexerLanguage (сборка Ru-Board,[/no]
[no]-- http://scite.ruteam.ru/scite/sborki/scite-ru-board)[/no]
[no]---------------------------------------------------[/no]

local STYLES = {
comment = {color=[no]"008000"[/no], no=true},
number = {color=[no]"AC00A9"[/no]},
string = {color=[no]"9999CC"[/no], no=true},
preproc = {color=[no]"7F7F00"[/no]},
operator = {color=[no]"FF0000"[/no]},
keyword = {color=[no]"0000DF"[/no]},
keyword2 = {color=[no]"0080C0"[/no]},
keyword3 = {color=[no]"8000FF"[/no]},
keyword4 = {color=[no]"FF8000"[/no]},
keyword5 = {color=[no]"660000"[/no]},
keyword6 = {color=[no]"004080"[/no]},
keyword7 = {color=[no]"408080"[/no]},
keyword8 = {color=[no]"AAAA00"[/no]},
}
STYLES.default = {
[1] = STYLES.comment,
[2] = STYLES.comment,
[3] = STYLES.comment,
[4] = STYLES.number,
[5] = STYLES.keyword,
[6] = STYLES.string,
[7] = STYLES.string,
[8] = STYLES.string,
[9] = STYLES.preproc,
[10] = STYLES.operator,
[13] = STYLES.keyword2,
[14] = STYLES.keyword3,
[15] = STYLES.keyword4,
[16] = STYLES.keyword5,
[17] = STYLES.keyword6,
[18] = STYLES.keyword7,
[19] = STYLES.keyword8,
}
STYLES.others = {
[1] = STYLES.comment,
[2] = {color=[no]"0080C0"[/no], no=true},
[3] = STYLES.operator,
[4] = STYLES.preproc,
[5] = STYLES.keyword,
}
STYLES.props = STYLES.others
STYLES.vb = {
[1] = STYLES.comment,
[2] = STYLES.number,
[3] = STYLES.keyword,
[4] = STYLES.string,
[5] = STYLES.preproc,
[6] = STYLES.operator,
[8] = STYLES.number,
[10] = STYLES.keyword2,
[11] = STYLES.keyword3,
[12] = STYLES.keyword4,
}
STYLES.vbscript = STYLES.vb
STYLES.css = {
[1] = STYLES.keyword,
[3] = STYLES.keyword2,
[5] = STYLES.operator,
[6] = STYLES.keyword3,
[8] = STYLES.string,
[9] = STYLES.comment,
[10] = STYLES.number,
[12] = STYLES.preproc,
[13] = STYLES.string,
[14] = STYLES.string,
[15] = STYLES.keyword4,
[16] = STYLES.keyword5,
}
STYLES.cpp = {
[1] = STYLES.comment,
[2] = STYLES.comment,
[3] = STYLES.comment,
[4] = STYLES.number,
[5] = STYLES.keyword,
[6] = STYLES.string,
[7] = STYLES.string,
[8] = STYLES.string,
[9] = STYLES.preproc,
[10] = STYLES.operator,
[13] = STYLES.keyword4,
[14] = STYLES.keyword3,
[15] = STYLES.comment,
[16] = STYLES.keyword2,
[17] = STYLES.comment,
[18] = STYLES.comment,
}
STYLES.cppnocase = STYLES.cpp

local LEXSTYLES
local lex = editor.LexerLanguage
if lex == nil then
LEXSTYLES = STYLES.others
else
LEXSTYLES = STYLES[lex]
if LEXSTYLES == nil then
LEXSTYLES = STYLES.default
end
end

local new = [no]""[/no]
local text = editor:GetSelText()
local line
if text == [no]""[/no] then
editor:SelectAll()
text = editor:GetSelText()
elseif string.len(text) ~= editor.Length then
line = scite.SendEditor(SCI_LINEFROMPOSITION, editor.SelectionStart) + 1
end
local pos = editor.SelectionStart

local text = text..[no]"\n"[/no]
for str in string.gfind(text, [no]"([^\n]*)\n"[/no]) do
[no]-- format next line[/no]
local newstr = [no]""[/no]
local fin = [no]""[/no]
local len = string.len(str)
if string.sub(str,len,len) == [no]"\r"[/no] then
len = len - 1
str = string.sub(str,1,len)
fin = [no]"\r"[/no]
end
local style = LEXSTYLES[scite.SendEditor(SCI_GETSTYLEAT, pos)]
local i0,i = 1,1
while i <= len do
local nstyle
repeat
pos = pos + 1
i = i + 1
nstyle = LEXSTYLES[scite.SendEditor(SCI_GETSTYLEAT, pos)]
until nstyle ~= style or i > len
local txt = string.sub(str,i0,i-1)
i0 = i
txt = string.gsub(txt, string.char(9), [no]" "[/no]) [no]-- change tab to spaces[/no]
if style ~= nil then
if style.no then
txt = [no]"[n[/no][no]o]"[/no]..string.gsub(txt,[no]"%[(/*)no%]"[/no],[no]"[%1n[/n[/no][no]o][n[/no][no]o]o]"[/no])..[no]"[/n[/no][no]o]"[/no]
end
if style.color then
txt = [no]"[color="[/no]..style.color..[no]"]"[/no]..txt..[no]""[/no][/color]
end
end
newstr = newstr..txt
style = nstyle
end
[no]-- append line to formated text[/no]
if new ~= [no]""[/no] then new = new..[no]"\n"[/no] end
new = new..newstr..fin
pos = pos + string.len(fin) + 1
end

[no]-- add remarks[/no]
local header = [no]""[/no]
if props[[no]"FileNameExt"[/no]] ~= [no]""[/no] then
header = [no]""[/no]..props[[no]"FileNameExt"[/no]]..[no]" "[/no]
if line ~= nil then
header = header..[no]" строка "[/no]..line..[no]" "[/no]
[no]-- remove empty line after code block[/no]
local l = string.len(new)
if string.sub(new,l,l) == [no]"\n"[/no] then
if string.sub(new,l-1,l-1) == [no]"\r"[/no] then
new = string.sub(new,1,l-2)
else
new = string.sub(new,1,l-1)
end
end
end
end
local footer = [no]" Данный код внедрен в форум с помощью скрипта vladvro\n"[/no]
new = header..[no]"
Код:
"[/no]..new..[no]"
"[/no]..footer

[no]-- update text in editor[/no]
local ss = editor.SelectionStart
editor:ReplaceSel(new)
editor:SetSel(ss, ss+string.len(new))
Данный код внедрен в форум с помощью скрипта vladvro
[/more]
Автор: dB6, Отправлено:16:39 26-03-2007
mozers
Цитата:
C некоторых пор (после доработки [LowerUpperCase]) при компиляции SciTE постоянно получаю предупреждение:
..
Понимаю, что это - не страшно, но может быть все таки можно поправить?

Попробуй сделать так:
return IsCharUpperA(ch)!=0;    //!-add-[LowerUpperCase]




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