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

» SciTE - Open Source Text Editor for Windows & Linux

Автор: Ekstazi
Дата сообщения: 02.05.2007 00:08
Возможно ли сделать SciTe как IDE? То есть чтоб отслеживались имена переменных/функций, их типы, возможные методы и функции для них ?
Автор: bit_developer
Дата сообщения: 02.05.2007 07:13
Vladvro

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


Корректирую вопрос.
Задан список ключевых слов для подсветки, например, синим цветом: keyword1, keyword2.
В обычном месте кода эти слова посвечиваются: keyword1 := 1;
Но как только заключаю это слово в скобки, подсветка пропадает.
В подсветке для Perl (perl_.properties) такая подсветка в скобках работает, и даже фолдинг для "{}" обрабатывается.
Вот и навело на мысль что это какая-то настройка, а какая- найти не удалось.
Автор: vladvro
Дата сообщения: 03.05.2007 10:07
bit_developer
Цитата:
Но как только заключаю это слово в скобки, подсветка пропадает.

а в каком языке так происходит?
Автор: bit developer
Дата сообщения: 03.05.2007 11:04
vladvro
Например, ps.properties (PostScript)
Я было подумал, что достаточно добавить свои настройки (icl.properties) и новый язык появиться в SciTe, но сейчас понял, что лексер надо добавлять в исходник.
Автор: vladvro
Дата сообщения: 03.05.2007 12:53
bit developer
Цитата:
Например, ps.properties (PostScript)

на сколько я понял, в PostScript в круглых скобках заключается Текст, понятно что в нем нет подсветки ключевых слов.

Цитата:
Я было подумал, что достаточно добавить свои настройки (icl.properties) и новый язык появиться в SciTe, но сейчас понял, что лексер надо добавлять в исходник.

правильно понял.
с помощью настроек можно добавить поддержку нового языка, если его синтиксис аналогичен одному из поддерживаемых редактором, а отличается только набор ключевых слов.
Автор: BioInfo
Дата сообщения: 03.05.2007 15:28

Цитата:
Как сделать чтобы если в style.*.32 не указан параметр back, то SciTE не красил бы тогда фон окна в белый цвет? Чтобы он, при отсутствии этого параметра, вообще окно ни в какой цвет не красил! Чтобы фон окна оставался как есть по умолчанию, т.е. равным системному Window Background.


Я решил эту задачу так:
В файле SciTEProps.cxx нужно заменить функцию (см ниже) и будет счастье ;)


