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

» SciTE - Open Source Text Editor for Windows & Linux

Автор: vladvro
Дата сообщения: 04.06.2007 15:49
alrusdi81
Цитата:
Значит в SciTE.Ru_kernel_changes.txt нужно указывать какой (какие) файлы правлены.

на мой взгляд это лишнее. зачем? если можно сделать запрос на поиск по файлам в редакторе и получить намного более точный и полезный список, например:
Код: >Internal search for "BookmarksWithSession" in "*.asm *.c *.cc *.cpp *.cxx *.cs *.h *.hh *.hxx *.hpp *.rc"
[no]C:\Programs\SciTE-develop\Source\scite\src\SciTEBase.h:911:[/no] void AddFileToBuffer(FilePath file, int pos, char bmLine[]); //!-add-[BookmarksWithSession]
[no]C:\Programs\SciTE-develop\Source\scite\src\SciTEBuffers.cxx:487:[/no]//!-start-[BookmarksWithSession]
[no]C:\Programs\SciTE-develop\Source\scite\src\SciTEBuffers.cxx:523:[/no]//!-end-[BookmarksWithSession]
[no]C:\Programs\SciTE-develop\Source\scite\src\SciTEBuffers.cxx:553:[/no]//!-start-[BookmarksWithSession]
[no]C:\Programs\SciTE-develop\Source\scite\src\SciTEBuffers.cxx:574:[/no]//!-end-[BookmarksWithSession]
[no]C:\Programs\SciTE-develop\Source\scite\src\SciTEBuffers.cxx:1049:[/no]//!-start-[BookmarksWithSession]
[no]C:\Programs\SciTE-develop\Source\scite\src\SciTEBuffers.cxx:1067:[/no]//!-end-[BookmarksWithSession]
> Time: 0.676
Автор: alrusdi81
Дата сообщения: 05.06.2007 07:39
Обещанный баг репорт о компиляции scintilla для GTK

http://alrusdi.nm.ru/debug/

Файл errors.htm - копия ошибок из терминала и мои действия по устранению. Здесь ошибок не много, но как их фиксить я не знаю.
Архив source.rar - то из чего я компилировал (оригинальные исходники scite 1.73 + файлы русской сборки) ну и скомпиленные объектные файлы и сама библиотечка scintilla (внимание > 2Mb).

...сразу косяк...
Тип HMENU не long, а
typedef void *HMENU;
Автор: vladvro
Дата сообщения: 05.06.2007 09:24
alrusdi81
изменения вносить лучше так:
Platform.h строка 447
Код: [no]//!-start-[SubMenu][/no]
#if PLAT_WIN
void ReleaseMenu(HMENU hMenu);
#else
void ReleaseMenu(long hMenu);
#endif
[no]//!-end-[SubMenu][/no]
Автор: Serg2308
Дата сообщения: 05.06.2007 12:03
Доброго времени суток и все таки хотелось бы уточнить на счет подсветки операторов на Русском языке... Вообще реально это? (добавить в список операторов подсветки операторы из русских букв и чтоб они подсвечивались корректно). Может дело в кодировках???
Автор: alrusdi81
Дата сообщения: 05.06.2007 12:12
vladvro
Ок... Поработаю еще над scintilla, возможно с этой высоты я смогу скомпилировать и scite, хотя там я не смог справится теми способами которые приведены здесь.

Суб меню очень хочется(( В принципе из-за него я и взялся компилить русскую сборку...
Ведь в других пунктах меню субменю реализованы, в том числе и создаваемые динамичеки (там где файлы настроек подсветки синтаксиса для конкретных языков). Ткните меня носом в то место кода где это делается (для GTK) - может быть я сам смогу адаптировать код...

Компилируя с помощью MinGW, ты добился полной функциональности русской сборки SciTE под Виндой или есть глюки, связанные с предупреждениями в процессе компиляции?

Что касается описания структур - думаю это не дело - нужно пользоваться штатными средствами GTK, иначе мы придем к тому, что придется ради добавления субменю внедрить в SciTEru всю функциональность Windows))
Автор: vladvro
Дата сообщения: 05.06.2007 13:47
alrusdi81
Цитата:
Суб меню очень хочется...

согласен, ОЧЕНЬ удобная вещь
на сколько я понял то в GTK за создание меню отвечает:
void SciTEGTK::CreateMenu()
файл SciTEGTK.cxx строка 2672

