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

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

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


Автор: VVP91, Отправлено:12:23 27-04-2007

Цитата:
Возникает вопрос по какому принципу строить дерево (дерево проекта из нескольких файлов - это понятно, но дерево на основе одного файла - имхо надуманно очень)... Или ты про браузер объектов говоришь?
Не совсем про браузер объектов. В Delphi есть такая штука, как Code Explorer. Этот инструмент отображает структуру конкретного файла - классы, типы, переменные, свободные процедуры и функции, методы и аттрибуты классов, перечень подключаемых модулей. Все это возможно по разному группировать, отмечать незавершенные классы. Все это несколько упрощает работу с большими исходниками.

Цитата:
Или ты про браузер объектов говоришь? Имхо последнее осуществимо только для конкретного языка программирования и является далеко не тривиальной задачей.

Да я собственно согласен, что далеко не простенькая задача. Поэтому и интересуюсь у сообщества, какие есть подвижки в этом направлении.

Автор: vladvro, Отправлено:12:54 28-04-2007
bit developer
Цитата:
Как настроить текст в скобках "(" и ")"?
Т.е. нужно, чтобы между скобками обрабатывались другие ключевые слова.
Например: procedure(param1,param2)

т.е. что бы ключевые слова внутри круглых скобок отображались иначе чем вне скобок?
в общем случае - никак.
вся раскраска синтаксиса завязанна на возможности текущего лексера.
возможно среди существующих есть такой, где обрабатывается подобная ситуация, но будет ли он в остальном подходить?
Автор: mozers, Отправлено:19:39 28-04-2007
VVP91
Имхо тебе надо искать отдельную прогу с желаемым функционалом. Вот как найдешь - тогда будем думать можно ли ее к SciTE приладить
Твой вопрос подтолкнул мою давнюю мечту - сделать браузер объектов DOM. Сделал Выбираешь html файл и видишь все объекты, их свойства и значения что имеются на странице. Вот только не знаю где бы мое творение выложить чтобы прославиться Если кто знает - напишите в ПМ - тут это - оффтопик
Автор: mimir, Отправлено:19:41 28-04-2007

Цитата:
Как настроить текст в скобках "(" и ")"?
Т.е. нужно, чтобы между скобками обрабатывались другие ключевые слова.
Например: procedure(param1,param2)

Это похоже на блочные коментарии (в C++ начинаються /** .... **/).
В них отрабатываються отдельный набор ключевых слов. Но там вроде завязка на символ "@", да и символы начала тоже не настраиваются. Но если интересно можно сделать что-то подобное и самому ( в исходниках ).

Автор: olsufr, Отправлено:02:56 01-05-2007
UTF-8

Подскажите, как настроить Scite, чтобы он нормально распознавал файл в кодировке UTF-8 (т.е. чтобы не надо было специально для этого что-то нажимать), а также чтобы сохранял такие файлы без кук.
С Emeditor таких проблем нет совсем, но Scite мне удобнее.
Автор: aha, Отправлено:12:01 01-05-2007
Скачал SciTE_173_37Ru_090407
Много в нем хорошего, а что делать с простыми вещами? почему такой простой файлик ( к примеру)
http://meetfile.com/files/28358/test.txt.html
он откывает криво
http://bestpics.ru/full/2007-05-01_115739.jpg
в то время как BREd нормально
http://bestpics.ru/full/2007-05-01_105418.jpg
вот
Автор: BioInfo, Отправлено:17:22 01-05-2007
Небольшая предыстория: лично считаю что программа должна запоминать свои размеры сама и пользователь устанавливает размеры 1 раз, т.е. когда я ширину допустим поменял у окошка, вышел, то при заходе я ожидаю что она - ширина должна сохраниться той какой я настроил... По этому мне не совсем понятно было почему в программе нужно где то прописывать вручную размеры окна, как будто я с пиксельной линейкой по жизни ползаю и замеряю все... В общем такой расклад мне в редакторе пришелся не по нраву.
Благо есть к нему открытые исходники!
Поковырявшись немного написал следующее (чтобы включить нужно добавить в файл настроек параметр position.autosave=1)

код на сохранение положения окна программы:

Файл SciTEWin.cxx, вставить класс:

Код:
[no]//!-start-[position.autosave][/no]
class PropFileEx
{
public:
bool Open(FilePath filename) {
m_filename = filename;
FILE * file = filename.Open(fileRead);
if (file) {
char propsData[100];
int len;
while ( !feof(file) ) {
len = fread(propsData, 1, sizeof(propsData)-1, file);
propsData[len] = [no]'\0'[/no];
m_buf += propsData;
}
fclose(file);
return true;
}
return false;
}

void ToDesctopRect(RECT &rc){
ToDesctopRect(rc.left, rc.top, rc.right, rc.bottom);
}

void ToDesctopRect(long &left, long &top, long &right, long &bottom) {
[no]// See if taskbar's autohide property is on[/no]
APPBARDATA abd = {0};
abd.cbSize = sizeof(abd);
if(!(::SHAppBarMessage(ABM_GETSTATE, &abd) & ABS_AUTOHIDE)) {
[no]// Get the taskbar rect[/no]
::SHAppBarMessage(ABM_GETTASKBARPOS, &abd);
switch(abd.uEdge) {
case ABE_TOP:
top += abd.rc.bottom - abd.rc.top;
bottom += abd.rc.bottom - abd.rc.top;
break;
case ABE_LEFT:
left += abd.rc.right - abd.rc.left;
right+= abd.rc.right - abd.rc.left;
break;
}
}
}

void SetProperty(SString sProperty, int Value) {
char buf[1024] = {0};
sprintf(buf,[no]"%s=%d"[/no], sProperty.c_str(), Value);
int insertPos = m_buf.search(sProperty.c_str());
if (insertPos != -1 ) {
int firstPos = insertPos;
while (firstPos > 0 && m_buf[firstPos-1] != [no]'\n'[/no] && m_buf[firstPos-1] != [no]'\r'[/no] )
firstPos--;
int lastPos = m_buf.search([no]"\r"[/no], insertPos);
m_buf.remove(firstPos,
lastPos>firstPos?lastPos - firstPos:m_buf.length() - firstPos);
m_buf.insert(firstPos, buf);
}
else {
m_buf += [no]"\r\n"[/no];
m_buf += buf;
m_buf += [no]"\r\n"[/no];
}
}

void Save() {
if (m_filename.IsSet()) {
FILE * file = m_filename.Open(fileWrite);
if (file) {
fwrite(m_buf.c_str(), sizeof(char), m_buf.length(), file);
fclose(file);
}
}
}

SString GetString() {
return m_buf;
}

private:
SString m_buf;
FilePath m_filename;
};
[no]//!-end-[position.autosave][/no]
Данный код внедрен в форум с помощью скрипта vladvro

Файл SciTEWin.cxx, подкорректировать функции:

Код:
void SciTEWin::QuitProgram() {
if (SaveIfUnsureAll() != IDCANCEL) {
if (fullScreen) [no]// Ensure tray visible on exit[/no]
FullScreenToggle();

[no]//!-start-[position.autosave][/no]
if (props.GetInt([no]"position.autosave"[/no])) {
winPlace.length = sizeof(winPlace);
::GetWindowPlacement(MainHWND(), &winPlace);
PropFileEx file;
file.Open( GetUserPropertiesFileName() );
file.ToDesctopRect(winPlace.rcNormalPosition);
file.SetProperty([no]"position.left"[/no], winPlace.rcNormalPosition.left);
file.SetProperty([no]"position.top"[/no], winPlace.rcNormalPosition.top);
file.SetProperty([no]"position.width"[/no], winPlace.rcNormalPosition.right - winPlace.rcNormalPosition.left);
file.SetProperty([no]"position.height"[/no], winPlace.rcNormalPosition.bottom - winPlace.rcNormalPosition.top);
file.SetProperty([no]"position.cmdShow"[/no], winPlace.showCmd);
file.Save();
}
[no]//!-end-[position.autosave][/no]

::PostQuitMessage(0);
wSciTE.Destroy();
}
}
Данный код внедрен в форум с помощью скрипта vladvro

и