Код: void SciTEBase::ReadFontProperties() {
char key[200];
SString sval;

[no]// Set styles[/no]
[no]// For each window set the global default style, then the language default style, then the other global styles, then the other language styles[/no]

SendEditor(SCI_STYLERESETDEFAULT, 0, 0);
SendOutput(SCI_STYLERESETDEFAULT, 0, 0);

sprintf(key, [no]"style.%s.%0d"[/no], [no]"*"[/no], STYLE_DEFAULT);
sval = props.GetNewExpand(key);
[no]/*![/no]
[no] SetOneStyle(wEditor, STYLE_DEFAULT, sval.c_str());[/no]
[no] SetOneStyle(wOutput, STYLE_DEFAULT, sval.c_str());[/no]
[no]*/[/no]
[no]//!-start-[StyleDefault][/no]
#if PLAT_WIN
StyleDefinition style(sval.c_str());
char sColor[8];
ColourDesired color;
if (!(style.specified & StyleDefinition::sdBack)) {
color.Set( ::GetSysColor(COLOR_WINDOW) );
sprintf(sColor, [no]"#%2X%2X%2X\0"[/no],color.GetRed(), color.GetGreen(), color.GetBlue() );
style.back = sColor;
style.back.substitute([no]' '[/no], [no]'0'[/no]);
style.specified = static_cast<StyleDefinition::flags>(style.specified | style.sdBack);
}
if (!(style.specified & StyleDefinition::sdFore)) {
color.Set( ::GetSysColor(COLOR_WINDOWTEXT) );
sprintf(sColor, [no]"#%2X%2X%2X\0"[/no],color.GetRed(), color.GetGreen(), color.GetBlue() );
style.fore = sColor;
style.fore.substitute([no]' '[/no], [no]'0'[/no]);
style.specified = static_cast<StyleDefinition::flags>(style.specified | style.sdFore);
}
SetOneStyle(wEditor, STYLE_DEFAULT, style);
SetOneStyle(wOutput, STYLE_DEFAULT, style);
#else
SetOneStyle(wEditor, STYLE_DEFAULT, sval.c_str());
SetOneStyle(wOutput, STYLE_DEFAULT, sval.c_str());
#endif
[no]//!-end-[StyleDefault][/no]

sprintf(key, [no]"style.%s.%0d"[/no], language.c_str(), STYLE_DEFAULT);
sval = props.GetNewExpand(key);
SetOneStyle(wEditor, STYLE_DEFAULT, sval.c_str());

SendEditor(SCI_STYLECLEARALL, 0, 0);

SetStyleFor(wEditor, [no]"*"[/no]);
SetStyleFor(wEditor, language.c_str());

SendOutput(SCI_STYLECLEARALL, 0, 0);

sprintf(key, [no]"style.%s.%0d"[/no], [no]"errorlist"[/no], STYLE_DEFAULT);
sval = props.GetNewExpand(key);
SetOneStyle(wOutput, STYLE_DEFAULT, sval.c_str());

SendOutput(SCI_STYLECLEARALL, 0, 0);

SetStyleFor(wOutput, [no]"*"[/no]);
SetStyleFor(wOutput, [no]"errorlist"[/no]);

if (CurrentBuffer()->useMonoFont) {
sval = props.GetExpanded([no]"font.monospace"[/no]);
StyleDefinition sd(sval.c_str());
for (int style = 0; style <= STYLE_MAX; style++) {
if (style != STYLE_LINENUMBER) {
if (sd.specified & StyleDefinition::sdFont) {
SendEditorString(SCI_STYLESETFONT, style, sd.font.c_str());
}
if (sd.specified & StyleDefinition::sdSize) {
SendEditor(SCI_STYLESETSIZE, style, sd.size);
}
}
}
}
}
Автор: mozers
Дата сообщения: 03.05.2007 20:27
BioInfo
Круть!
Если мы и дальше такими темпами пойдем, то ссылку Нерешенные задачи и вопросы можно будет скоро убирать

Ekstazi
Цитата:
Возможно ли сделать SciTe как IDE? То есть чтоб отслеживались имена переменных/функций, их типы, возможные методы и функции для них ?
SciTE всетаки - обычный текстовый редактор, а не IDE для полусотни различных языков программирования. Возможно присобить Скайт показывать всплывающие подсказки по синтаксу и подсказывать свойства и методы объекта по его имени (при известных ограничениях, конечно). Это отлично работает в SciTE-Ru, но только для тех языков, для которых ктото потрудился и ручками набрал соответствующие api-файлы.
Можно ли сделать чтобы свойства и методы объекта извлекались автоматически?
Думаю, что - да, но только с помощью какой то сторонней проги, обладающей подобным функционалом.
Автор: BioInfo
Дата сообщения: 05.05.2007 22:07
Компилю с ворнингами, хочу поделится опасениями:

1.
liolib.c
..\lua\src\lib\liolib.c(603) : warning C4244: '=' : conversion from 'double ' to 'unsigned short ', possible loss of data
..\lua\src\lib\liolib.c(663) : warning C4244: '=' : conversion from 'double ' to 'int ', possible loss of data
Это в разделе [os.run], если напарили то исправьте, а если все нормально то нужно явное приведение типов делать (и другим спокойнее)

2.
SciTEBase.cxx
..\src\SciTEBase.cxx(2319) : warning C4702: unreachable code
В разделе [AutoComplete]
Вот такое условие никогда не выполнится
if (onlyOneWord && nwords > 1) {
    return true;
}
потому как выше по тексту bool onlyOneWord=false;
Это такой задел на будущее, косяк или кто-то забыл отладочную инфу убрать?

3.
А вот это не понял с чем связано, может подскажете?
..\src\IFaceTable.cxx(2035) : warning C4514: 'GetterFunction' : unreferenced inline function has been removed
..\src\IFaceTable.h(46) : see declaration of 'GetterFunction'
..\src\IFaceTable.cxx(2035) : warning C4514: 'SetterFunction' : unreferenced inline function has been removed
..\src\IFaceTable.h(51) : see declaration of 'SetterFunction'

Заметил в редакторе странность: нельзя создать два новых листа, никто не знает с чем связано?

Данный вопрос у меня возник всвязи с тем что я реалезовал новую фичу (все любителям огненного лиса посвящаю)
Смысл в следующем: двойном клик на пустом месте около табов (справа от них) == команде "Создать Ctrl+N"

