Ada_Ru форум

Обсуждение языка Ада

авто отступы

Оставить новое сообщение

Сообщения

Maxim Reznik
авто отступы
2006-03-11 18:30:26

Hi, all

 

Иногда подумываю не улучшить ли scintill-у http://www.scintilla.org в плане работы с Адой, (это такой компонент типа Rich_Edit и

редактор текстов на его основе). Он сейчас уже может делать

расцветку синтаксиса Ады, но там еще куча возможностей куда

его можно развивать. Например, автоматические отступы и folding.

Это чтоб редактор сам ставил курсор в правильную позицию при

вставке на новой строки.

 

Так вот, может кто-то подсказать алгоритм вычисления "правильных" отступов, желательно попроще? Может кто-то сталкивался с этим

или где встречал? Emacs прекрасно делает отступы, но там все на

лиспе, боюсь и соваться.

 

--

Maxim Reznik

>Hi, all

 

>Иногда подумываю не улучшить ли scintill-у http://www.scintilla.org >в плане работы с Адой, (это такой компонент типа Rich_Edit и

>редактор текстов на его основе). Он сейчас уже может делать

>расцветку синтаксиса Ады, но там еще куча возможностей куда

>его можно развивать. Например, автоматические отступы и folding. >Это чтоб редактор сам ставил курсор в правильную позицию при

>вставке на новой строки.

 

>Так вот, может кто-то подсказать алгоритм вычисления "правильных" >отступов, желательно попроще? Может кто-то сталкивался с этим

>или где встречал? Emacs прекрасно делает отступы, но там все на

>лиспе, боюсь и соваться.

 

А чем Kate из KDE не устраивает?. Там уже есть поддержка расцветки АДЫ. К тому же KatePart Встраивается в KDevelop и Krusader.

Кстати в Kate вся расцветка а также правила сворачивания кода хранятся в одном xml файле, его можно запросто подправить. Я уже туда добавил выделение цветом основных типов языка и сделал улучшеное сворачивание кода (правдо не везде корректное). Если нужно могу выслать. может у кого-нибудь появятся еще идеи по улучшению.

KatePart еще и отступы делать умеет. Вот его прикольно было бы аде обучить.

Василий wrote:

 

 

А чем Kate из KDE не устраивает?. Там уже есть поддержка расцветки АДЫ. К тому же KatePart Встраивается в KDevelop и Krusader. Кстати в Kate вся расцветка а также правила сворачивания кода хранятся в одном xml файле, его можно запросто подправить. Я уже туда добавил выделение цветом основных типов языка и сделал улучшеное сворачивание кода (правдо не везде корректное). Если нужно могу выслать. может у кого-нибудь появятся еще идеи по улучшению.

KatePart еще и отступы делать умеет. Вот его прикольно было бы аде обучить.

 

 

Лично меня Kate не устраивает потому, что к нему надо ещё обычно и KDE приложить. Emacs, Vim - это да, собственно говоря, больше ничего и не надо. Ada поддерживается и ещё много чего.

 

 

Алексей

On Mon, Mar 13, 2006 at 08:21:08AM +0300, "Василий" wrote:

 

А чем Kate из KDE не устраивает?. Там уже есть поддержка расцветки АДЫ.

Ну, например КДЕ не охота ставить. Scintill-у можно было бы и под виндой использовать...

 

К тому же KatePart Встраивается в KDevelop и Krusader.

Кстати в Kate вся расцветка а также правила сворачивания кода

хранятся в одном xml файле, его можно запросто подправить. Я уже туда добавил выделение цветом основных типов языка и сделал

улучшеное сворачивание кода (правдо не везде корректное).

Если нужно могу выслать. может у кого-нибудь появятся еще

идеи по улучшению.

 

Конечно присылай. Там можно без Kate разобраться или лучше поставить? Можем выложить на www.ada-ru.org или Wiki...

 

KatePart еще и отступы делать умеет. Вот его прикольно было бы аде обучить.

 

Вот и я к тому же. Нам бы придумать формальные правила.

Начем-то потренироваться надо.

 

Первое что в голову приходит:

 

Расценивать текст как последовательность вложенных конструкций.

1) Если перенос внутри конструкции, то делать indent+2 от ее начала

2) концом конструкции считать ";"

3) началом конструкции считать первый символ после конца

4) или после слов is, loop, record, тогда конструкция вложенная и indent + 3 относительно начала предидущей

5) если перенос на end то это закрытие составной конструкции, и indent д.б. как у ее начала (или -3 для простоты)

 

--

Maxim Reznik

Maxim Reznik wrote:

Так вот, может кто-то подсказать алгоритм вычисления "правильных"

отступов, желательно попроще? Может кто-то сталкивался с этим или где встречал? Emacs прекрасно делает отступы, но там все на

лиспе, боюсь и соваться.

 

Наверное желательно, чтобы "правильные" отступы совпадали с ключом

-gnaty. А если покопаться в сорсах gnat, то наверное там можно найти и

алгоритм.

 

-- Olleg Samoylov

>On Mon, Mar 13, 2006 at 08:21:08AM +0300, "Василий" wrote:

 

А чем Kate из KDE не устраивает?. Там уже есть поддержка расцветки АДЫ.

>Ну, например КДЕ не охота ставить. Scintill-у можно было бы и под >виндой использовать...

 

К тому же KatePart Встраивается в KDevelop и Krusader.

Кстати в Kate вся расцветка а также правила сворачивания кода

хранятся в одном xml файле, его можно запросто подправить. Я уже туда добавил выделение цветом основных типов языка и сделал

улучшеное сворачивание кода (правдо не везде корректное).

Если нужно могу выслать. может у кого-нибудь появятся еще

идеи по улучшению.

 

>Конечно присылай. Там можно без Kate разобраться или лучше поставить? >Можем выложить на www.ada-ru.org или Wiki...

 

 

Вот. Аттачем присылаю XML-ку.

По сревнению с той, которая была в kate добавлено следующее:

1. выделение стандартных типов.

2. выделение контрасными цветами предупреждений (-- TODO, -- FIXME, -- XXX) 3. всорачивание любых блоков кода, выделенных через

-- BEGIN

.....................

..................

.................

-- END

4. сворачивание между begin/end

5. сворачивание между package ... end

 

из-за того, что kate обрабатывает регулярные выражения построчно, возникают некоторые глюки:

1. package body My_Package is

...........

..........

begin

........

end My_Package;

end - будет отнесен к вышележащему begn, а не к package

 

2. package ddd is new ...

kate будет пытаться искать соответствующий end.

 

Сегодня вечером может добавлю выделение прагм и атрибутов.

>Maxim Reznik wrote:

Так вот, может кто-то подсказать алгоритм вычисления "правильных" отступов, желательно попроще? Может кто-то сталкивался с этим

или где встречал? Emacs прекрасно делает отступы, но там все на

лиспе, боюсь и соваться.

 

>Наверное желательно, чтобы "правильные" отступы совпадали с ключом >-gnaty. А если покопаться в сорсах gnat, то наверное там можно найти и >алгоритм.

 

Я тут ссылочку нашел на софтину, которая умеет форматировать код. http://www.irvine.com/freebies.html

 

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

Новое сообщение:
Страницы: 1

Чтобы оставить новое сообщение необходимо Зарегистрироваться и Войти