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

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

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


Автор: deadbead, Отправлено:10:06 16-01-2009
Приветствую... Хочу добавить новый язык... язык похож на С++, поэтому cpp лексер вроде как подходит, но! Хотелось бы изменить пару моментов....
1. Добавить стиль к переменным $x (как в au3 лексере, например)
2. Отдельный стиль для некоторых зарезервированных переменных $var

Отсюда вопросы..
1. Можно ли добиться этого через properties файлы? (4 дня мучался - не получилось..)
2. Где найти инф. о том как сделать свой лексер? А то все поиски упираются в SciTEExternalLexer.html, где написано, что предполагается, что я знаю как делать лексеры....
Автор: vladvro, Отправлено:13:55 16-01-2009
deadbead

Цитата:
1. Можно ли добиться этого через properties файлы? (4 дня мучался - не получилось..)
2. Где найти инф. о том как сделать свой лексер?

1. Через properties файлы новые стили добавить нельзя, требуется правка кода самого лексера.
2. Что то можно найти в SciTELexer.html, что то в документации по Scintilla.
Автор: mozers, Отправлено:09:26 17-01-2009
Выкладываю очень удобный скрипт RestoreRecent.lua: [more]
Код:
--[[--------------------------------------------------
RestoreRecent.lua
Authors: mozers™
Version: 1.0
------------------------------------------------------
Description:
Restore position, bookmarks, folds at opening recent file
Восстанавливает позицию курсора, букмарки и фолдинг при повторном открытии файла
(если ранее он открывался в течении предыдущей сессии).
Почему этого функционала нет в ядре SciTE? - совершенно непонятно
------------------------------------------------------
Connection:
In file SciTEStartup.lua add a line:
dofile (props["SciteDefaultHome"].."\\tools\\RestoreRecent.lua")
--]]--------------------------------------------------

local buffers={}

local function ReadSession()
local session_file = io.open(props['SciteUserHome']..'\\SciTE.session')
if session_file then
local
pattern = "buffer%.(%d+)%.(%a+)=(.+)"
for line in session_file:lines() do
if
#line > 10 then
local
n, p, v = string.match (line, pattern)
if n ~= nil then
n = tonumber(n)
if buffers[n] == nil then
buffers[n] = {}
end
buffers[n][p] = v
end
end
end
session_file:close()
end
end
ReadSession()

local function CheckSession()
for i = 1, #buffers do
if
buffers[no][[/no]i]['path'] == props['FilePath'] then return buffers[no][[/no]i] end
end
end

local function
Restore(file)
local FileParams = CheckSession()
if FileParams ~= nil then
print(file.." - YES")
-- Restore position
if tonumber(props['save.position']) == 1 then
local
pos = FileParams['position']
if pos ~= nil then
editor:GotoPos(pos)
end
end
-- Restore bookmarks
if tonumber(props['session.bookmarks']) == 1 then
local
bookmarks = FileParams['bookmarks']
if bookmarks ~= nil then
for
line_num in string.gmatch(bookmarks, "%d+") do
editor:MarkerAdd(tonumber(line_num)-1, 1)
end
end
end
-- Restore folds
if tonumber(props['session.folds']) == 1 then
local
folds = FileParams['folds']
if folds ~= nil then
for
line_num in string.gmatch(folds, "%d+") do
editor:ToggleFold(tonumber(line_num)-1) -- При открытии файла эта команда не срабатывает !!! (Баг SciTE ???)
end
end
end
else
print(file.." - NO")
end
end

-- Add user event handler OnOpen
local old_OnOpen = OnOpen
function OnOpen(file)
local result
if old_OnOpen then result = old_OnOpen(file) end
if
tonumber(props['save.session']) == 1 then
Restore(file)
end
return
result
end
[/more]
Буду благодарен если кто то сможет ответить на вопросы, возникшие у меня при его создании. (Они выделены в коде)
Автор: VoidVolker, Отправлено:23:39 18-01-2009
mozers

Цитата:
- новая подсветка файлов nnCron/Fort
- удобство работы с файлами nnCron/Fort

Форт по-английски пишется как Forth. Как только будет возможность - обязательно все тщательно изучу и отпишусь.
Автор: eXeC001er, Отправлено:20:05 19-01-2009
Подскажите как мне сделать так чтобы подсветка синтаксиса для определенных слов была только для верхнего или только для нижнего регистра.
Автор: vladvro, Отправлено:15:21 21-01-2009
eXeC001er

Цитата:
Подскажите как мне сделать так чтобы подсветка синтаксиса для определенных слов была только для верхнего или только для нижнего регистра.