Реализация (файл SciTEWin.cxx) - немного корректируем следующие функции:

Код: void SciTEWin::Register(HINSTANCE hInstance_) {
... код поскипан ...
[no]// Register the frame window[/no]
className = [no]"SciTEWindow"[/no];
[no]//! wndclass.style = 0;[/no]
[no]//!-start-[new_on_dbl_clk] [/no]
wndclass.style = CS_DBLCLKS;
[no]//!-end-[new_on_dbl_clk][/no]
wndclass.lpfnWndProc = SciTEWin::TWndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = sizeof(SciTEWin*);
wndclass.hInstance = hInstance;
wndclass.hIcon = ::LoadIcon(hInstance, resourceName);
wndclass.hCursor = NULL;
wndclass.hbrBackground = NULL;
wndclass.lpszMenuName = resourceName;
wndclass.lpszClassName = className;
if (!::RegisterClass(&wndclass))
exit(FALSE);
... код поскипан ...
}
Автор: vladvro
Дата сообщения: 07.05.2007 08:49
BioInfo
Цитата:
Заметил в редакторе странность: нельзя создать два новых листа, никто не знает с чем связано?
у меня спокойно создает сколько угодно новых, попробуй в оригинальной сборке (с оригинальными бинарниками).

Цитата:
Хорошая штука "преобразовать код для публикации на форуме", не планируется такую же сделать для публикации в html? Мне бы очень пригодилась, может кто видел? Или может лучше расширите функционал нашего всеми горячо любимого SciTE?
уже есть, посмотри функцию File->Export->As HTML (или в руссификации: Файл->экспортировать->в формате HTML)

Автор: BioInfo
Дата сообщения: 07.05.2007 12:28
vladvro

Цитата:
у меня спокойно создает сколько угодно новых, попробуй в оригинальной сборке (с оригинальными бинарниками).

У меня тоже: только в одном случае не создает, это когда открыт только один новый чистый буфер, говоришь создай еще один и ничего... Правда если внести изменение в него то создать можно будет... Странность какая то.

Цитата:
уже есть, посмотри функцию File->Export->As HTML (или в руссификации: Файл->экспортировать->в формате HTML)

Это то я в курсе, только пользоваться такой штукой... как бы сказать, не очень удобно. Вот например чтобы вставить кусок кода в форум, я этот кусок выделяю, нажимаю преобразовать и вставляю... А вот чтобы вставить хтмл нужно изрядно попотеть! К тому же он делает по принципу что вижу то и фигарю, шрифты и прочее... У меня на сайте шрифты уже настроены, мне их менять не нужно. Нужно только раскрасить код, заменить проблемные символы (может даже в пре сделать), ну и уж чтобы совсем хорошо было в рамочку обернуть... Вот такая у меня заветная мечта

в народ...
Сделал чтобы контекстные меню были полностью настраиваемыми, причем автор изначально почему-то не предусмотрел чтобы меню содержало вложенное меню, я это досадное недоразумение поправил. Выглядит это примерно так:

Код: user.context.menu=\
Undo|IDM_UNDO|\
Redo|IDM_REDO|\
||\
Cut|IDM_CUT|\
Copy|IDM_COPY|\
Paste|IDM_PASTE|\
Delete|IDM_CLEAR|\
||\
Select All|IDM_SELECTALL|\
Select|POPUPBEGIN|\
Новый файл из выделенного|2034|\
Закоментировать выделенное|IDM_BLOCK_COMMENT|\
||\
Make Selection Uppercase|IDM_UPRCASE|\
Make Selection Lowercase|IDM_LWRCASE|\
Select|POPUPEND|\
||\
Toggle Bookmark|IDM_BOOKMARK_TOGGLE|\
||\
Close|IDM_CLOSE|
Автор: vladvro
Дата сообщения: 07.05.2007 14:03
BioInfo
Цитата:
У меня тоже: только в одном случае не создает, это когда открыт только один новый чистый буфер, говоришь создай еще один и ничего... Правда если внести изменение в него то создать можно будет... Странность какая то.
А, вот когда... полагаю, что это связанно с автоматическим закрытием пустого нового буфера (если в редакторе открыт только он) при открытии нового, например загрузке файла.