Код:
void SciTEWin::Run(const char *cmdLine) {
SString args = ProcessArgs(cmdLine);
bool bBatchProcessing = ProcessCommandLine(args, 0);
if (!bBatchProcessing && props.GetInt([no]"check.if.already.open"[/no]) != 0) {
uniqueInstance.CheckOtherInstance();
}

CreateUI();

if (bBatchProcessing) {
ProcessCommandLine(args, 1);
Print(false); [no]// Don't ask user for print parameters[/no]
::PostQuitMessage(0);
wSciTE.Destroy();
return;
}

if (props.GetInt([no]"check.if.already.open"[/no]) != 0 && uniqueInstance.FindOtherInstance()) {
uniqueInstance.SendCommands(cmdLine);

::PostQuitMessage(0);
wSciTE.Destroy();
return; [no]// Don't do anything else[/no]
}

[no]// OK, the instance will be displayed[/no]
SizeSubWindows();
[no]/*!-change-[position.autosave][/no]
[no] wSciTE.Show();[/no]
[no] if (cmdShow) { // assume SW_MAXIMIZE only[/no]
[no]*/[/no]
::ShowWindow(MainHWND(), cmdShow);
[no]//! }[/no]

ProcessCommandLine(args, 1);
Redraw();
}
Данный код внедрен в форум с помощью скрипта vladvro
Вот такая не хитрая система.

З.Ы. Попутно вопрос: чем уважаемый народ пользуется чтобы сравнить изменения в двух файлах (мне бы было удобнее если бы просто изменения вставить, а так пришлось по коду плавать )
З.З.Ы. Еще есть в коде места (особенно по циклам) где переменные объявляются с одним и тем же именем, это здешние сделали или такой в комплекте шел? Пришлось подретушировать, а то мой компилятор такое не заглотил.
Автор: mozers, Отправлено:19:40 01-05-2007
olsufr
SciTE "железно" распознает при открытии UTF-8 файл только если он имеет заголовок BOM. При открытии файлов UTF-8 не имеющих заголовка распознавалка срабатывает далеко не всегда (тогда выбрать нужную кодировку можно через меню Файл-Кодировка).
Файл сохраняется с заголовком если через меню Файл-Кодировка было выбрано "UTF-8 с заголовком" и без заголовка, если выбрано просто "UTF-8".

aha
Этот твой файлик - в официально неподдерживаемой SciTE кодировке dos866.
Если пользуешь SciTE-Ru то нажми Alt+F9 (см. соответствующий пункт в меню Tools) - и все будет нормально

BioInfo
Поздравляю с первым постом!
Код - интересен Но на мой взгляд, логичнее было бы сохранять установки в SciTEUser.properties, тогда и идеология бы не пострадала и лишний файл не нужен и со считыванием можно было бы не заморачиваться. В последней сборке это дело поручено внешнему скрипту. Если уж реализовать эту функцию в ядре, то делать это без ущерба существующей функциональности. А скрипт на сегодня - более функционален поскольку сохраняет не только размеры окна, но и кучу других параметров.

Цитата:
чем уважаемый народ пользуется чтобы сравнить изменения в двух файлах
Лично я часто пользуюсь встроенным инструментом сравнения Total Commander. CompareIt!, конечно, на порядок более наворочан - пользуюсь и им. Скачал бесплатную альтернативу WinMerge, но так и не испробовал...

Цитата:
Еще есть в коде места (особенно по циклам) где переменные объявляются с одним и тем же именем, это здешние сделали или такой в комплекте шел?
Все изменения SciTE-Ru выделены. Если нет пометок - значит таков оригинальный код. А вообще, странно - компилю не в первый раз - никогда такого не замечал... Поконкретнее бы...

Автор: aha, Отправлено:19:53 01-05-2007


Цитата:
aha
Этот твой файлик - в официально неподдерживаемой SciTE кодировке dos866.
Если пользуешь SciTE-Ru то нажми Alt+F9 (см. соответствующий пункт в меню Tools) - и все будет нормально

это плохо , что не поддерживаемой...
вообще там вроде OEM и его смог открыть AkelPad на курьер нею...так что БРЕД 3 без печати умер!... а его место занял AkelPad...остальное все в дауне!
Автор: BioInfo, Отправлено:21:41 01-05-2007
mozers


Цитата:
Код - интересен Но на мой взгляд, логичнее было бы сохранять установки в SciTEUser.properties, тогда и идеология бы не пострадала


Это не проблема, можно сделать в SciTEUser.properties, можно также добавить чтобы там же можно было "автосохранение позиции окна" включить/выключить, чтобы уж совсем круто было
Если интересно, то я могу доработать свой код до этого уровня.


Цитата:
скачал бесплатную альтернативу WinMerge, но так и не испробовал...

Классная штука!!! Все изменения как на ладони!


Цитата:
компилю не в первый раз - никогда такого не замечал... Поконкретнее бы...