Цитата:
Компилируя с помощью MinGW, ты добился полной функциональности русской сборки SciTE под Виндой или есть глюки, связанные с предупреждениями в процессе компиляции?

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

Цитата:
Что касается описания структур - думаю это не дело - нужно пользоваться штатными средствами GTK

пользуй, теперь это твоя область
Автор: BioInfo
Дата сообщения: 05.06.2007 15:29
vladvro

Цитата:
значит так:
Platform.h строка 47

Вах! Спокуха! Так делать не нужно!!!
Вообще в этом классе никакое ReleaseMenu не нужно!!!

Platform.h строка 441
Код: class Menu {
MenuID id;
public:
Menu();
MenuID GetID() { return id; }
void CreatePopUp();
void Destroy();
void Show(Point pt, Window &w);
[no]//!-start-[ExtendedContextMenu][/no]
void Add(const char * label = 0, int cmd = 0, bool enabled = true);
void AddSubMenu(const char *label, Menu &subMenu);
[no]//!-end-[ExtendedContextMenu][/no]
};
Автор: vladvro
Дата сообщения: 05.06.2007 16:30
BioInfo
Цитата:
Вах! Спокуха! Так делать не нужно!!!
Вообще в этом классе никакое ReleaseMenu не нужно!!!

здравая мысль!
только я бы ее еще немного [more=доработал]PlatWin.cxx строка 1947
Код: void Menu::Destroy() {
if (id)
[no]//! ::DestroyMenu(reinterpret_cast<HMENU>(id));[/no]
[no]//!-start-[SubMenu][/no]
[no]//~ Destroy menu with all submenus[/no]
{
HMENU hMenu = reinterpret_cast<HMENU>(id);
int ptr = 0, to_check = 0;
struct UserMenu {
HMENU hMenu;
} UMenu[100];
UMenu[ptr++].hMenu = hMenu;

[no]//~ Fill the struct with pointers that must be released[/no]
do {
for (int i = 0; i < ::GetMenuItemCount(UMenu[to_check].hMenu); i++)
UMenu[ptr++].hMenu = ::GetSubMenu(UMenu[to_check].hMenu, i);
} while (++to_check<=ptr);

[no]//~ In descending order destroy all the menus[/no]
for (int i = ptr-1; i >= 0; i--)
::DestroyMenu(UMenu[i].hMenu);
}
[no]//!-end-[SubMenu][/no]
id = 0;
}
Автор: BioInfo
Дата сообщения: 05.06.2007 17:32
alrusdi81
С выложенными ошибками вроде справились
Очень странно что компилятор не сказал что нет реализация для
//!-start-[ExtendedContextMenu]
void Add(const char * label = 0, int cmd = 0, bool enabled = true);
void AddSubMenu(const char *label, Menu &subMenu);
//!-end-[ExtendedContextMenu]
Реализацию Add можно посмотреть в AddToPopUp, там нужно заменить popup.GetID() на id - по идее так. Единственное что меня там смущает - это наличие this... Короче в Gtk я не шарю.
Ну а с добавление подменю вообще труба, в Windows все просто AppendMenu.
Если сделать ничего нельзя... то нужно обернуть в #if PLAT_WIN, но что-то мне не верится что в GTK нельзя использовать обычный ООП подход...
Автор: vladvro
Дата сообщения: 05.06.2007 18:07
Serg2308
Цитата:
хотелось бы уточнить на счет подсветки операторов на Русском языке... Вообще реально это?