Цитата:
Это то я в курсе, только пользоваться такой штукой... как бы сказать, не очень удобно...
А... не, ну если тебе надо такой узко специализированый функционал, то думаю можно его реализовать на основе моего скрипта по раскраске для форума, поменять в нем теги, убрать лишнее, перенастроить на html. А ты с Луа совсем не знаком? впринципе язык простой.
Автор: BioInfo
Дата сообщения: 07.05.2007 15:56
vladvro

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

Ясно, ладно, не критично...

Цитата:
А ты с Луа совсем не знаком? впринципе язык простой.

Совсем, даже не знаю что это такое... Я человек не образованный, тока на плюсах могу, ну и другое старенькое по мелочи... Из новых веяний только Питон поставил и то чето как то не очень (как говорится: ты просто не умеешь его готовить )



Цитата:
В меню Tools отсутствует возможность вставлять разделители.
Попытку реализовать разделители предпринял Moon_aka_Sun. Увы, дело не доведено до конца.

Первое что пришло в голову когда увидел код: "Аааа!!! Какой ужас! Переписать все наф...", но потом подумал и решил, что это слишком сильное высказывание, как говорится "Не трогай оно и пахнуть не будет" По этому я просто дописал кусок про разделители, смысл в следующем: если написать command.separator.100=1, то перед командой 100, появится разделитель (аналогично для любой команды).
Наслаждайтесь, вроде пашет (данную функцию нужно полностью заменить в SciTEBuffers.cxx):