Не берусь утверждать про все лексеры редактора, но я не встречал параметра позволяющего задавать чуствительность ключевых слов к регистру, за исключением параметра для тегов в HTML. Полагаю что без правки кода нужного лексера этого получить не получится.
Автор: mozers, Отправлено:18:19 23-01-2009
Сборка SciTE-Ru Pack (Kernel 1.77 .62Ru) BETA

На что сейчас хотелось бы обратить внимание:

  • Модифицированы файлы аббревиатур. Исправлены ошибки. Добавлены новые cокращения блоков кода и пользовательских функций.
    Прошу самым внимательнейшим образом изучить добавленные и модифицированные функции. Их применение может вам сильно облегчить жизнь, поскольку предложенные участки кода применяются постоянно, а сокращение содержит самый правильный и оптимизированный вариант решения.
    Очень прошу отзывчивых программистов выкладывать свои(и чужие) варианты решения часто возникающих ситуаций.
    Пусть наши abbrev-файлы будут сборником самых оптимальных решений!
  • Новый параметр highlight.links.mask позволяет задать маску для поиска линков в тексте для их подсветки и открытия (HighlightLinks.lua)
  • Комплект из 2х скриптов RestoreRecent.lua и RestoreRecent.js восстанавливают позицию курсора, букмарки и фолдинг при повторном открытии ЛЮБОГО файла. (Подробности и проблемы описаны в RestoreRecent.lua)

Жду ответа как соловей - лета!
Автор: eugenk1, Отправлено:05:09 24-01-2009
Приветствую всех кто в теме ! Первое и самое главное. Народ, моё восхищение и всяческие респекты ! О редакторе я узнал совершенно случайно. Скачал, попробовал. Это просто сказка какая -то ! Маленький, быстрый, удобный, и под винды и под линя... Короче мечта идиота, которую я искал всю жизнь. Я сам пользуюсь эклипсом. Увы, альтернативы ему сейчас нет, несмотря на монстроидальность, куда меньшие чем в SciTE удобства, расточительность по памяти, медлительность и т.п. Поэтому народ, возможно я тут буду запинан ногами и покрыт вечным позором и ненормативной лексикой, но у меня предложение. А не сделать ли нам из SciTE что-то похожее на эклипс ? Только написанное на C++ а потому маленькое, быстрое и эффективное. Я поковырялся немного в исходниках, честно скажу, если исходить из идеологии эклипса (на мой взгляд она верна на 100%), то написано всё безобразно. Штука совершенно явно претендует на расширяемый редактор, а такие компоненты как лексеры жестко компилячутся в ядро. По хорошему место всей этой хрени в плагинах. А ядро должно заниматься исключительно загрузкой необходимых плагинов. Второй момент это отладчики. Никто не пытался их интегрировать в среду ? Хотя бы для lua, который как я понял, основной скриптовой язык системы. В идеале я вижу небольшое ядро, окруженное модулями работы с языками. Эти модули содержат лексеры, скрипты, построители make-файлов, средства связи с отладчиками и т.д. API связи с ядром и интеграции очень подробно и ясно описан в документации, и каждый желающий имеет возможность написать нужные ему модули самостоятельно. Такая система стала бы очень похожей на эклипс, только без всех его недостатков, связанных с явой. Был бы очень рад, если бы тут нашлись желающие это обсудить.
Автор: mozers, Отправлено:18:09 24-01-2009
eugenk1
Цитата:
Штука совершенно явно претендует на расширяемый редактор, а такие компоненты как лексеры жестко компилячутся в ядро.
Лексеры пишутся, в основном, сторонними энтузиастами соображающими в С по стандартной методе (Installing a lexer into SciTE, Creating and installing an external lexer). То, что все они компилируются в один файл, а не разбросаны в виде отдельных dll-ек - по существу абсолютно ничего не меняет.

Цитата:
По хорошему место всей этой хрени в плагинах.
Плагины поддерживают некторорые другие редакторы (например Notepad++) основанные на том же движке (Scintilla). Но и тут забивать в плагины отдельные лексеры никто не захотел. ЗАчем?
Вот Mitchell Foral придумал писать лексеры на lua - эта идея мне нравится, поскольку поправить такой лексер сможет каждый. Вот только насчет скорости работы редактора при таком подходе скромно промолчу...

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

Цитата:
Второй момент это отладчики. Никто не пытался их интегрировать в среду ?
Пробовали. И, я думаю, что работа в этом направлении будет продолжаться...

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