Да, так и есть, изменение внесены здешними мастерами.
Проблемные места находятся в !-start-[SubMenu]
в файле SciTEWinBar.cxx ошибка - int item объявлена несколько раз, тоже самое в файле SciTEBuffers.cxx, только там к int item еще прибавилась int i
Лечится выносом объявления переменной из объявления цикла, вообще не знаю как там по уму, но вроде как низя объявлять переменные с одинаковым именем в одной области видимости... В новых компиляторах может все и подругом, совсем видать от прогресса отстал

Кстати была некоторая трудность с использованием старого компилятора от мелкомягких, лечится так:
В файл Platform.h (scintilla\include) нужно добавить

Код:

#ifdef _MSC_VER
#if _MSC_VER < 1300
#define SetWindowLongPtr SetWindowLong
#define GetWindowLongPtr GetWindowLong
#define GWLP_USERDATA GWL_USERDATA
#define DWLP_USER DWL_USER
#define GWLP_WNDPROC GWL_WNDPROC
#endif
#ifndef LONG_PTR
#define LONG_PTR long
#endif
#ifndef DWORD_PTR
#define DWORD_PTR DWORD
#endif
#endif

А в файл SingleThreadExtension.cxx нужно добавить

Код:

#include "Platform.h"

И все будет замечательно работать и компилиться, и, кстати, нисколько не противоречит общей идеалогии
Автор: Ekstazi, Отправлено:01:08 02-05-2007
Возможно ли сделать SciTe как IDE? То есть чтоб отслеживались имена переменных/функций, их типы, возможные методы и функции для них ?
Автор: bit_developer, Отправлено:08:13 02-05-2007
Vladvro

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


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

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

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

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

правильно понял.
с помощью настроек можно добавить поддержку нового языка, если его синтиксис аналогичен одному из поддерживаемых редактором, а отличается только набор ключевых слов.
Автор: BioInfo, Отправлено:16:28 03-05-2007

Цитата:
Как сделать чтобы если в 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);
}
}
}
}
}
Данный код внедрен в форум с помощью скрипта vladvro

Автор: mozers, Отправлено:21:27 03-05-2007
BioInfo
Круть!
Если мы и дальше такими темпами пойдем, то ссылку Нерешенные задачи и вопросы можно будет скоро убирать

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

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);
... код поскипан ...
}

и

Код:
LRESULT SciTEWin::WndProc(UINT iMessage, WPARAM wParam, LPARAM lParam) {
... код поскипан ...
case SCITE_TRAY:
if (lParam == WM_LBUTTONDBLCLK) {
RestoreFromTray();
::ShowWindow(MainHWND(), SW_RESTORE);
::FlashWindow(MainHWND(), FALSE);
}
break;
[no]//!-start-[new_on_dbl_clk][/no]
case WM_LBUTTONDBLCLK:
::SendMessage(MainHWND(), WM_COMMAND, IDM_NEW, 0);
return 0;
[no]//!-end-[new_on_dbl_clk][/no]
... код поскипан ...
[no]//Platform::DebugPrintf("end wnd proc\n");[/no]
return 0l;
}

Хорошая штука "преобразовать код для публикации на форуме", не планируется такую же сделать для публикации в html? Мне бы очень пригодилась, может кто видел? Или может лучше расширите функционал нашего всеми горячо любимого SciTE? Плизззз
Автор: vladvro, Отправлено:09:49 07-05-2007
BioInfo
Цитата:
Заметил в редакторе странность: нельзя создать два новых листа, никто не знает с чем связано?
у меня спокойно создает сколько угодно новых, попробуй в оригинальной сборке (с оригинальными бинарниками).

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


Автор: BioInfo, Отправлено:13:28 07-05-2007
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|

Т.е. вложенное меню можно создавать через POPUPBEGIN и POPUPEND, глубину вложенности не проверял, может быть многоуровневым, т.е. одно вложено в другое, то в третье и так далее... Сообщения IDM_UNDO, IDM_COPY и подобные (если интересно могу привести полный список) сами следят за собой, т.е. если сейчас нельзя вставить (буфер пуст), то в меню отразится неактивным (что кстати тоже мое нововведение).
Это приведен пример контекстного меню редактора (user.context.menu), точно также можно настроить контекстное меню вывода/консоли (user.outputcontext.menu) и контекстное меню буфера/закладки (user.tabcontext.menu). Еще добавил обработку некоторых сообщений, например чтобы можно было скопировать сразу весь текст в файле и другие (опятьже полный список приведу интересующейся публике)
Код выкладывать я думаю бессмысленно, т.к. изменения много где произошли... Хотя если кому-то сильно интересно могу запостить.



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