Код: void SciTEBase::SetToolsMenu() {
[no]//command.name.0.*.py=Edit in PythonWin[/no]
[no]//command.0.*.py="c:\program files\python\pythonwin\pythonwin" /edit c:\coloreditor.py[/no]
RemoveToolsMenu();
int menuPos = TOOLS_START;
[no]//! for (int item = 0; item < toolMax; item++) {[/no]
[no]//!-start-[SubMenu][/no]
[no]//~ Structure for creation of menu map (to simplify adding submenu)[/no]
struct UserMenu {
HMENU hMenu;
SString name;
int Parent;
} UMenu[toolMax];

int item;

[no]// Clear structure from random values.[/no]
for (item = 0; item < toolMax; item++) {
UMenu[item].hMenu = NULL;
UMenu[item].Parent = -1;
}

[no]//~ Handle to Tools menu[/no]
HMENU hToolsMenu = ::GetSubMenu(::GetMenu(reinterpret_cast<HWND>(wSciTE.GetID())), menuTools);

[no]// First add user defined submenus (Create all PopUps)[/no]
for (item = 0; item < toolMax; item++) {
SString prefix = [no]"command.submenu.name."[/no];
prefix += SString(item);
prefix += [no]"."[/no];
SString commandName = props.GetNewExpand(prefix.c_str(), filePath.AsInternal());
if (commandName.length()) {
UMenu[item].hMenu = ::CreatePopupMenu();
UMenu[item].name = commandName;
prefix = [no]"command.submenu.parent."[/no];
prefix += SString(item);
int parentMenu = props.GetInt(prefix.c_str());
if(parentMenu != NULL && parentMenu < toolMax) {
int i = parentMenu;
do { [no]//~ To avoid all possible infinite loops through user's fault (Who them knows [/no]
i = UMenu[i].Parent;
} while (i != -1 && i != item && i != parentMenu);
if (i == -1 && item != parentMenu) UMenu[item].Parent = parentMenu;
}
}
}

for (item = 0; item < toolMax; item++) {
if (UMenu[item].name.length()) {
SString localised = localiser.Text(UMenu[item].name.c_str());
if(UMenu[item].Parent >= 0 && IsMenu(UMenu[UMenu[item].Parent].hMenu))
::AppendMenu(UMenu[UMenu[item].Parent].hMenu, MF_STRING | MF_POPUP, (UINT)UMenu[item].hMenu, localised.c_str());
else
::InsertMenu(hToolsMenu, menuPos++, MF_BYPOSITION | MF_STRING | MF_POPUP, (UINT)UMenu[item].hMenu, localised.c_str());
}
}
[no]// ::InsertMenu(hToolsMenu, menuPos++, MF_BYPOSITION | MF_SEPARATOR, IDM_TOOLS + toolMax + 1, "");[/no]

for (item = 0; item < toolMax; item++) {
[no]//!-end-[SubMenu][/no]
int itemID = IDM_TOOLS + item;
SString prefix = [no]"command.name."[/no];
prefix += SString(item);
prefix += [no]"."[/no];
SString commandName = props.GetNewExpand(prefix.c_str(), FileNameExt().AsInternal());
if (commandName.length()) {
SString sMenuItem = commandName;
prefix = [no]"command.shortcut."[/no];
prefix += SString(item);
prefix += [no]"."[/no];
SString sMnemonic = props.GetNewExpand(prefix.c_str(), FileNameExt().AsInternal());
if (item < 10 && sMnemonic.length() == 0) {
sMnemonic += [no]"Ctrl+"[/no];
sMnemonic += SString(item);
}
[no]/*![/no]
[no] SetMenuItem(menuTools, menuPos, itemID, sMenuItem.c_str(), sMnemonic[0] ? sMnemonic.c_str() : NULL);[/no]
[no] menuPos++;[/no]
[no] }[/no]
[no] }[/no]
[no]*/[/no]
[no]//!-start-[SubMenu][/no]
prefix = [no]"command.separator."[/no];
prefix += SString(item);
int issep = props.GetInt(prefix.c_str());

[no]// Finally add functions stated in "command.menu." in right submenu's (by default directly in Tools menu)[/no]
prefix = [no]"command.parent."[/no];
prefix += SString(item);
int toMenu = props.GetInt(prefix.c_str());
if(toMenu != NULL && toMenu >= 0 && toMenu < toolMax && IsMenu(UMenu[toMenu].hMenu)) {
SString localised = localiser.Text(sMenuItem.c_str());
if (issep)
::InsertMenu(UMenu[toMenu].hMenu, itemID, MF_BYPOSITION | MF_SEPARATOR, IDM_TOOLS + toolMax + 1, [no]""[/no]);
[no]//SetMenuItem(UMenu[toMenu].hMenu, itemID, localised.c_str(), sMnemonic[0] ? sMnemonic.c_str() : NULL);[/no]
SetMenuItem(UMenu[toMenu].hMenu, itemID, localised.c_str(), sMnemonic[0] ? sMnemonic.c_str() : NULL);
}
else {
if (issep) {
::InsertMenu(hToolsMenu, menuPos, MF_BYPOSITION | MF_SEPARATOR, IDM_TOOLS + toolMax + 1, [no]""[/no]);
menuPos++;
}
SciTEBase::SetMenuItemLocalised(menuTools, menuPos, itemID, sMenuItem.c_str(), sMnemonic[0] ? sMnemonic.c_str() : NULL);
menuPos++;
}
}
}
[no]//!-end-[SubMenu][/no]

menuPos--; [no]//!-add-[Tools][/no]
DestroyMenuItem(menuTools, IDM_MACRO_SEP);
DestroyMenuItem(menuTools, IDM_MACROLIST);
DestroyMenuItem(menuTools, IDM_MACROPLAY);
DestroyMenuItem(menuTools, IDM_MACRORECORD);
DestroyMenuItem(menuTools, IDM_MACROSTOPRECORD);
menuPos++;
if (macrosEnabled) {
SetMenuItem(menuTools, menuPos++, IDM_MACRO_SEP, [no]""[/no]);
SetMenuItemLocalised(menuTools, menuPos++, IDM_MACROLIST,
[no]"&List Macros..."[/no], [no]"Shift+F9"[/no]);
SetMenuItemLocalised(menuTools, menuPos++, IDM_MACROPLAY,
[no]"Run Current &Macro"[/no], [no]"F9"[/no]);
SetMenuItemLocalised(menuTools, menuPos++, IDM_MACRORECORD,
[no]"&Record Macro"[/no], [no]"Ctrl+F9"[/no]);
SetMenuItemLocalised(menuTools, menuPos++, IDM_MACROSTOPRECORD,
[no]"S&top Recording Macro"[/no], [no]"Ctrl+Shift+F9"[/no]);
}
}
Автор: mozers
Дата сообщения: 07.05.2007 20:30
Ядро 1.73 .39Ru
EXE + DLL [458kB]
Source [399kB] (только измененные файлы)
Цитата:
[SubMenu] (Автор: HSolo, Доработка: Дмитрий Маслов)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
В меню Tools теперь возможно вставлять разделители.
Например command.separator.34=1 вставляет разделитель перед командой 34
Подправлены объявления переменных в циклах.

[os.run] (Автор: mimir, Доработка: Дмитрий Маслов)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Убрана зависимость от #include <strsafe.h>

[StyleDefault] (Автор: VladVRO, Дмитрий Маслов)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Если в style.*.32 явно не задан цвет символов и фона, то эти параметры берутся из настроек Windows, т.е. равными системным Window Text/Background.