Автор: eugenk1, Отправлено:20:59 24-01-2009
mozers, спасибо ! Ссылки очень интересные. Увы, для меня всё это ново. Я в основном для различных железяк писательством занимаюсь. А собственно для PC почти не программирую. Почему и сидел на своем инструментарии и мало смотрел по сторонам. Теперь понимаю что зря, мог бы узнать много нового и интересного. Вобщем пока изучаю доки и смотрю исходники, а в будущем хотелось бы поучаствовать в проекте. Просто впервые вижу штуку, которая по идее могла бы составить конкуренцию эклипсу. И разумеется сразу же её хочу
По поводу лексеров на lua. Поглядел и оценил. Вместо в среднем 12 кило на C++ получается 2.5 на lua. Причем не сказал бы что уж слишком тормозит. Хотя копм у меня довольно слабый. Во всяком случае если сохранить обе возможности - лексеры на C++ и на lua, то второй вариант бесценен для быстрого прототипирования. А это тоже весьма важный момент, даже если выяснится что прототип на lua тормозит.
Насчет отладчиков пока не глядел, там очень много и нужно подробно разбираться. У меня была мысль сделать какой-то универсальный интерфейс отладки на TCP/IP. Собственно большинство отладчиков по-моему с TCP/IP дружат. Сделать так, чтобы редактор мог отправлять и получать сообщения не слишком трудно. А скажем такие вещи как окошки для переменных, дампы памяти и прочая лабуда уже делается на lua для каждого языка и для каждой платформы (например для i386, ARM и PPC, что для меня самое значимое). Точно так же можно JTAG подцепить. Это ващще будет песня - отладка в исходных кодах непосредственно на железке.
Вобщем очень, очень интересный проект у вас, ребята...

Автор: tilarids, Отправлено:12:09 25-01-2009
@eugenk1, посмотри в сторону IDE Anjuta. Написано на GTK, как я понимаю, на С, оно весьма и весьма шустрое. Чтобы заинтересовать:
- в качестве редактора можно использовать SciTE
- есть отладчик, куча различных визардов и тулзов
- есть плагины(например, интеграция с VCSами, Valgrind и многое тому подобное)

Вот так вот
Автор: eugenk1, Отправлено:22:58 25-01-2009
К сожалению Анюта только для линя. А я большую часть времени под виндой работаю. Увы, просто под линём нет некоторых очень важных для меня вещей, а то давно бы перешел. Ладно, вобщем с SciTE понемногу разобрался, во всяком случае до уровня понимания, что оно в принципе может, а чего в принципе не может. Кстати в самом scite (не в scintilla) обратил внимание на очень качественный код, легко допускающий разного рода расширения и плагины. Молодцы, это грамотно сделали. Ну а резюме следующее. Конечно новым эклипсом оно никогда не станет. Это scite придется заново переписывать. Но конкурировать с ним сможет вполне. Просто супермегагибкость эклипса по большому счету никому не нужна. Если я пишу что-то на жабе, а потом вдруг захотелось изобразить нечто на сях, скорее всего это будут либо разные проекты, либо достаточно обособленные куски одного проекта. И наверно требовать того, чтобы я для такого перехода не покидал среду (как оно делается в эклипсе) врядли разумно. А вот перезапустить SciTE с другими настройками - легко. На мой взгляд, что сейчас в первую очередь нужно, это
1) Отладчики
2) Менеджеры проектов
Причем если первое может быть каким-то довольно универсальным встроенным интерфейсом (хотя бы на TCP/IP), то второе в силу разнообразия, должно быть плагинами.
С плагинами я пока не разобрался. Скорее всего их можно было бы как-то сделать через lua-скрипты и *.properties. По-идее сам файл глобальных настроек и есть ни что иное, как главный плагин... А вот с прикручиванием отладчиков с одной стороны похоже проще (нет разнообразия) с другой сложнее (это работа с ядром). И наверное именно этим я сейчас и займусь...
Автор: tilarids, Отправлено:00:33 26-01-2009
http://sourceware.org/cygwinports/ - кажется, тут есть Анюта. То бишь, под винду работать будет.

По поводу встраивания отладчика - лучше бы просто хорошую консоль туда. Можно было бы прямо в консоли отлаживать...
Автор: eugenk1, Отправлено:01:49 26-01-2009
Да нет, с консолью в gdb - плавали, знаем... Настолько хорошо знаем, что когда для одной хитрой железяки писал монитор-отладчик со связью через COM-порт, всё-таки сразу сделал для него небольшую графическую оболочку. Хотя работать с ним по-идее можно было в любой терминалке. Так что не стоит...
С цугвином если честно, связываться не хочу. По-моему что цугвин в винде, что вине под линем, хорошо работают только с консолью. Графика и там и там полный отстой. Не знаю, может быть дело в моих кривых руках, и после продолжительных танцев с бубном гуи настраивается более не менее пристойно, но мне этого ни разу не удавалось. Ни в цугвине ни в вине. Так что приложения с гуи лучше запускать родные.