нашел в чем проблема и как ее исправить, конечно надо править исходники:
PropSet.cxx строка 870
Код: bool WordList::InList(const char *s) {
if (0 == words)
return false;
if (!sorted) {
sorted = true;
SortWordList(words, len);
for (unsigned int k = 0; k < (sizeof(starts) / sizeof(starts[0])); k++)
starts[k] = -1;
for (int l = len - 1; l >= 0; l--) {
unsigned char indexChar = words[l][0];
starts[indexChar] = l;
}
}
unsigned char firstChar = s[0];
int j = starts[firstChar];
if (j >= 0) {
while ((unsigned char)words[j][0] == firstChar) { [no]//!-change-[CirillicKeywords][/no]
if (s[1] == words[j][1]) {
Автор: alrusdi81
Дата сообщения: 06.06.2007 06:29
BioInfo
Да ругался он... Я ведь только ошибки scintilla здесь привел. Вчера компилил scite, заняло это часа два, зато в итоге я получил рабочую SciTEru, но практически все дополнения пришлось прятать в теги прекомпилятора. Дело было ночью, поэтому теги я мог расставить с ошибками. Под линуксом работает, а вот в Винде...

В общем, кто-нибудь найдет возможность сегодня откомпилить нижеследующие сорцы под Виндой и доложить о моих косяках - буду очинно благодарен
http://alrusdi.nm.ru/debug/scite173ru.rar (1,2 Mb)
Автор: BioInfo
Дата сообщения: 06.06.2007 15:40
alrusdi81

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

Блин, так точно не пойдет... Слишком уж много расхождений...
Нужно все по порядку делать наверное. Самое верное решение доводить SciTE под GTK до нашего уровня.
Вот смотрю в SciTEBase.cxx там я делал контекстное меню. Давай сделаем? И будет в GTK полностью настраиваемое контекстное меню со вложенностью.
Как это сделать полностью расскажу - я просто функции GTK не знаю, пиши в приват.

Добавлено:
vladvro
Скомпилил последнюю сборку (выслал mozers)... Чегото не раскрашивается у меня поиск. Там где-то какие-то опции нужны?
И еще попутно вопрос, можно сделать так чтобы в результатах поиска он не выводил первые табы и пробелы в строке (отступы в начале)?

Так выдает результат сейчас:

Код: >Internal search for "SCI_CUT" in "*.asm *.c *.cc *.cpp *.cxx *.cs *.h *.hh *.hxx *.hpp"
C:\...\scite\src\SciTEBase.cxx:435: case SCI_CUT:
C:\...\scite\src\SciTEBase.cxx:3918: SendPane(source, SCI_CUT);
> Time: 0.615
Автор: vladvro
Дата сообщения: 06.06.2007 16:25
BioInfo
Цитата:
Чегото не раскрашивается у меня поиск. Там где-то какие-то опции нужны?

конечно нужны:
lexer.errorlist.findliststyle=1 (было тут)
style.errorlist.30=fore:#000000,bold (было тут)

Цитата:
можно сделать так чтобы в результатах поиска он не выводил первые табы и пробелы в строке (отступы в начале)?

вполне, строка формируется тут:
SciTEIO.cxx строка 1127
Код: void SciTEBase::GrepRecursive(GrepFlags gf, FilePath baseDir, const char *searchString, const char *fileTypes) {
...
if (match) {
os.append(fPath.AsFileSystem());
os.append([no]":"[/no]);
SString lNumber(fr.LineNumber());
os.append(lNumber.c_str());
os.append([no]":"[/no]);
os.append(fr.Original());
os.append([no]"\n"[/no]);
}
Автор: BioInfo
Дата сообщения: 06.06.2007 16:40
vladvro

Цитата:
не удолось скомпилить с помощью MinGW

Попробуй так:
Containers.h строка 278
Код: [no]// Operations that move elements around[/no]
void InsertAt(int nIndex, ARG_TYPE newElement, int nCount = 1) {
POSITION pos = m_ArrayData.FindIndex(nIndex);
for (int i=0; i<nCount; i++)
m_ArrayData.InsertBefore(pos,newElement);
}
Автор: mozers
Дата сообщения: 06.06.2007 17:40

Цитата:
Скомпилил последнюю сборку (выслал mozers)..
Чтобы никто не чуствовал себя оторванным от общего дела, выкладываю текущие исходники (непричесанные, со всеми ошибками и багами) но последние.
Кто что поправит - шлите мне измененные файлы, а я буду обновлять этот файл.
Так у всех, кто старается на общее дело всегда будет самая последняя версия.
Пока - так.
Может потом что получше придумаем...
Автор: BioInfo
Дата сообщения: 06.06.2007 17:53

Цитата:
И еще попутно вопрос, можно сделать так чтобы в результатах поиска он не выводил первые табы и пробелы в строке (отступы в начале)?

С этим [more=разобрался]SciTEIO.cxx строка 1161
Код: [no]//os.append(fr.Original());[/no]
[no]//!-begin-[FindResultListStyle][/no]
lNumber = fr.Original();
lNumber.substitute([no]'\t'[/no],[no]' '[/no]);
lNumber.trimleft([no]"\n\r "[/no]);
lNumber.insert(0,[no]" "[/no],1);
os.append(lNumber.c_str());
[no]//!-end-[FindResultListStyle][/no]
Автор: mozers
Дата сообщения: 06.06.2007 20:46
ALL
Чувствую как негодуют те, для кого 90% предыдущих диалогов были вообще не понятны
Думаю, что время разделиться, наконец то - пришло!
С радостью открываю новую тему и всем творцам, для обсуждения проблемных вопросов прошу перейи туда.

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

Я думаю что следить за активностью в двух темах не будет большой обузой для завсегдатаев нашего топика
Автор: mozers
Дата сообщения: 07.06.2007 10:05
BioInfo
Цитата:
И вот компилю SciTE (через SciTE), в консоли значит ворнинг:
..\src\SciTEBase.cxx(2320) : warning C4702: unreachable code
Два раза кликаю по нему открывается нужный файл, на нужной строке.
SciTE понимает относительные пути.
Вот если бы было просто
Код: SciTEBase.cxx(2320) : warning C4702: unreachable code
Автор: mozers
Дата сообщения: 07.06.2007 14:08
Уря! SciTE.RuTeam.RU заработал!

Добавлено:
правда, не все еще mirk восстановил после пожара...
Автор: mirk
Дата сообщения: 07.06.2007 14:48

Цитата:
правда, не все еще mirk восстановил после пожара...
чего конкретно не хватает? Похерено было очень много, так-что запросто мог и пропустить что-нибудь.
Автор: chupakabra
Дата сообщения: 07.06.2007 22:18
mirk
ссылки в документации не работают, к примеру
Установка lexer в SciTE
ApiBuilder.java
Автор: mozers
Дата сообщения: 08.06.2007 12:47
chupakabra
Поправил ссылочки. mirk тут ни при чем
Автор: mozers
Дата сообщения: 10.06.2007 18:42
Тут Нейла спросили как, мол, сделать чтобы команда в меню Tools не показывалась, но работала (по шорткату, например). Он не растерялся и привел такой пример:
Код: command.name.21.*.properties=
command.21.*.properties=cmd /c echo $(FileNameExt)
user.shortcuts=\
Ctrl+Shift+V|1121|\
Автор: WATERPROOF
Дата сообщения: 11.06.2007 01:39
А можно ли где-то найти список всех номеров команд? C описанием.
Автор: mozers
Дата сообщения: 11.06.2007 08:00
WATERPROOF
ДА

Добавлено:
Вот такой
Код: command.name.21.*=
command.21.*=dostring print(props["FileNameExt"])
command.mode.21.*=subsystem:lua,savebefore:no
user.shortcuts=Alt+Shift+A|1121|
Автор: mozers
Дата сообщения: 12.06.2007 22:26
Нейл дополнил FAQ про эту хитрость (невидимый, но работающий пункт в меню Tools).
А BioInfo сделал чтобы это работало и в нашей сборке
Автор: chupakabra
Дата сообщения: 12.06.2007 23:10
При редактировании исходного кода на C++ заметил что при вводе комментариев вида
// copy file attributes
редактор автоматически меняет его таким образом (т.е. заменяет первую букву на заглавную):
// Copy file attributes

Что это такое и как отключить?
Автор: mozers
Дата сообщения: 13.06.2007 13:54
chupakabra
Первая мысль - Punto дурит Ан, нет. Сам SciTE так умничает... Даже не знаю как с такой радостью бороться
Автор: chupakabra
Дата сообщения: 13.06.2007 15:38
mozers
Сейчас проверил на оригинальной версии - там такого явления нет, т.е. очевидно дело в настройках.
Автор: vladvro
Дата сообщения: 13.06.2007 16:38
chupakabra
Цитата:
редактор автоматически меняет его таким образом (т.е. заменяет первую букву на заглавную):
// Copy file attributes

это результат работы скрипта AutocompleteObject.lua,
если сильно донимает то можно его отключить, закомментировав строчку
SciTEStartup.lua строка 65
Код: require (props[[no]"SciteDefaultHome"[/no]]..[no]"\\tools\\AutocompleteObject.lua"[/no])

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869

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


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