[position.autosave] (Автор: Дмитрий Маслов)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Параметр position.autosave=1 позволяет запоминать позицию и размеры окна при закрытии

[VC6_compatibility] (Автор: Дмитрий Маслов)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Добавлена совместимость с компилятором Visual C++ 6.0
Убраны причины некоторых ворнингов
warning C4702: unreachable code

[TabbarTitleMaxLength] (Автор: VladVRO)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Новый параметр в .properties
tabbar.title.maxlength=число
Накладывает ограничение на длину надписи (имя файла) в табе. Если имя файла длиннее, то оно будет урезано с пометкой "…"

В общем, включено все, чем одарил нас наш новый Автор - BioInfo aka Дмитрий Маслов
Тестируем и наслаждаемся
Конечно, хотелось бы добавить
Цитата:
полностью настраиваемое контекстное меню
двойной клик на пустом месте около табов (справа от них) == команде "Создать Ctrl+N"
(думаю, что это многим бы понравилось), но Дмитрий код мне прислать забыл... Надеюсь, в следующей версии все будет
Автор: BioInfo
Дата сообщения: 07.05.2007 20:48
mozers

Цитата:
Дмитрий код мне прислать забыл... Надеюсь, в следующей версии все будет

Я столько вопросов в личку отправил, чирканул бы пару строк чтоли... А то потом говорит забыл!
Сейчас работаю над настраиваемым тулбаром, а то на эти макросы смотреть нет больше мочи Доделаю все скопом вышлю.

Вообще товарищи, кто читает этот топик, давайте по активнее, еще куча вещей хороших можно сделать. Если не в программинге, то хотябы с расцветкой что-то нужно делать, зелень просто не годиться никуда!
Предлагаю всем запостить свои расцветки, потом выберем самую лучшую как дефолтную на общем голосовании.
Автор: vladvro
Дата сообщения: 08.05.2007 10:04
BioInfo
Цитата:
Вообще товарищи, кто читает этот топик, давайте по активнее, еще куча вещей хороших можно сделать.

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


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

вобщем-то это вопрос исключительно личных предпочтений, но полагаю, что частично завязан на проблему использования жирного стиля шрифтов.
для себя эту проблему я решил использованием шрифта Courier New - не лучший по начертанию шрифт, но из двух зол выбирают меньшее
вот примеры моих раскрасок:
для С/С++
для Луа
для HTML + PHP + JavaScript
для ASP
для VBA
Автор: BioInfo
Дата сообщения: 08.05.2007 10:57
vladvro

C перетаскиванием закладок посмотрю что можно сделать.

Про шрифт даже хз, это точно не от самих шрифтов зависит? В других редакторах нормально все? Есть предположения откуда ноги растут?

А что за диалог ввода такой, где его посмотреть можно? Из программы он как то вызывается? Для чего используется?
Автор: vladvro
Дата сообщения: 08.05.2007 11:39
BioInfo
Цитата:
Про шрифт даже хз, это точно не от самих шрифтов зависит? В других редакторах нормально все? Есть предположения откуда ноги растут?

да, это зависит от самих шрифтов (можно проверить, например, в том же ворде), но утверждается, что есть редакторы которые эту проблему решают. как? увы не знаю...

Цитата:
А что за диалог ввода такой, где его посмотреть можно? Из программы он как то вызывается? Для чего используется?