Народ, вопрос ко всем. Начал сейчас разбираться с файлами abbrev. Вопрос такой. Они обязательно глобальны для всей системы ? Или есть возможность сделать их локальными для какого-то проекта ? Объясняю зачем это нужно. Формат у них весьма простой. И по-идее их можно было бы автоматически генерить из исходников проекта. Возможно даже в реальном времени. Чешет например таварисч репу, клаву не топчет, а система в это время индексирует его исходники и строит для них abbrev. В итоге проект всегда качественно аннотирован. Но поскольку проекты разные, значит и abbrev-ы для них должны храниться отдельно. Вопрос можно ли это сделать без лишних танцев с бубнами ? Или это уже сделано ?
Те же самые вопросы по файлам api.
Автор: tilarids, Отправлено:10:54 26-01-2009
eugenk1, кому что нравится. Мне очень нравится pdb (консольный отладчик для Python)
, потому и к gdb я хорошо отношусь, хотя, конечно, с pdb его не сравнить.


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

Не знаю, что по поводу cygwin, но wine прекрасно работает и с гуями, и с консолью. Хотя я и юзаю wine только чтобы одну-две игры запускать, остальное мне не нужно.


Цитата:
Народ, вопрос ко всем. Начал сейчас разбираться с файлами abbrev. Вопрос такой. Они обязательно глобальны для всей системы ? Или есть возможность сделать их локальными для какого-то проекта ? Объясняю зачем это нужно. Формат у них весьма простой. И по-идее их можно было бы автоматически генерить из исходников проекта. Возможно даже в реальном времени. Чешет например таварисч репу, клаву не топчет, а система в это время индексирует его исходники и строит для них abbrev. В итоге проект всегда качественно аннотирован. Но поскольку проекты разные, значит и abbrev-ы для них должны храниться отдельно. Вопрос можно ли это сделать без лишних танцев с бубнами ? Или это уже сделано ?
Те же самые вопросы по файлам api.

abbrev, насколько я понимаю, смысла генерить для отдельных проектов нет. А вот api в Анюте генерятся автоматически. Там даже есть специальная тулзовина, можешь ее стыбрить
Автор: vladvro, Отправлено:16:29 26-01-2009
eugenk1

Цитата:
Они обязательно глобальны для всей системы ? Или есть возможность сделать их локальными для какого-то проекта ?

Любые настройки можно сделать локальными (для проекта), для этого надо просто переопределить их в "Directory Options File" (или файл настроек каталога, в руссификации).
Переопределять можно все настройки, в том числе и какие использовать файлы abbrev и api для конкретных языков (расширений). Распределение глобальных настроек по нескольким файлам сделанно для удобства и из-за ограничения на размер файла настроек в 64К. Приоритет настроек распределен следующим образом, от меньшего к большему:
глобальные, пользовательские, проекта (каталога), локальные, временные (заданные скриптом).
Автор: Zakkazak, Отправлено:16:46 01-02-2009
На солько портабелен сабж? Намереваюсь перебросить папку сабжа в папку Тотал Командира.
Автор: agner, Отправлено:00:21 03-02-2009
Привет всем, есть несколько вопросов по сабжу.

Подскажите как в Scite осущестляется поиск в открытых вкладках? Обычный поиск в файлах определенной директории не всегда устраивает.

Как выделить группу файлов в проект? Можно ли прикрутить ctags/cscope? Или как по другому осуществлять навигацию внутри проекта?

Как подключить компилятор отличный от gcc, чтобы иметь возможность прыгать по ошибкам?
Автор: ALeXkRU, Отправлено:02:47 03-02-2009
Zakkazak
если не захочешь, все настройки будут храниться в его папке так что - вполне портабелен..
Автор: mozers, Отправлено:11:09 03-02-2009
agner
Цитата:
Подскажите как в Scite осущестляется поиск в открытых вкладках?
Параметр find.replace.advanced=1 вызывает появление в диалоговом окне поиска/замены кнопки "Replace in Buffers".

Цитата:
Как выделить группу файлов в проект?
Сохранить их как сессию.

Цитата:
Можно ли прикрутить ctags/cscope?
Можно

Цитата:
Как подключить компилятор отличный от gcc?
Забить ком.строку вызова этого компилятора в параметр command.compile.



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