в оригинальном редакторе этот диалог используется для ввода параметров перед запуском команды, например:
Код: 1=DOS-command
command.parent.79=30
command.name.79.*=Run in console
command.79.*=*cmd.exe /k $(1) "$(CurrentSelection)"
command.mode.79.*=subsystem:shellexec
Автор: mozers
Дата сообщения: 08.05.2007 14:21
BioInfo
Цитата:
Компилю с ворнингами, хочу поделится опасениями:
Я так понял, что ты это дело исправил?
Если - ДА, то хорошо (чувствуется, что от авторов ответа мы не дождемся...

Цитата:
Хорошая штука "преобразовать код для публикации на форуме", не планируется такую же сделать для публикации в html?
шрифты уже настроены, мне их менять не нужно. Нужно только раскрасить код
Присоединяюсь к просьбе (Могу сам, но думаю что доброму автору - сподручнее Если не влом, конечно, ...

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

Цитата:
- заставить редактор отображать моноширинный жирный и не жирный шрифт одной шириной
Имхо - это ДИКО сложная задача (зря будет потрачено драгоценное время на разбивание стенки собственной башкой).
Остальное - добавляю в список "Нерешенные задачи и вопросы"
Автор: BioInfo
Дата сообщения: 08.05.2007 15:18
mozers

Цитата:
Я так понял, что ты это дело исправил?
Если - ДА, то хорошо (чувствуется, что от авторов ответа мы не дождемся...

Конкретно эти нет, остальные поправил... Надоело на них смотреть.

vladvro
А как нить можно еще этот диалог использовать? (Я вот все думаю как бы он мне зачем нибудь пригодился, до только cmd я использую крайне редко)

Цитата:
список кнопок

А какие кнопки там нужны?


Цитата:
"Собрать F7"

Вот интересная какая штука, запустить и откомпилить не хочет, а собрать пожалуйста...
Просветите в двух словах в чем разница между F5, F7 и Ctrl+F7 и если можно с примером. Что задумывается под этими командами, смая из которых для меня не очевидная это "собрать"?
Автор: mozers
Дата сообщения: 08.05.2007 23:26
BioInfo
Попробую встрять, поскольку vladvro очевидно ответить сможет только после праздников.

Цитата:
А как нить можно еще этот диалог использовать?
А какие кнопки там нужны?

Все дело в том, что на LUA скриптах (поскольку LUA интегрирован в SciTE) очень легко организовать обмен данными между скриптом и SciTE (на других скриптовых языках необходимо для этого использовать посредники, например тот же SciTE.Helper) => можно создавать любые дополнения к SciTE не влезая в исходный код.
Но у LUA есть один серьезный недостаток - в нем ВООБЩЕ нет НИКАКИХ диалоговых окон
Вот поэтому vladvro и придумал использовать в качестве диалогового окна для LUA-шных скриптов, стандартное диалоговое окно SciTE "Параметры" (Shift+F8). Подробности...
Понятное дело, что на все случаи такой диалог не годится. Хотелось бы его сделать более универсальным. Конечно такое диалоговое окно как на HTA все равно не сделаешь, но хотя бы возможность задать количество полей ввода и не зарезанный текст в заголовке для начала....

Цитата:
Просветите в двух словах в чем разница между F5, F7 и Ctrl+F7

А никакой разницы то и нету Чисто условно все.
Какие команды навесишь на compile, build и go - те и будут выполнятся. Вот, например, так:

Код: [no]# Команда меню - Компилировать (Ctrl+F7)[/no]
command.compile.$(file.patterns.wscript)=C:\Developer\WSH\scd.exe "$(FilePath)"
command.compile.subsystem.$(file.patterns.wscript)=2

[no]# Команда меню - Собрать (F7)[/no]
command.build.$(file.patterns.wscript)=cscript /nologo "$(FilePath)"
command.build.subsystem.$(file.patterns.wscript)=1

[no]# Команда меню - Выполнить (F5)[/no]
command.go.$(file.patterns.wscript)="$(FilePath)"
command.go.subsystem.$(file.patterns.wscript)=2
Автор: DeadMorozBLR
Дата сообщения: 09.05.2007 16:06
Извините, что вклиниваюсь в ваш девелоперский тред, у меня вопрос пользователя: можно ли сделать так, чтобы при настройках с горизонтальным разделителем редактора и консоли консоль по умолчанию была скрыта, но при этом при автоматическом открытии по F5 ее размер был отличным от размера по умолчанию (вроде как 100px)? Т.е. если указать output.vertical.size=240, консоль всегда открыта (и в большинстве моих случаев без надобности отнимает место на экране), а если ничего не указывать или output.vertical.size=0 - автоматически открывается, но узкая.
Автор: mozers
Дата сообщения: 09.05.2007 17:00
DeadMorozBLR
Цитата:
Извините, что вклиниваюсь в ваш девелоперский тред
Ну зачем так то..? Этот тред - ЕДИНЫЙ для ВСЕГО, что связано с SciTE.
Здесь - любой вопрос - интересен и к месту

Собственно, ответ на заданный вопрос:
Код: split.vertical=1
output.horizontal.size=240
output.initial.hide=1
Автор: slech
Дата сообщения: 09.05.2007 20:24
Соори за непроффесионализм
Ищу замену платному Dreamweaver - как для этого SciTE ?
Автор: mozers
Дата сообщения: 10.05.2007 10:07
slech
Dreamweaver работает по принципу визуального конструирования "что вижу то и получаю" WYSIWYG. Т.е. можно совершенно не зная HTML страницы рисовать как в Word-е.
SciTE - отличный редактор (с подсветкой синтаксиса, подсказками, шаблонами) для правки HTML кода. Т.е. написал код - нажал F5 - в браузере открылась отредактированная страничка.
Автор: slech
Дата сообщения: 10.05.2007 10:46
mozers спасибо.
Значит мне стоит смотреть в сторону NVU - визуальный (WYSIWYG) HTML редактор.
Автор: mozers
Дата сообщения: 10.05.2007 12:34
slech
ИМХО какой бы хороший WYSIWYG редактор не был (альтернатив - полно) а все равно постепенно придешь к прямой правке кода.
Ладно, завязываем

Добавлено:
Ядро 1.73 .40Ru
EXE + DLL [459kB]
Source [404kB] (только измененные файлы)
Цитата:
[ExtendedContextMenu] (Автор: Дмитрий Маслов)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Новые параметры в .properties позволяют ПОЛНОСТЬЮ настроить контекстные меню:
user.context.menu - контекстное меню редактора
user.tabcontext.menu - контекстное меню закладок
user.outputcontext.menu - контекстное меню консоли
С помощью параметров POPUPBEGIN и POPUPEND возможно создание подменю!

[SubMenu] (Автор: HSolo, Доработка: Дмитрий Маслов)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Большая часть кода поглощена доработкой [ExtendedContextMenu]

[VC6_compatibility] (Автор: Дмитрий Маслов)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Авторский код исправлен чтобы не показывало предупреждений при компиляции в Visual C++ 6.0

[user.toolbar] (Автор: Дмитрий Маслов)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Новый параметр в .properties
user.toolbar
Определяет все иконки и команды отображаемые на панели инструментов

[new_on_dbl_clk] (Автор: Дмитрий Маслов)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Добавлен функционал: На двойной клик по свободному месту справа от закладок открывается новый файл (а ля FireFox)

Я бы назвал эту версию "беттой". Не потому что глючит - все работает как задумано. Просто некоторые вещи (например [user.toolbar]) так и просятся к дальнейшему усовершенствованию. Так и не написана английская аннотация за 3 последних версии... В общем, недоработки - есть. Но и держать этот труд у себя в закромах не могу - свежие интересные идеи жгут руки.
В общем - пробуйте, предлагайте, дорабатывайте! Я очень надеюсь на вас...
BioInfo крепко увяз в дипломе. Так что все - в наших руках
Автор: iglezz
Дата сообщения: 10.05.2007 23:45
Есть парочка пожеланий к нашим уважаемым разработчикам:
1. разделители в меню Language не заметил что они присутствуют
2. маленький howto по использованию [user.toolbar]
пока понял как добавить разделитель (-1|0|) и кнопку к встроенным коммандам (STD_FILENEW|IDM_NEW|)
Автор: s_mart
Дата сообщения: 11.05.2007 08:13
поставил ядро .40 на .37, слетел тулбар :(
пустая полоса без кнопок, че не так?
Автор: Midas
Дата сообщения: 11.05.2007 09:52
Уменьшенная версия MinGW - http://kmidas.narod.ru/files/mingw.rar (5.5 mb)
Внимание: ругается на лишнюю ";" в файле scite\src\SciTEBuffers.cxx на строке 1383
Автор: iglezz
Дата сообщения: 11.05.2007 10:21

Цитата:
поставил ядро .40 на .37, слетел тулбар
пустая полоса без кнопок, че не так?

Издержки внедрения настраиваемого тулбара
в SciTEWinBar.cxx
закоментированы стандартные кнопки (начиная с 790 строки)

Восстановить можно прописав в SciTEGlobal.properties или SciTEUser.properties

Код:
user.toolbar=\
-1|0|\
0|IDM_NEW|\
1|IDM_OPEN|\
2|IDM_SAVE|\
12|IDM_CLOSE|\
-1|0|\
3|IDM_PRINT|\
-1|0|\
4|IDM_CUT|\
5|IDM_COPY|\
6|IDM_PASTE|\
7|IDM_CLEAR|\
-1|0|\
8|IDM_UNDO|\
9|IDM_REDO|\
-1|0|\
10|IDM_FIND|\
11|IDM_REPLACE|\
-1|0|\
13|IDM_MACRORECORD|\
14|IDM_MACROSTOPRECORD|\
15|IDM_MACROPLAY|

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869

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


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