Re[11]: Нормальный редактор для C++ - существует ли?
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 08.03.12 12:20
Оценка: 1 (1) +2
Здравствуйте, alex_public, Вы писали:

_>Я же вроде бы писал в этой теме, что мне как раз нужен редактор, а не IDE.

_>Но редактор не простой, а мощный. Он должен уметь делать анализ кода (моего и плюс всех библиотек в инклудах, причём раскрывая все макросы) и на его основе предоставлять мне удобные функции подсветки, автодополнения и навигации по коду.

Редактор не знает о зависимостях, путям к инклюдам и прочей радости. Так же он редко умеет делать нормальную автоподстановку. То что ты описываешь это, все же, IDE.
Re[3]: Нормальный редактор для C++ - существует ли?
От: PSV100  
Дата: 23.04.12 13:40
Оценка: 5 (2)
Здравствуйте, ML380, Вы писали:

ML>Пользуюсь JEdit, потому как приходится работать в разных ОС с разными компиляторами для разных платформ. Собираю системой, основанной на Jam. Первое время, как стал пользоваться, ужасно напрягало отсутствие подсветки ошибок и автодополнения. Сейчас ничего, привык вроде.

ML>Но, вот недавно надо было поковырять проект на студии... Студия + асистикс казалась просто сказочной по сравнению с JEdit...
ML>Очень не нравится отсутствие возможности компилировать прям из редактора с последующим даблкликом по ошибке и переходом на сторку, ее содержащую. Существует ли такой плагин?

Лично я JEdit не использую именно для разработки под C++ (кроме как посмотреть код, небольшие локальные правки и т.п.), поэтому дать чёткие конкретные рекомендации по поводу C++ не могу. Могу лишь расписать общую картину в JEdit для разработки (вдруг и кому-то ещё что-то пригодится).

JEdit всё-таки не IDE, а универсальный текстовый редактор общего назначения, который из коробки от блокнота недалеко ушёл. Чтобы организовать какую-то IDE, есть, фактически, типовой наборчик плагинов:

— SideKick — это базовое API для реализации "маленького Эклипса": здесь основа для синтаксического разбора, автокомплита, броузер кода и т.д. Многие плагины реализованы с его использованием, или если он есть в наличии, то делают некоторые дополнительные функции (например, подсвечивают места в коде через чёрточки возле вертикального скроллбара и пр.)

— XML — это плагин как яркий пример использования SideKick. Позволяет комфортно работать с XML/HTML, где есть и автокомплит, и ошибки светятся по ходу дела (при вводе текста), и есть показ структуры документа и т.д. Может быть полезен при конфигурировании какого-нибудь синтакс-моде (настройки для синтаксиса), всяких опций для плагинов (которые в XML, например, для Console — о нём ниже) и т.д.
Есть плагины-аналоги и для работы с некоторыми другими языками, но для C++ пока такого нет, ибо тяжело реализовать полноценный разбор C++-кода (вроде были разные попытки, и мысли прикрутить парсинг от Нетбинс, но результатов нет).

— Console — плагин, который организовывает системную консоль (команды ОС), консоль для BeanShell и любые другие консоли для прочих плагинов. А также он позволяет запускать внешние тулсы и обрабатывать/показывать их результат, в том числе и ошибки выводит и в коде их подсветит. Это то, что тебе нужно. Плагин гибко настраивается, из коробки есть что-то и для ряда популярных С++-компиляторов, если покопаться на оф. сайте или в инете, то можно понаходить настройки для всякого известного. Но ничего сложного нет для самостоятельной настройки, главное понимать ключи запуска для тулзовины и как обработать её вывод.

— ErrorList — этот плагин как раз для показа ошибок и переходов по ним. Используется в т.ч. и плагином Console.

— TaskList — подобный плагин, но для показа TODO-меток и много всего, что настроишь себе.

— ProjectViewer — тоже популярная вещь: управление проектами (если оно нужно). Частенько этот плагин используется и другими для многих функций.

— CtagsSideKick, CtagsInterface, ClassBrowser, CscopeFinder, GlobalPlugin, CodeHelper и пр. — это какие-то помощники для работы в т.ч. и для с С++, в основном, через ctags, cscope, Global. Я подробно с ними не разбирался, конкретно ничего не скажу о них.

— AStylePlugin, Beauty — ещё помощники для форматирования кода.

— Completion, CamelComplete, TextAutocomplete, FinishHim — помощники для альтернативного автокомплита.

— ConfigurableFoldHandler, FoldViewer, CandyFolds — настройка своего фолдинга.

— WhiteSpace — показ пробелов с табами и пр.

— SuperAbbrevs — шаблоны кода по мотивам сниппетов а-ля TextMate.

— FirstMate — примочки из TextMate, автообрамление скобками, кавычками и пр.

— TextTools — операции над текстом (transpose, sort и многое др.)

— TextObjects — выделение текстовых объектов (включая и для быстрого перехода)

— TextFilter — выполнение внешних команд и замена текста на их результат.

— JDiffPlugin — удобная сравнивалка файлов.

— QuickOpen, FastOpen, SmartOpen — быстрое открытие файлов по мотивам TextMate (из проекта, из каталогов).

— EditorScheme — цветовые схемы.

— MetalColor, LookAndFeel, Substance — внешний вид редактора.

— FindFile — поиск в файлах.

— SQL, DBTerminal — работа с SQL-базами.


И есть ещё куча весьма полезных для многих случаев плагинов, всё находится на оф. сайте здесь или доступно из Plugin Manager. Также в инете можно что-то найти, например, есть мало известный плагин PelczarSql — хорошая альтернатива для плагина SQL, какой-то поляк написал для своих нужд, там нет документации, но и так всё понятно и хорошо работает. Кроме этого, есть куча макросов (на оф. сайте и в прочем инете) для всего, что душе угодно.

Но, если от самого текстового редактора, как такового, ничего больше не нужно, что есть в каком-нибудь NotePad++, то есть смысл рассмотреть вариант использования Эклипс с Нетбинсом, именно в рамках IDE для С++ у них функционал, конечно, шире.
Re[10]: Фичи QtCreator
От: Skorodum Россия  
Дата: 02.11.15 16:33
Оценка: 18 (1)
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>А какие там рефакторинги есть? Например extract function/method имеется?


Ответил тут
Автор: Skorodum
Дата: 02.11.15
.
qt creator
Re[8]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 25.10.15 15:48
Оценка: 9 (1)
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>Для Emacs на базе Clang сейчас есть:

EP>* Авто-дополнение (company-clang, irony-mode, emacs-ycmd, ac-clang).
EP>* Навигация по коду — rtags, в нём же простой рефакторинг типа rename symbol.
EP>* Фоновый анализ и подсветка ошибок в коде flycheck-clangcheck.
EP>* Настраиваемое форматирование — clang-format.
EP>Для Vim тоже должны быть аналоги.

Ух какая старая темка... С тех пор многое изменилось и я сейчас перешёл на QT Creator, который неожиданно сильно развился в последнее время. К примеру он позволяет удобно делать исполнение/отладку на (мне прямо всё это надо):
— Андроиде
— удалённой линух машине
— микроконтроллере.

И при этом у него интерфейс на порядки проще всяких жирных IDE. К тому же он ещё и быстрее них и местами удобнее (один из самых удобных рефакторингов для C++, что я видел). Пожалуй единственный минус там, это использование убогих систем сборки в качестве проектных файлов. Но я это легко обошёл, используя эти файлы только для поддержки работы IDE, а собственно сборку и т.п. осуществляя своими средствами (хорошо что подобная возможность есть, в отличие от CLion). Ну и может небольшой минус ещё в том, что там идёт не 100% анализ исходников (нет фичи подчёркивания неверного кода без компиляции, как в том же Netbeans'e). Если подключить анализатор на базе Clang'a, то будет 100%, но тогда боюсь скорость перестанет быть такой молниеносной.

Да, это всё было про просто использование для C++ проектов, без библиотеки Qt и визуального редактора GUI к ней. Если предполагается их использование, то понятно, что тут QT Creator вообще вне конкуренции.
Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 05.03.12 20:34
Оценка: 1 (1)
Практически уверен что получу отрицательный ответ (т.к. если бы существовал положительный, то скорее всего я бы про него уже давно знал), но всё же потрачу время на написание... А вдруг?

Значит мы пробовали для работы:

Visual Studio с VA — быстрая, удобная, но анализ кода слабоват. Ну и не бесплатная/не кроссплатформенная. Хотя последнее не принципиально.
Eclipse — тормознутый, монстроидальный, неудобный, но анализ кода, рефакторинг и т.п. хороши.
NetBeans — тормознутый, удобный (простой интерфейс), анализ кода и рефакторинг хороши.

В общем остановились на последнем и в принципе всем довольны (ну разве что ускорить его чуть, но это же Ява...).

Но как вы наверное заметили, я писал только о возможностях редактора, забыв про все остальные многочисленные возможности IDE. И это не случайной — для всех остальных задач у нас используются свои (не в смысле самописные, а в смысле неотносящиеся к IDE) инструменты, потому что они всегда оказывались лучше. Соответствено мы использует IDE просто как мощный редактор, что в принципе не сильно напрягает, но всё же... Вот я и подумал, а вдруг существует просто то что нам надо, без лишних сущностей? Т.е. именно редактор, а не IDE, но мощный.

Требования в общем то простые:
— простейший редактор типа Notepad++ с настройкой своих цветов для всех сущностей
— синтаксический анализ кода (для правильной подсветки и автодополнения): т.е. где-то должна быть настройка дефайнов и папок с библиотеками для парсинга
— навигация по коду (с построением дерева структуры файла в отдельном окошке, ну типа Class View)
— инструменты рефакторинга (желательно, не обязательно)

И всё. ) Вот интересно, существует ли что-то подобное в природе? Только подразумевается что это что-то, что можно скачать и просто использовать, а не хрень, которую ещё полгода затачивать.
Re[12]: Нормальный редактор для C++ - существует ли?
От: Cyberax Марс  
Дата: 12.03.12 13:20
Оценка: 1 (1)
Здравствуйте, Kswapd, Вы писали:

K>Интеллектуальное автодополнение (контекстное) доступно для многих языков (в первую очередь, конечно, для ELisp). Для C++ нормальное только с пакетом xrefactory: парсить C++ на чистом ELisp дорого, он медленный. Xrefactory http://www.xref.sk/xrefactory/main.html вообще прикольный проект. Он базируется на коммерческом парсере C++ и претендует на полную поддержку "intellisense". Хотя на практике обычный поиск в проекте через grep (разумеется, с выводом результата в окно Emacs, чтобы можно было прыгнуть в нужный файл в нужную строку) быстрее.

XRefactory умер. Совсем.
Sapienti sat!
Re: Нормальный редактор для C++ - существует ли?
От: dad  
Дата: 09.03.12 08:33
Оценка: +1
gvim
или qtcreator
Веру-ю-у! В авиацию, в научную революци-ю-у, в механизацию сельского хозяйства, в космос и невесомость! Веру-ю-у! Ибо это объективно-о! (Шукшин)
Re: Нормальный редактор для C++ - существует ли?
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 05.03.12 21:44
Оценка:
Здравствуйте, alex_public, Вы писали:

_>И всё. ) Вот интересно, существует ли что-то подобное в природе? Только подразумевается что это что-то, что можно скачать и просто использовать, а не хрень, которую ещё полгода затачивать.


Есть, SlickEdit. Кромм-платформенный настраемый, очень удобрый редактор и тыпы. Только, очень не бесплатный
Re[2]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 06.03.12 00:58
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Есть, SlickEdit. Кромм-платформенный настраемый, очень удобрый редактор и тыпы. Только, очень не бесплатный


Эээм, я его посмотрел... Какой же это просто редактор... Это же монстр в лучших традициях Эклипса, только быстрый при этом. Но при этом глючащий в синтаксическом анализе C++.
Re: SourceInsight? (-)
От: ntp  
Дата: 06.03.12 01:00
Оценка:
Re[3]: Нормальный редактор для C++ - существует ли?
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 06.03.12 01:16
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Эээм, я его посмотрел... Какой же это просто редактор... Это же монстр в лучших традициях Эклипса, только быстрый при этом. Но при этом глючащий в синтаксическом анализе C++.


Плюсы он разбирает на порядок лучше эклипса. Твое пожелание разбора плюсов совсем уж просто редакторы из списка альтернатив исключает.
А так, я бы взял Vim+Cscope и не парился, но тебя же такой вариант врятли устроит.
Re: Нормальный редактор для C++ - существует ли?
От: qqqqq  
Дата: 06.03.12 01:38
Оценка:
А этот NetBeans совсем неплох в смысле навигации по коду. Я никогда его не видел до этого. Знал, что он есть, но думал он на Java и соответственно только для Java, а он оказывается и с C++ хорошо работает! Рекомендую. Не думаю, что slickedit также хорош. По крайней мере, он мне тоже не очень понравился. Из неназванных есть еще ultraedit, но он как бы просто редактор для широкого употребления. Для навигации по коду есть undestand C++, но он сильно платный и как бы не редактор.
Re[2]: SourceInsight? (-)
От: alex_public  
Дата: 06.03.12 01:43
Оценка:
Здравствуйте, ntp, Вы писали:

Попробовал SourceInsight. По назначению это именно то, что надо. Но к сожалению его возможностям анализа кода и дополнения далеко до Нетбинса...
Re[4]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 06.03.12 01:50
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Плюсы он разбирает на порядок лучше эклипса.


Да ничего подобного. Я подключил пару больших библиотек и он не справился с тем, что бы подсказывать адекватно по ним. Эклипс за всё время замялся только на одном случае, где путь к инклуду генерировался по хитрым условным дефайнам. Это вылечилось прописыванием этого пути вручную. Нетбинс же и это проголотил без вопросов. А указанный редактор вообще не справился.

KP>Твое пожелание разбора плюсов совсем уж просто редакторы из списка альтернатив исключает.


Ну как бы да. Из просто редакторов есть Notepad++ и Sublime Text 2 — большего и не надо. Но для серьёзных проектов этого маловато, хочется удобной помощи.

KP>А так, я бы взял Vim+Cscope и не парился, но тебя же такой вариант врятли устроит.


Эээм, это случаем не из серии "затачивать под себя пару лет и тогда можно работать"? ))) Если да, то видимо не устроит. А если же это можно скачать, настроить цвета, каталоги инклудов и сразу работать, то почему бы и нет...
Re[5]: Нормальный редактор для C++ - существует ли?
От: Kswapd Россия  
Дата: 06.03.12 06:32
Оценка:
_>это случаем не из серии "затачивать под себя пару лет и тогда можно работать"? ))) Если да, то видимо не устроит.

Именно так . Emacs такой же. Learning curve как Джомолунгма, но потом такой кайф...
Re: Нормальный редактор для C++ - существует ли?
От: FR  
Дата: 06.03.12 08:17
Оценка:
Здравствуйте, alex_public, Вы писали:

_>И всё. ) Вот интересно, существует ли что-то подобное в природе? Только подразумевается что это что-то, что можно скачать и просто использовать, а не хрень, которую ещё полгода затачивать.


CodeLite http://www.codelite.org/
CodeBlocks http://www.codeblocks.org/ (брать здесь так как релизы подолгу не обновляются).

Еще был http://www.bloodshed.net/devcpp.html но уже похоже заброшен.

Да и все это скорее класса легковесное IDE.
Re[6]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 07.03.12 06:50
Оценка:
Здравствуйте, Kswapd, Вы писали:

_>>это случаем не из серии "затачивать под себя пару лет и тогда можно работать"? ))) Если да, то видимо не устроит.


K>Именно так . Emacs такой же. Learning curve как Джомолунгма, но потом такой кайф...


А в чём кайф то выкидывать столько времени на помойку? )
Re[2]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 07.03.12 06:52
Оценка:
Здравствуйте, FR, Вы писали:

FR>CodeLite http://www.codelite.org/

FR>CodeBlocks http://www.codeblocks.org/ (брать здесь так как релизы подолгу не обновляются).

FR>Еще был http://www.bloodshed.net/devcpp.html но уже похоже заброшен.


FR>Да и все это скорее класса легковесное IDE.


Ага, я их пару лет назад смотрел. Тогда было впечатление как от visual studio 6.0 без VA. Т.е в принципе конечно это уже был успех для мира Линуха... Но с учётом того что мы ушли с VS 2005 в поисках лучшего, то точно не для нас. )))
Re[7]: Нормальный редактор для C++ - существует ли?
От: Kswapd Россия  
Дата: 07.03.12 10:54
Оценка:
_>А в чём кайф то выкидывать столько времени на помойку? )

Почему на помойку? Время тратится с удовольствием.
Re[8]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 08.03.12 00:51
Оценка:
Здравствуйте, Kswapd, Вы писали:

K>Почему на помойку? Время тратится с удовольствием.


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

Ну да ладно. А вот мне интересно... Предположим я решился на такое, полностью погрузился в это дело и стал реальным гуру. ))) Вот сможет оно обеспечить мне после этого хотя бы возможности Netbeans'а?
Re[9]: Нормальный редактор для C++ - существует ли?
От: Kswapd Россия  
Дата: 08.03.12 10:38
Оценка:
_>Ну да ладно. А вот мне интересно... Предположим я решился на такое, полностью погрузился в это дело и стал реальным гуру. ))) Вот сможет оно обеспечить мне после этого хотя бы возможности Netbeans'а?

Может, нет, а может — да. Вероятно, ты рассматриваешь IDE как единую программу, которая умеет всё, что нужно. Я же предпочитаю другой угол зрения: Unix в целом есть IDE. Emacs — лишь интегрирующий компонент такой IDE: универсальный фронтенд к инструментам вроде svn, grep, gcc и проч. Windows не поощряет использование небольших инструментов, поэтому там такой подход может работать хуже.

На самом деле пользоваться Emacs можно начать сразу. Но для полноценной настройки под собственные нужды нужно освоить несколько нестандартных расширений, и главное, уметь писать свои — на ELisp. Emacs после настройки может радикально отличаться от дефолтного по субъективному удобству работы.

Я вышел на Emacs немного странным путём — через увлечение лиспом; показалось забавным поработать в редакторе, расширяемом скриптами на лиспе. Потом только вкурил, насколько красива и последовательна архитектура Emacs, и насколько неограниченны возможности расширения и адаптации под свои задачи. Emacs, по сути, виртуальная машина, в которой работает собственная OS.

Мне кажется, работать в IDE, которую можно освоить за несколько дней, как-то скучновато .
Re[10]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 08.03.12 11:50
Оценка:
Здравствуйте, Kswapd, Вы писали:

K>Может, нет, а может — да. Вероятно, ты рассматриваешь IDE как единую программу, которая умеет всё, что нужно. Я же предпочитаю другой угол зрения: Unix в целом есть IDE. Emacs — лишь интегрирующий компонент такой IDE: универсальный фронтенд к инструментам вроде svn, grep, gcc и проч. Windows не поощряет использование небольших инструментов, поэтому там такой подход может работать хуже.


Я же вроде бы писал в этой теме, что мне как раз нужен редактор, а не IDE.

Но редактор не простой, а мощный. Он должен уметь делать анализ кода (моего и плюс всех библиотек в инклудах, причём раскрывая все макросы) и на его основе предоставлять мне удобные функции подсветки, автодополнения и навигации по коду.

Такое возможно?

K>На самом деле пользоваться Emacs можно начать сразу. Но для полноценной настройки под собственные нужды нужно освоить несколько нестандартных расширений, и главное, уметь писать свои — на ELisp. Emacs после настройки может радикально отличаться от дефолтного по субъективному удобству работы.


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

K>Мне кажется, работать в IDE, которую можно освоить за несколько дней, как-то скучновато .


Совсем не скучно. ))) Мне просто лишняя функциональность в IDE мешает, вот и ищу именно редактор. А так, подход "скачал, включил и работает" мне вполне нравится. ))) А вот если такого варианта нет, то уже можно и попрограммировать скриптами... Но как вынужденная мера.
Re: Нормальный редактор для C++ - существует ли?
От: Skorodum Россия  
Дата: 08.03.12 19:11
Оценка:
Здравствуйте, alex_public, Вы писали:

Посмотрите на
Clang + Qt Creator
под виндой наверное сложно запустить будет
Re[11]: Нормальный редактор для C++ - существует ли?
От: Kswapd Россия  
Дата: 08.03.12 20:56
Оценка:
_>Такое возможно?

Про автодополнение уже сказали. В принципе, обычное автодополнение Emacs покрывает эту задачу: ищет такие же слова, постепенно расширяя "радиус": окрестности курсора, весь файл, другие открытые файлы (буферы; в Emacs принято держать много открытых файлов, переключаясь между ними).

Существует расширение, открывающее хедер C/C++ по #include — это удобно.

Интеллектуальное автодополнение (контекстное) доступно для многих языков (в первую очередь, конечно, для ELisp). Для C++ нормальное только с пакетом xrefactory: парсить C++ на чистом ELisp дорого, он медленный. Xrefactory http://www.xref.sk/xrefactory/main.html вообще прикольный проект. Он базируется на коммерческом парсере C++ и претендует на полную поддержку "intellisense". Хотя на практике обычный поиск в проекте через grep (разумеется, с выводом результата в окно Emacs, чтобы можно было прыгнуть в нужный файл в нужную строку) быстрее.

_>Ну а что, за столько лет никто не смог создать некую готовую сборку скриптов под хотя бы самые известные языки?


Есть, конечно. Много идёт в поставке, очень много ценного складывается на http://www.emacswiki.org . Существует поддержка буквально любого языка. Разного уровня. Подсветка синтаксиса есть всегда. Для многих интерпретируемых языков есть полноценная поддержка REPL (read-eval-print loop) для исполнения "на лету". Поддержка C++ очень развита. Есть GUI-фронтенд к gdb, например.

Тут дело в другом. Дефолтный набор клавиатурных биндингов нравится не всем. Я, например, создал свой (переопределить можно буквально любое действие). Хотя рекомендуют привыкать к дефолтному. Но на современных клавиатурах полно клавиш, которые можно задействовать, жалко оставлять их без работы . Только продумывать свои биндинги нужно тщательно, чтобы не нарушить стройную систему "подгрузки" биндингов расширений (их принято называть "modes").

_>Мне просто лишняя функциональность в IDE мешает, вот и ищу именно редактор.


Вот-вот. Бесит, например, вываливание списка методов, когда не просят. Да и всё равно, искать там бывает дольше, чем заглянуть в документацию.

Emacs имеет недостатки. Он однопоточный. Скрипты на ELisp медленные — парсинг проекта на C++ в пакете CEDET http://cedet.sourceforge.net , претендующим на создание мощной IDE, это ярко демонстрирует , большие проекты в нём неюзабельны. Но в нишу мощного редактора с элементами IDE Emacs вписывается идеально.
н
Re[12]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 09.03.12 17:01
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Редактор не знает о зависимостях, путям к инклюдам и прочей радости. Так же он редко умеет делать нормальную автоподстановку. То что ты описываешь это, все же, IDE.


Да, обычный редактор не может — только созданные специально под C++ и т.п. Правда похоже таких нет в наличие...

А вот IDE — это уже заметно больше. Там и проекты и системы сборки и отладчики и контроль версий и контроль задач и взаимодействие с командкой... Вот всего этого нам не надо. Точнее надо, но оно уже есть, вне IDE/редактора.
Re[2]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 09.03.12 17:05
Оценка:
Здравствуйте, Skorodum, Вы писали:

S>Здравствуйте, alex_public, Вы писали:


S>Посмотрите на

S>Clang + Qt Creator
S>под виндой наверное сложно запустить будет

О, интересно, не знал про такой проект. Просто Qt Creator я смотрел раньше. Правда у него редактор послабее VS (с VA) или Нетбинса, но не так уж сильно. А с учётом clang может быть даже сильнее будет — надо попробовать. Правда это всё равно IDE, а хочется просто редактор... Но если он окажется сильнее Нетбинса, то всё равно можно перейти.
Re[12]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 09.03.12 17:12
Оценка:
Здравствуйте, Kswapd, Вы писали:

K>Про автодополнение уже сказали. В принципе, обычное автодополнение Emacs покрывает эту задачу: ищет такие же слова, постепенно расширяя "радиус": окрестности курсора, весь файл, другие открытые файлы (буферы; в Emacs принято держать много открытых файлов, переключаясь между ними).


Ну такое то есть и в Notepad++ даже.

K>Интеллектуальное автодополнение (контекстное) доступно для многих языков (в первую очередь, конечно, для ELisp). Для C++ нормальное только с пакетом xrefactory: парсить C++ на чистом ELisp дорого, он медленный. Xrefactory http://www.xref.sk/xrefactory/main.html вообще прикольный проект. Он базируется на коммерческом парсере C++ и претендует на полную поддержку "intellisense". Хотя на практике обычный поиск в проекте через grep (разумеется, с выводом результата в окно Emacs, чтобы можно было прыгнуть в нужный файл в нужную строку) быстрее.


Бррррр, т.е. что бы воспользоваться нормальной фичей в open source проекте надо покупать недешёвую игрушку? Мдаааа....

K>Тут дело в другом. Дефолтный набор клавиатурных биндингов нравится не всем. Я, например, создал свой (переопределить можно буквально любое действие). Хотя рекомендуют привыкать к дефолтному. Но на современных клавиатурах полно клавиш, которые можно задействовать, жалко оставлять их без работы . Только продумывать свои биндинги нужно тщательно, чтобы не нарушить стройную систему "подгрузки" биндингов расширений (их принято называть "modes").


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

K>Emacs имеет недостатки. Он однопоточный. Скрипты на ELisp медленные — парсинг проекта на C++ в пакете CEDET http://cedet.sourceforge.net , претендующим на создание мощной IDE, это ярко демонстрирует , большие проекты в нём неюзабельны. Но в нишу мощного редактора с элементами IDE Emacs вписывается идеально.


Мммм ну как бы мне пофиг сколько он там парсит мои библиотеки — это можно делать один раз (как VA) или же при открытие проекта (как netbeans). Главное что бы сама подсказка и подсветка не тормозили.

Так я не понял, CEDET этот может обеспечить некий аналог функций редактора Нетбинса или же нет? И возможно ли его просто скачать и включить или требуется многонедельная настройка?
Re[2]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 09.03.12 17:13
Оценка:
Здравствуйте, dad, Вы писали:

dad>gvim

А он умеет синтаксический разбор исходников для подсветки и автодополнения?

dad>или qtcreator

Его вроде обсуждали тут уже, да и к тому же это IDE уже целая...
Re[13]: Нормальный редактор для C++ - существует ли?
От: Kswapd Россия  
Дата: 09.03.12 17:30
Оценка:
_>Бррррр, т.е. что бы воспользоваться нормальной фичей в open source проекте надо покупать недешёвую игрушку? Мдаааа....

Спокойствие, xrefactory как проект уже умер и не развивается .

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


Так может, поначалу и не понадобится писать сложные? У меня самое сложное — пара функций для прыганья из объявления функции в интерфейсе класса в реализацию и обратно .

_>Так я не понял, CEDET этот может обеспечить некий аналог функций редактора Нетбинса или же нет? И возможно ли его просто скачать и включить или требуется многонедельная настройка?


Ну не знаю насчёт многонедельной, а разбираться придётся изрядно. К счастью, мне CEDET не нужен.
Re: Нормальный редактор для C++ - существует ли?
От: PSV100  
Дата: 10.03.12 13:50
Оценка:
Можно ещё JEdit глянуть. Сейчас им мало кто пользуется, но, имхо, зря. Он на джаве, но на порядки легче и быстрее эклипсов с нетбинсами. Редактор мощный, по духу близок к эмаксу, но с более привычным управлением, хорошая альтернатива для Sublime Text (с некоторыми плагинами и макросами имеет фактически все основные плюшки от Sublime/TextMate, а местами и приятнее их, при этом JEdit гораздо функциональнее, свою полноценную IDE можно запилить). Хорошо расширяется, но в целом для него гараздо меньше наваяли скриптов/плагинов, чем для вима или эмакса (с другой стороны, можно быстрее всякого попробовать и настроить редактор под себя).
Но как он будет жить с парсингом кода на С++ — фиг его знает, так я его не гонял. Теоретически есть плагины для работы с cscope, ctags и т.п., думаю, что будет также, как и в виме/эмаксе.
Re: Нормальный редактор для C++ - существует ли?
От: Аноним  
Дата: 10.03.12 14:38
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Eclipse — тормознутый, монстроидальный, неудобный, но анализ кода, рефакторинг и т.п. хороши.


Эклипс — тормознутый?! Компьютер апгрейдить не пробовали? По-моему, эклипс быстрее, чем Visual Studio работает. Ну и насчет "неудобный" я бы поспорил. Там есть несколько оригинальных и несколько «долбанутых» моментов в юзабилити, но в некоторых вещах он удобнее Visual Studio.

Eclipse, на мой взгляд, — весьма достойная IDE. Я сам долгое время кроме Visual Studio ничего не признавал, но попробовал Eclipse и был приятно удивлен.

А NetBeans — да, тормознутый, хотя и мощный и довольно удобный, но и «тормознутость» его на нормальном железе некритична.
Re[2]: Нормальный редактор для C++ - существует ли?
От: Kswapd Россия  
Дата: 10.03.12 14:57
Оценка:
А>По-моему, эклипс быстрее, чем Visual Studio работает. Ну и насчет "неудобный" я бы поспорил.

В последний раз, когда я пробовал Eclipse, он не поддерживал клавиатурных макросов. Как сейчас с этим?
Re[5]: Нормальный редактор для C++ - существует ли?
От: Olej Украина  
Дата: 10.03.12 16:10
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Ну как бы да. Из просто редакторов есть Notepad++ и Sublime Text 2 — большего и не надо. Но для серьёзных проектов этого маловато, хочется удобной помощи.


Geany — http://www.geany.org/
Re[3]: Нормальный редактор для C++ - существует ли?
От: dad  
Дата: 10.03.12 18:48
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Здравствуйте, dad, Вы писали:


dad>>gvim

_>А он умеет синтаксический разбор исходников для подсветки и автодополнения?


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

dad>>или qtcreator

_>Его вроде обсуждали тут уже, да и к тому же это IDE уже целая...

я использую как редактор. но, конечно, если не нужен qt то великоват дистрибтутив. в остальном — никаких проблем.
Веру-ю-у! В авиацию, в научную революци-ю-у, в механизацию сельского хозяйства, в космос и невесомость! Веру-ю-у! Ибо это объективно-о! (Шукшин)
Re[4]: Нормальный редактор для C++ - существует ли?
От: Kswapd Россия  
Дата: 10.03.12 18:53
Оценка:
dad>gvim

Рекомендуя VIM, надо предупреждать о его фиче — немонотонном (модальном) интерфейсе. Не всякому такое по душе. Подробности — в книге Раскина "Интерфейс".
Re[2]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 11.03.12 17:50
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Эклипс — тормознутый?! Компьютер апгрейдить не пробовали? По-моему, эклипс быстрее, чем Visual Studio работает.


Тормознутый не в смысле невозможно работать, а в сравнение с другими инструментами со сходной функциональностью. Скажем его анализатор кода уступает по скорости VA намного. Да и вообще микрозадержки везде видны если параллельно работать с другими инструментами. У Нетбинса не лучше кстати.

А>Ну и насчет "неудобный" я бы поспорил. Там есть несколько оригинальных и несколько «долбанутых» моментов в юзабилити, но в некоторых вещах он удобнее Visual Studio.


Не знаю в чём он удобнее. А вот проблемных вещей там целые кучи. Начиная от дикой перегруженности фичами и настройками и заканчивая ужасно кривой системой воркспейсов/проектов.

А>Eclipse, на мой взгляд, — весьма достойная IDE. Я сам долгое время кроме Visual Studio ничего не признавал, но попробовал Eclipse и был приятно удивлен.


Я бы признал его первым только в одной области — по количеству доступных фич. Но до удобства этому далеко...

А>А NetBeans — да, тормознутый, хотя и мощный и довольно удобный, но и «тормознутость» его на нормальном железе некритична.


Собственно мы на нём и остановились после долгих поисков. Но всё равно это не идеал, а только компромис. )
Re[6]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 11.03.12 17:51
Оценка:
Здравствуйте, Olej, Вы писали:

O>Geany — http://www.geany.org/


Попробовал сейчас. Очень слабый редактор для IDE.
Re[2]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 11.03.12 18:00
Оценка:
Здравствуйте, PSV100, Вы писали:

PSV>Можно ещё JEdit глянуть. Сейчас им мало кто пользуется, но, имхо, зря. Он на джаве, но на порядки легче и быстрее эклипсов с нетбинсами. Редактор мощный, по духу близок к эмаксу, но с более привычным управлением, хорошая альтернатива для Sublime Text (с некоторыми плагинами и макросами имеет фактически все основные плюшки от Sublime/TextMate, а местами и приятнее их, при этом JEdit гораздо функциональнее, свою полноценную IDE можно запилить). Хорошо расширяется, но в целом для него гараздо меньше наваяли скриптов/плагинов, чем для вима или эмакса (с другой стороны, можно быстрее всякого попробовать и настроить редактор под себя).

PSV>Но как он будет жить с парсингом кода на С++ — фиг его знает, так я его не гонял. Теоретически есть плагины для работы с cscope, ctags и т.п., думаю, что будет также, как и в виме/эмаксе.

Мне вот всегда казалось что скриптами можно расширять какие-то мелкие частные фичи. А что-то глобальное, типа автодополнения или подсветки должно быть встроено. Не представляю как такое можно расширить скриптом — это же как написать свой редактор с нуля. )))
Re[4]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 11.03.12 18:06
Оценка:
Здравствуйте, dad, Вы писали:

dad>конечно умеет. только надо шаманить. если шаманить лень, то для ознакомления

dad>можно поиспользовать редакцию cream

Ммм, т.е. есть некий дистрибутив где можно настроить только цвета и директории библиотек и всё будет работать?
Re: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 11.03.12 18:15
Оценка:
Кстати, полазил тут по инету сам и нашёл очень интересный вариант.

Этот http://www.zeusedit.com

Правда сразу два минуса (для всех) — не кроссплатформенный и платный. Но для нас это не принципиально. И один минус для нас — там всё же не удержались и насовали кучу функций, так что по сути полноценная IDE там, а не просто редактор.

А из плюсов: самый быстрый редактор с синтаксическим анализом, который я видел. Заметно быстрее даже VS+VA, про Eclipse и Netbeans вообще молчу. И при этом без проблем и корректно справился с моими большими и сложными библиотеками. Просто супер в этом смысле.

И ещё там модная функция нашлась. Поиск по chm файлам из редактора. Т.е. я сразу добавил туда chm от разных библиотек — очень удобно.

Пойду поковыряю его дальше. Хотя опять же это не то что мы искали, т.к. там тоже горы ненужного и кривых настроек. Но похоже он может быть поудобнее Нетбинса. Во всяком случае побыстрее уж точно.
Re[5]: Нормальный редактор для C++ - существует ли?
От: dad  
Дата: 11.03.12 20:32
Оценка:
dad>>конечно умеет. только надо шаманить. если шаманить лень, то для ознакомления
dad>>можно поиспользовать редакцию cream

_>Ммм, т.е. есть некий дистрибутив где можно настроить только цвета и директории библиотек и всё будет работать?



консольный vim настраиваемый и ополняемый плагинами редактор.
подсветка синтаксиса, разбор кода, закладки, буферы, и тд
все есть.
есть графическая реализация gvim
есть сборка "настроек" cream адаптированная под привычный
принцип редактирования. я некоторое время игрался с ней,
пока не перешел на gvim.
http://cream.sourceforge.net/
но в конце концов, как человек травмированный виндой, все-таки сполз
на qtcreator. сказались несколько проектов на qt на протяжении нескольких лет.
он не такое уж ide. ненужные плагины (редакторы диалогов, сценариев, и тд)
можно выключить. как редактор c++ — очень удобный для виндузятника.
Веру-ю-у! В авиацию, в научную революци-ю-у, в механизацию сельского хозяйства, в космос и невесомость! Веру-ю-у! Ибо это объективно-о! (Шукшин)
Re[2]: Нормальный редактор для C++ - существует ли?
От: jazzer Россия Skype: enerjazzer
Дата: 12.03.12 03:40
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Этот http://www.zeusedit.com

_>А из плюсов: самый быстрый редактор с синтаксическим анализом, который я видел
У него там то же самый ctags
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[3]: Нормальный редактор для C++ - существует ли?
От: PSV100  
Дата: 12.03.12 11:26
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Здравствуйте, PSV100, Вы писали:


PSV>>Можно ещё JEdit глянуть. Сейчас им мало кто пользуется, но, имхо, зря. Он на джаве, но на порядки легче и быстрее эклипсов с нетбинсами. Редактор мощный, по духу близок к эмаксу, но с более привычным управлением, хорошая альтернатива для Sublime Text (с некоторыми плагинами и макросами имеет фактически все основные плюшки от Sublime/TextMate, а местами и приятнее их, при этом JEdit гораздо функциональнее, свою полноценную IDE можно запилить). Хорошо расширяется, но в целом для него гараздо меньше наваяли скриптов/плагинов, чем для вима или эмакса (с другой стороны, можно быстрее всякого попробовать и настроить редактор под себя).

PSV>>Но как он будет жить с парсингом кода на С++ — фиг его знает, так я его не гонял. Теоретически есть плагины для работы с cscope, ctags и т.п., думаю, что будет также, как и в виме/эмаксе.

_>Мне вот всегда казалось что скриптами можно расширять какие-то мелкие частные фичи. А что-то глобальное, типа автодополнения или подсветки должно быть встроено. Не представляю как такое можно расширить скриптом — это же как написать свой редактор с нуля. )))


Не понял, о чём конкретно речь. Да, в JEdit можно писать свои лёгкие скрипты/макросы (которые могут много чего на самом деле), а также в нём обширное API для расширений. Из коробки он от блокнота недалеко ушёл, но плагинами он расширяется фактически до уровня эклипса, где будет и всякий разный автокомплит (кроме стандартного), и броузеры/структуры кода, и всякие консоли, и списки ошибок, to-do листы, и управление проектами, и SQL-базы и т.д и т.п. (если есть потребность, смогу подсказать, на что стоит обратить внимание), при этом нет монстро-страшизма уровня эклипса, всё на порядок проще и легче, и удобнее, и разбираться там особо нечего.
Также есть там и парсеры кода, для java, xml, haXe и др. Но для С++ похоже так и не реализовали, хотя какие-то попытки были. Сейчас есть интерфейс для ctags, cscope, gnu global, gdb, lint и др.

И, имхо, навряд ли получится найти альтернативу для популярных монстров-IDE в плане качественного парсинга C++-кода. В этом их пока основной козырь, и, как по мне, единственная целесообразность их использования.

А вообще, у меня есть подозрение, возможно я ошибаюсь, но похоже у тебя неполная "прокачка" профитов от использования программистких редакторов. Обычно в виме/эмаксе и им подобным от отсутствия того же мощного контекстного автокомплита особо не страдают. Быстрое (!!!) автодополнение из уже введенных слов в текущем буфере, а также и из других буферов (выбираемых по определенным правилам) плюс некоторые списки предопределенных идентификаторов — на практике вполне удобная техника. К тому же, там сам по себе удобный текстовый редактор (в большинстве IDE редакторы хромают), где будет и множественное выделение, и удобная работа с буфером обмена и с undo/redo (и не только для текста), удобное перемещение по тексту, мощные шаблоны кода, умные дополнялки, удалялки, выравнивалки текста и т.д. При этом есть мощные и гибкие средства для реализаций операций над текстом, нужные именно тебе для своих потребностей. Всё это помножено реально удобной средой для управления всем этим делом. А такие вещи, как EasyMotion в виме (быстрое перемещение по тексту в стиле вимператора для firefox), или rainbow-mode в эмаксе (подсветка в коде цветовых констант в соответствие с их значениями) и т.п., особенно когда в совокупности таких вещей не мало — вроде ничего серьёзного на первый взгляд, но "подсаживает" конкретно, и подобных вещей в монстрах-IDE редко встретишь. Конечно, приятно, когда к этому есть ещё и хороший парсинг кода. Например, многие лисперы свой slime на эмаксе навряд ли на что-то променяют.

И по поводу редакторов, сугубо моё личное имхо, без никаких претензий на истинность последних инстанций. Если нужен редактор для более серьёзной работы, чем просто небольшая правка текста на уровне блокнота, то сегодня лучше смотреть на:

— вим/эмакс по вкусу — это классика, где уже реализовано столько расширений, что фактически можно быть в вечном поиске нирваны, бесконечно совершенствуя свою среду для работы (именно эта магия и притягивает многих). Обратная сторона медали: тяжеловато осваиваются и требуется привыкание, особенно в виме с его разными режимами работы. Лично я с ними тяжеловато уживаюсь и редко их использую: основная разработка вынужденно ведется в монстрах-IDE плюс специфичный софт, когда постоянно переключаешься из одной привычной среды в другую, то не успеваешь перестраиваться, путаешься в клавишах, реально раздражает. Не везде и всегда получается эмулировать вим/эмакс. Теоретически можно перенастроить вим/эмакс на свой лад, но на практике это геморно, необходимо учитывать немало нюансов (проект cream — альтернативная конфигурация вима — не просто так появился), да и если попеределовать азы вима/эмакса, то фактически это уже будет не вим/эмакс.

— JEdit — проект не умер, сейчас пилят его и для него совсем мало народу, особенно на фоне вима/эмакса, но это реальная серьёзная альтернатива для них. Простой, лёгкий, но мощный, местами удобнее и мощнее вима/эмакса, но не во всём.

— Sublime Text 2 — редактор платный и не ясно, что там будет с триалами после релиза. Сейчас он менее функционален, но его базовый арсенал реализован весьма приятно. Пилят его довольно активно, вроде уже народ ломанулся ваять всякие плагины, потенциал есть. Ему бы заменить и добавить некоторый функционал от JEdit-а, пару вещей передрать из эмакса (например, удобный минибуфер/командная строка с автокомплитом для команд/макросов с их параметрами, поддержка не только текстовых режимов внутри буфера, т.е. нечто подобное wiki-режимов, и др.) — получилось бы бомбовая конфетка.

Остальные редакторы (возможно, за исключением специализированных, как Coda, Espresso на маках для веб-вёрстки), как правило, менее функциональны и менее удобны в использовании, включая и пользовательский интерфейс, вряд ли дадут таких профитов и оправдают инвестиции в себя, вместе с потраченным временем на освоение.
Re[3]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 12.03.12 12:12
Оценка:
Здравствуйте, jazzer, Вы писали:

J>У него там то же самый ctags


В каком смысле тот же самый? ) Ну и кстати ctags же только создаёт базу. А вот как в ней искать... Т.е. в этой области важен именно момент подсказки (бесит когда тормозит тут), а парсить исходники оно сколько угодно может, не жалко)))
Re[4]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 12.03.12 12:40
Оценка:
Здравствуйте, PSV100, Вы писали:

PSV>Не понял, о чём конкретно речь. Да, в JEdit можно писать свои лёгкие скрипты/макросы (которые могут много чего на самом деле), а также в нём обширное API для расширений. Из коробки он от блокнота недалеко ушёл, но плагинами он расширяется фактически до уровня эклипса, где будет и всякий разный автокомплит (кроме стандартного), и броузеры/структуры кода, и всякие консоли, и списки ошибок, to-do листы, и управление проектами, и SQL-базы и т.д и т.п. (если есть потребность, смогу подсказать, на что стоит обратить внимание), при этом нет монстро-страшизма уровня эклипса, всё на порядок проще и легче, и удобнее, и разбираться там особо нечего.

PSV>Также есть там и парсеры кода, для java, xml, haXe и др. Но для С++ похоже так и не реализовали, хотя какие-то попытки были. Сейчас есть интерфейс для ctags, cscope, gnu global, gdb, lint и др.

Я к тому что для не проблема поковыряться в настройках или в чужом коде и подстроить его дня себя. Но вот писать самому с нуля автодополнение и т.п. — нет спасибо, есть много других дел. ))) Т.е. мне надо что бы оно хоть как-то работало уже сразу после инсталляции, а дальше уже не проблема. )))

PSV>И, имхо, навряд ли получится найти альтернативу для популярных монстров-IDE в плане качественного парсинга C++-кода. В этом их пока основной козырь, и, как по мне, единственная целесообразность их использования.


Собственно я так и думал, но на всякий случай решил посоветоваться с сообществом. Мало ли что упустил.

PSV>А вообще, у меня есть подозрение, возможно я ошибаюсь, но похоже у тебя неполная "прокачка" профитов от использования программистких редакторов. Обычно в виме/эмаксе и им подобным от отсутствия того же мощного контекстного автокомплита особо не страдают. Быстрое (!!!) автодополнение из уже введенных слов в текущем буфере, а также и из других буферов (выбираемых по определенным правилам) плюс некоторые списки предопределенных идентификаторов — на практике вполне удобная техника.


Эээ и чем они мне может помочь, если я не помню как точно пишется некая функция и она в проекте ещё не использовалась? Редактор с анализатором кода подскажет и тут...

PSV>К тому же, там сам по себе удобный текстовый редактор (в большинстве IDE редакторы хромают), где будет и множественное выделение, и удобная работа с буфером обмена и с undo/redo (и не только для текста), удобное перемещение по тексту, мощные шаблоны кода, умные дополнялки, удалялки, выравнивалки текста и т.д. При этом есть мощные и гибкие средства для реализаций операций над текстом, нужные именно тебе для своих потребностей. Всё это помножено реально удобной средой для управления всем этим делом. А такие вещи, как EasyMotion в виме (быстрое перемещение по тексту в стиле вимператора для firefox), или rainbow-mode в эмаксе (подсветка в коде цветовых констант в соответствие с их значениями) и т.п., особенно когда в совокупности таких вещей не мало — вроде ничего серьёзного на первый взгляд, но "подсаживает" конкретно, и подобных вещей в монстрах-IDE редко встретишь.


Ну допустим мне чаще требуется использование функции "перейти к определению элемента", чем какими-то особыми фичами редактора текста. Т.е. перейти в include файл в определение класса или просто посмотреть в подсказке какие аргументы у функции...

PSV>Конечно, приятно, когда к этому есть ещё и хороший парсинг кода. Например, многие лисперы свой slime на эмаксе навряд ли на что-то променяют.


Тут возможно не все понимают насколько мощно это в редакторах типа NetBeans. Допустим у меня там настроено подчёркивать красной волнистой линией неизвестные ему элементы (а с учётом качества его анализатора, неизвестное — это почти всегда неверное). Т.е. я могу не собирая проект точно сказать что код у меня скомпилируется.

PSV>- вим/эмакс по вкусу — это классика, где уже реализовано столько расширений, что фактически можно быть в вечном поиске нирваны, бесконечно совершенствуя свою среду для работы (именно эта магия и притягивает многих). Обратная сторона медали: тяжеловато осваиваются и требуется привыкание, особенно в виме с его разными режимами работы. Лично я с ними тяжеловато уживаюсь и редко их использую: основная разработка вынужденно ведется в монстрах-IDE плюс специфичный софт, когда постоянно переключаешься из одной привычной среды в другую, то не успеваешь перестраиваться, путаешься в клавишах, реально раздражает. Не везде и всегда получается эмулировать вим/эмакс. Теоретически можно перенастроить вим/эмакс на свой лад, но на практике это геморно, необходимо учитывать немало нюансов (проект cream — альтернативная конфигурация вима — не просто так появился), да и если попеределовать азы вима/эмакса, то фактически это уже будет не вим/эмакс.


Поставил себе всё же для пробы emacs+cedit+ecb. Пока ощущения странные. Для начала я хотя бы убедился что он умеет то что мне нужно. И даже без особых тормозов Т.е. он из коробки сумел расцветить код в соответствие с анализом библиотек. Но дальше дело идёт к настройке под себя и тут уже как-то не весело всё становится. И интерфейс под сомнением конечно.

PSV>- JEdit — проект не умер, сейчас пилят его и для него совсем мало народу, особенно на фоне вима/эмакса, но это реальная серьёзная альтернатива для них. Простой, лёгкий, но мощный, местами удобнее и мощнее вима/эмакса, но не во всём.


Да, он хороший, но видимо не для C++.

PSV>- Sublime Text 2 — редактор платный и не ясно, что там будет с триалами после релиза. Сейчас он менее функционален, но его базовый арсенал реализован весьма приятно. Пилят его довольно активно, вроде уже народ ломанулся ваять всякие плагины, потенциал есть. Ему бы заменить и добавить некоторый функционал от JEdit-а, пару вещей передрать из эмакса (например, удобный минибуфер/командная строка с автокомплитом для команд/макросов с их параметрами, поддержка не только текстовых режимов внутри буфера, т.е. нечто подобное wiki-режимов, и др.) — получилось бы бомбовая конфетка.


Я что-то не заметил что бы он был заметно сильнее Notepad++, хотя особо не вдавался в детали. Хотя Питон — это конечно здорово.

PSV>Остальные редакторы (возможно, за исключением специализированных, как Coda, Espresso на маках для веб-вёрстки), как правило, менее функциональны и менее удобны в использовании, включая и пользовательский интерфейс, вряд ли дадут таких профитов и оправдают инвестиции в себя, вместе с потраченным временем на освоение.


После заведения этой темки и анализа ещё нескольких вариантов (я пробовал ставить то, что раньше не видел) у меня пока следующие предпочтения:

1. Netbeans. Используется сейчас. Мощный и удобный. Тормознутый и много лишнего.
2. Zeus. Мощный, удобный, быстрый. Платный, не кроссплатформенный, много лишнего.
3. Emacs+cedit+ecb. Мощный, не тормознутый. Неудобный в настройке. Пока под вопросом удобство в использование.
Re[2]: Нормальный редактор для C++ - существует ли?
От: Ops Россия  
Дата: 12.03.12 12:41
Оценка:
Здравствуйте, alex_public, Вы писали:

_>А из плюсов: самый быстрый редактор с синтаксическим анализом, который я видел. Заметно быстрее даже VS+VA, про Eclipse и Netbeans вообще молчу. И при этом без проблем и корректно справился с моими большими и сложными библиотеками. Просто супер в этом смысле.

Буст нормально парсит?
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[3]: Нормальный редактор для C++ - существует ли?
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 12.03.12 12:51
Оценка:
Здравствуйте, Ops, Вы писали:

Ops>Буст нормально парсит?


Если базируется на ctags, то однозначно нет.
Re[4]: Нормальный редактор для C++ - существует ли?
От: jazzer Россия Skype: enerjazzer
Дата: 12.03.12 13:05
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Здравствуйте, jazzer, Вы писали:


J>>У него там то же самый ctags


_>В каком смысле тот же самый? ) Ну и кстати ctags же только создаёт базу. А вот как в ней искать... Т.е. в этой области важен именно момент подсказки (бесит когда тормозит тут), а парсить исходники оно сколько угодно может, не жалко)))


ctags очень слабо понимает С++, к сожалению
а его опция -regex — это вообще недоразумение какое-то
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[3]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 12.03.12 14:12
Оценка:
Здравствуйте, Ops, Вы писали:

Ops>Буст нормально парсит?


Ммм да, что-то я не посмотрел на Буст сразу... В начале тестировал на другой библиотеке, которая поважнее для меня.

На Бусте глючит. Ну точнее навигация по прежнему мгновенная и безукоризненная, а вот список членов класса и т.п. для многих классов из Буст глючит.

Всё, вычёркиваем этот редактор...

Кстати, интересно будет глянуть как cedet (из emacs) относится к Boost.

Да, а у Нетбинса точно нормально — проверено. )
Re[5]: Нормальный редактор для C++ - существует ли?
От: PSV100  
Дата: 12.03.12 14:58
Оценка:
Здравствуйте, alex_public, Вы писали:

_>После заведения этой темки и анализа ещё нескольких вариантов (я пробовал ставить то, что раньше не видел) у меня пока следующие предпочтения:


_>1. Netbeans. Используется сейчас. Мощный и удобный. Тормознутый и много лишнего.

_>2. Zeus. Мощный, удобный, быстрый. Платный, не кроссплатформенный, много лишнего.
_>3. Emacs+cedit+ecb. Мощный, не тормознутый. Неудобный в настройке. Пока под вопросом удобство в использование.

Кстати, вроде в JEdit-е как раз и собирались прикрутить парсер от нетбинса, но результата что-то не видно.

И, имхо, если жизненно необходим парсинг кода, то пока дёргаться в сторону от студии, эклипса, нетбинса и т.п. нет смысла. Хорошие текстовые редакторы дают профиты иного плана. По поводу C++ мне трудно что-то посоветовать конкретно, для меня это не основная сфера деятельности, и кроме студии я для него ничего толком и не гонял. Но я вижу такую картину: под вимом/эмаксом для С/С++ сидит немало народу, особенно под линухом, при этом не чураются рядом иметь студию/эклипс — действительно там удобнее иногда первично разобрать проект, особенно незнакомый и большой (и не только в С++). А такие вещи как xrefactory — вообще умерли (кстати, там раньше был плагин и для JEdit-а), и cedit не особо популярный. По поводу автокомплита уже вроде обсудили, и для нахождения нужных определений в коде тоже вроде здесь намекали — действительно часто просто и удобно сделать поиск по проекту, вывалить результат в спец-панель или буфер, клацнуть на клавишу и перейти в нужное место. И далее в таком стиле, можно макросы ваять для упрощения и ускорений действий.
Лично я к понимаю эмакса/вима пришёл другим путём. Я с начала погонял вимператор/pentadactyl для firefox-а и их аналог keysnail, но в стиле эмакса (местами он их лучше). Потом в команде понадобилась своя наколенная ide для своих DSL-язычков, для которых нет никаких готовых монстров-IDE — здесь хороший текстовый редактор — самое то (пришлось делать поверх JEdit-а).
Имхо, вполне есть смысл попытаться прокачать удобный редактор. Можно начать с Sublime. Его идеологический предок — TextMate на маке — вполне доказал свою практичность, несмотря на гораздо меньший потенциал, чем в виме/эмаксе. В плане конфигурирования синтаксического разбора, цветовых схем, и в рамках базового функционала для редактирования текста Sublime мощнее и гибче, чем редакторы поверх scintill-ы, как Notepad++, scite и пр. К тому же, его удобный интерфейс, такие плюшки как Command Palette, Goto Symbol и пр. (кстати, для C++ он делает базовый разбор элементов в файле) — это самое оно для простого редактора.
Если что-то получится, то станет понятным, есть ли смысл набрасываться на вим/эмакс, а может они и не понадобятся.
Re[4]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 12.03.12 15:03
Оценка:
Ха, а CEDIT прожевал Boost нормально, но при этом стал тормознее Нетбинса. Интересненько... )))
Re[5]: Нормальный редактор для C++ - существует ли?
От: Kswapd Россия  
Дата: 12.03.12 19:10
Оценка:
_>Поставил себе всё же для пробы emacs+cedit+ecb. <skip> И интерфейс под сомнением конечно.

Ещё бы. GUI в Emacs ахтунг. Я почти полностью скрыл GUI-элементы в своих настройках Emacs: меню, тулбар, прокрутку, рамку фрейма. Мышью не пользуюсь вовсе. Интерфейс — шорткаты и команды, вводимые по M-x.
Re[6]: Нормальный редактор для C++ - существует ли?
От: PSV100  
Дата: 13.03.12 12:41
Оценка:
Здравствуйте, PSV100, Вы писали:

PSV>[...]


В дополнение к своему предыдущему посту.
Имхо, использовать какие-то полу-IDE, как указанный zeusedit и ему подобные, особо нет смысла — это не рыба и не мясо: нет ни профитов промышленных IDE, ни мощи и удобства программистких редакторов.
Я всё-таки рекомендую получше присмотреться к Sublime. Могу поделиться своими юзкейсами. Я, в основном, использую JEdit как редактор, но принципы те же. Правда у меня основная разработка в рамках своих DSL, где языки очень простые, и всякие мощные парсеры в IDE с анализами и рефакторингами особо и не нужны, и разработка в таком стиле — реальное удовольствие, в отличие от... Но я всё чаще и чаще замечаю за собой, что всё больше и больше я, как минимум, анализирую/изучаю исходники на том же C++, жабе и пр. именно в редакторе, и нахожу для себя это более удобным, чем ковыряние в IDE.

По поводу автокомплита уже вроде все описали. В Sublime для этого есть всё из коробки. Я правда не помню, как там выбираются идентификаторы из соседних буферов, не всегда нужно лазить во все буферы, но автодополнение работает приятно.

По поводу переходов/поиска определений элементов. Можно забабахать макросы в таком стиле: клацнули клавишу, определяем имя элемента (согласно выделенному тексту или положению курсора, можно также и запросить через ввод), выполнили поиск в проекте стандартными средствами редактора (они вполне мощные), если результат не один, то выводим в спец-окна/панель/буфер, где можно всё наглядно оценить, часто даже и переходить на нужное место и не понадобится.
Кроме перехода, можно открыть буфер (напр., как новая копия, если уже открыт этот файл для работы) где-то рядом с буфером-источником, или, как в JEdit-е, можно выдрать нужный текст и вставить в какой-нибудь InfoViewer — т.е. как бы вывести подсказку для какой-нибудь функции, смотришь на нее и вводишь текст. И тому подобное в таком стиле. Для С++ можно ограничить поиск через список includ-ов, выдрать их из текста вполне возможно.
Уверен, что для вима/эмакса таких готовых скриптов можно найти не мало, возможно и для Sublime уже наваяли. Также не мало всяких помогалок в стиле переключений из хедера на реализацию и наоборот, фактически это уже "стандартный" набор.

Ещё есть такая удобная штука как фолдинг. До редакторов я не понимал, нафига он есть во всяких IDE (правда в них он не такой приятный). С ним реально удобно. Например, клацнул в редакторе — сверни мне всё до 2-го уровня — получи список всех функций/методов в файле. В Sublime есть специализированные свёртки, как атрибутов в html-тэгах — реально уменьшает шум в тексте. В JEdit-е есть удобный механизм вырезаний — narrow: клацнул и в буфере остался только текущий параграф или уровень фолдинга и т.п., побаловался, клацнул — вернул назад полный текст. При этом можно "фолдить/вырезать" в копии буфера, открытой рядом, синхронизироваться между ними.
В Sublime нет какого-нибудь класс-вьювера/outline_а_ля_эклипс для кода. И действительно он там особо и не нужен. В Jedit-e я и не помню, чтобы пользовался его деревом Sidekick для этих дел.

И так далее в таком стиле. При этом нет дикого расхода оперативки (можно запускать рядом IDE, она всё сожрёт), нет затыков, всё летает.

Почему именно Sublime:

— В нём из коробки есть всё что нужно. Почитал документацию (ее там мало), немного поднастроил, помедетировал, сел и поехал. Потом, когда прокачал, начинаешь смотреть всякие плагины и писать свои.

— На мой взгляд, в Sublime самая гибкая система парсера для синтаксического разбора. Туда бы добавить ряд принципов от Jedit-а, и фактически никакой ctags и не нужен. Если добавят публичное API вокруг парсера (если его ещё нет), то можно будет ваять плагины для примитивного анализа и пр., фактически свой встроенный ctags/cscope, причём все и так уже держится в памяти для прорисовки.

— Именно такой парсер позволяет реализовать их удобный поиск символов. И в целом режимы "Goto ..." реализованы отменно. Имхо, именно эта фича заставляет платить бабки. Для вима/эмакса (и кое-что и для JEdit-а) есть эмулирующие скрипты, но работают они не так приятно и быстро. Здесь Sublime вне конкуренции. И это реально избавляет от многих примочек, которые имеют всякие IDE.

— В редакторе приятный и главное удобный интерфейс (но не без недостатков), который позволяет эффективно работать без мыши. Лично мне после Sublime/JEdit/vim/emacs работать во всяких IDE как-то неудобно. После них для каждого софта пытаешься найти свой "вимператор".

— его базовый функционал для редактирования текста — это самое оно, что нужно в текстовом редакторе.

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

— vim. Имхо, его основные профиты, которые дают разные режимы работы, достигаются альтернативным путём. Действительно удобно, когда можно меньше тянуться к стрелкам, pageup/down и пр., особенно на долбаных клавиатурах в ноутах. В JEdit-е для этого из коробки есть клавиши Alt-i,j,k,l,q,a,z,x плюс Alt/Ctrl — ' и / — вполне удобно. Для повторения операций в Jedit-e есть удобный способ: нажал Ctrl-Enter (запустилась command-bar), если дальше набираешь буквы — будем запускать команду, если цифры — будем повторять, например, 12 + пробел -- вставили 12 пробелов, 8 + pageUp -- на 8 страниц вверх (в Sublime я что-то такого не заметил, но запускалки команд там есть). Из всего многообразия способов перемещения по тексту (кроме элементарных операций) для себя я нашел эффективным: вперед/назад по параграфам, фолд-уровням и синтаксическим областям (когда доступны). А также удобно выделение для перемещения, как в Sublime: выделил блок (например, пару раз клацнул Ctrl+Shift+Space) — курсор справа от выделения, нажал влево — перелетел в начало блока. В Sublime помогает undo/redo для выделения. И напомню про "Goto ..."
Кстати, очень эффективны плагины в виме для перемещения в стиле вимператора — удобно. В целом, конечно, операций над текстом в виме до хрена и больше, освоить их можно только при постоянной работе с ним. В Sublime есть кое-какой его эмулятор.

— emacs. В его раскладке хоть и прослеживается логика, но для меня всё-таки не удобно. Заметил, что некоторые не выдерживают, перенастраивают.
Кстати, заметил, что лучше делать длинные шоркаты в таком стиле: Ctrl+E, затем 1,2,3 клавиши рядом с E под левую руку (при этом Ctrl жмём правой), и зеркальное отображение: Ctrl+K и т.д. под правую. Для меня это лучше, чем тянуться к Ctrl, Shift и пр. всякими мизинцами, жать одновременно по три, а то и четыре клавиши, особенно через неудобное Ctrl+Alt.

В Sublime, конечно, не хватает ряда вещей от vim/emacs/JEdit, кое-что я бы сделал по-другому, но идеального ничего нет. Некоторые и вимом/эмаксом пользуются вынужденно, ибо альтернатив нет.
Удачи.
Re[7]: Нормальный редактор для C++ - существует ли?
От: Kswapd Россия  
Дата: 13.03.12 12:56
Оценка:
PSV>Ещё есть такая удобная штука как фолдинг.

Кстати о фолдинге. Мне он оказался неудобен. Слишком много суеты со сворачиванием-разворачиванием. Удобнее оказался подход с неформальным названием "карта буфера". Простейший вариант достигается через фичу Emacs occur. Во фрейме открывается окно в буфер, содержащий, например, тот же список функций или классов, в виде своего рода меню для перехода в нужное место. Это эквивалентно фолдингу, но не разрушает "ментальный образ" текущего буфера.

А для прыжков между окнами идеальны биндинги типа WIN-стрелка. Просто идеальны.
Re[6]: Нормальный редактор для C++ - существует ли?
От: PSV100  
Дата: 13.03.12 12:59
Оценка:
Здравствуйте, Kswapd, Вы писали:

_>>Поставил себе всё же для пробы emacs+cedit+ecb. <skip> И интерфейс под сомнением конечно.


K>Ещё бы. GUI в Emacs ахтунг. Я почти полностью скрыл GUI-элементы в своих настройках Emacs: меню, тулбар, прокрутку, рамку фрейма. Мышью не пользуюсь вовсе. Интерфейс — шорткаты и команды, вводимые по M-x.


Но почему же ахтунг. Я тоже убираю всю лишнюю фигню, работаю без мыши в основном. После эмакса/вима/Jedit-а внутри какой-то IDE не уютно.
Вот что реально раздражает в виме/эмаксе, это то, что там бывают какие-то затыки и случаются мерцания белым цветом, особенно при тёмной цветовой схеме.
Re[8]: Нормальный редактор для C++ - существует ли?
От: PSV100  
Дата: 13.03.12 14:09
Оценка:
Здравствуйте, Kswapd, Вы писали:

PSV>>Ещё есть такая удобная штука как фолдинг.


K>Кстати о фолдинге. Мне он оказался неудобен. Слишком много суеты со сворачиванием-разворачиванием. Удобнее оказался подход с неформальным названием "карта буфера". Простейший вариант достигается через фичу Emacs occur. Во фрейме открывается окно в буфер, содержащий, например, тот же список функций или классов, в виде своего рода меню для перехода в нужное место. Это эквивалентно фолдингу, но не разрушает "ментальный образ" текущего буфера.


K>А для прыжков между окнами идеальны биндинги типа WIN-стрелка. Просто идеальны.


Очень может быть, что такой подход приятнее. Я эмаксом и вимом мало пользуюсь, всех, или хотя бы основных, их скилов не знаю. В JEdit-е для этих целей есть система Sidekick, сделанная по мотивам эклипса. Для вывода структуры буфера рисуется дерево, как это делают многие IDE. Лично мне такие деревья не очень удобны, возня с фолдингом как-то удобнее, все на месте можно посмотреть.
В Sublime сделан очень приятный переход по символам, но функционал там именно для перехода, а синтаксическую структуру буфера он не рисует, хотя потенциал для этого есть из коробки, возможно позже и реализуют (может и сторонними плагинами, или уже что-то есть для этого). Также в Sublime мне показалась работа с буферами не очень удобной. В JEdit-е, мне кажется, его модель View-buffer-dock_panel даже приятнее, чем в виме/эмаксе. Только хотелось бы, чтобы в dock-ах по сторонам открывались не GUI-панели, а буферы, т.е. это были бы предопределенные места для специализированных буферов. Ключевое отличие от модели эмакса — есть как бы раздельное управление между обычными буферами внутри view и отдельные dock-буферы со своим управлением — очень удобно. Также, например, есть понятие активный текстовый буфер — ты прыгнул в специализированный буфер-консоль, при этом выделен последний активный буфер-текст, и сразу понятно, относительно какого буфера будут даваться команды, например. Также приятно переключение между состояниями в view, т.е. положение всех буферов, по принципу перспектив в эклипсе, только это должно быть быстрое переключение, как в JEdit-е, а не как в эклипсе.
Но для счастья нужна эмаксовая примочка в буферах — поддержка не только текстовых режимов, но и поверх текста — всякие ссылки, картинки, имитация таблиц, деревьев и пр. — реальная мощь.
Re[7]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 13.03.12 15:39
Оценка:
Здравствуйте, PSV100, Вы писали:

PSV>В дополнение к своему предыдущему посту.


А я вот если честно не особо вижу зачем существуют редакторы типа jedit, Sublime, Emacs и т.п. Т.е. для целей типа "быстро отредактировать один файл" возможностей Notepad++ более чем достаточно. А для серьёзной работы над большими проектами уже мало их возможностей — требуется что-то ближе к IDE, с возможностями анализа и т.п. Так что не знаю. Ну разве что они полезны для создания "персональных IDE", под какие-то свои узкие цели. Но это дофига работы ещё надо...
Re[5]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 13.03.12 15:44
Оценка:
Здравствуйте, alex_public, Вы писали:

_>1. Netbeans. Используется сейчас. Мощный и удобный. Тормознутый и много лишнего.

_>2. Zeus. Мощный, удобный, быстрый. Платный, не кроссплатформенный, много лишнего.
_>3. Emacs+cedit+ecb. Мощный, не тормознутый. Неудобный в настройке. Пока под вопросом удобство в использование.

Мда, мой список оказался неверным. )))

Zeus не корректно парсит некоторые библиотеки — откинули. Кстати, Vim видимо туда же, т.к. его анализатор (во всяком случае то, что есть готовое) вроде тоже на базе ctags.

Emacs+cedit работает правильно, но тормозит ещё намного хуже Нетбинса с Эклипсом на больших библиотеках. Просто ужас. Т.е. даже не буду уже разбираться с настройками и интерфейсовм, т.к. это торможение уже не приемлемое вообще.

В итоге так и остался лидером Netbeans...
Re[8]: Нормальный редактор для C++ - существует ли?
От: PSV100  
Дата: 13.03.12 16:45
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Здравствуйте, PSV100, Вы писали:


PSV>>В дополнение к своему предыдущему посту.


_>А я вот если честно не особо вижу зачем существуют редакторы типа jedit, Sublime, Emacs и т.п. Т.е. для целей типа "быстро отредактировать один файл" возможностей Notepad++ более чем достаточно. А для серьёзной работы над большими проектами уже мало их возможностей — требуется что-то ближе к IDE, с возможностями анализа и т.п. Так что не знаю. Ну разве что они полезны для создания "персональных IDE", под какие-то свои узкие цели. Но это дофига работы ещё надо...


Тут пока не грызнёшь кусочек — не почувствуешь вкус. Кроме того, что, как правило, монстры-IDE действительно слабо поворотливые монстры, не во всём удобные, но и не покрывают они всех потребностей, и не так они расширяемы. Вопрос в том, что далеко не всем нужны эти экстра-возможности. Но такие проекты, как eclim — vim внутри эклипса или эклипс внутри вима — не с потолка придумывают, несмотря на весь гемор. Эклипс задумывался как современная продвинутая замена для эмакс, но так его и не "убил". Эмакс не зря дразнят "операционкой", кроме разработки под все возможные языки, там есть такие вещи, как org-mode, свой почтовик и т.д. — всё работает в одном стиле, все можно повязать с друг лругом, и обалденно удобно для тех, кто привык. Многие с опытом понимают, что им не нужно то, как их "учат" или "нагибают" IDE, есть энтузиасты, кто и в жабе жертвует всеми плюшками IDEA, например.
Лично мне для C++, жабы совсем без IDE тяжело, у меня ещё не тот уровень. Если бы в JEdit всё-таки впихнули парсер от нетбинса для С++, я думаю, что тебя бы JEdit "подсадил" бы.
Re[6]: Нормальный редактор для C++ - существует ли?
От: Kswapd Россия  
Дата: 13.03.12 18:15
Оценка:
_>Emacs+cedit работает правильно, но тормозит ещё намного хуже Нетбинса с Эклипсом на больших библиотеках. Просто ужас. Т.е. даже не буду уже разбираться с настройками и интерфейсовм, т.к. это торможение уже не приемлемое вообще.

Предупреждал . CEDET — неюзабельная хрень. Даже забавно, сколько лет его разрабатывают, а не поймут, что парсить надо не ELisp'ом, а чем-то более быстрым.
Re[9]: Нормальный редактор для C++ - существует ли?
От: Kswapd Россия  
Дата: 13.03.12 18:18
Оценка:
PSV>Эклипс задумывался как современная продвинутая замена для эмакс, но так его и не "убил".

Совершенно верно, Eclipse — типа "Emacs сегодня". Но глючность, громоздкость, тормознутость (у Emacs-то ядро на C написано), трудность расширения (по сравнению с Emacs) не позволяют стать нормальной заменой Emacs.
Re[10]: Нормальный редактор для C++ - существует ли?
От: PSV100  
Дата: 13.03.12 19:19
Оценка:
Здравствуйте, Kswapd, Вы писали:

PSV>>Эклипс задумывался как современная продвинутая замена для эмакс, но так его и не "убил".


K>Совершенно верно, Eclipse — типа "Emacs сегодня". Но глючность, громоздкость, тормознутость (у Emacs-то ядро на C написано), трудность расширения (по сравнению с Emacs) не позволяют стать нормальной заменой Emacs.


Имхо, тормознутость и прочее в эклипсе всё-таки не из-за джавы как таковой. Тот же JEdit летает шустро, и памяти требует гараздо меньше всяких firefox-ов. Я даже заметил, что огромные файлы он открывает быстрее всех (на фоне Sublime, vim, emacs). В нём правда есть один затык — он тормозит в режиме soft-wrap, когда строки виртуально обрезаются по правому краю и на экране переносятся ниже, особенно на длинных строках. Но это особенности внутренних алгоритмов редактора. А так, код в нём хоть и не идеальный, но гараздо меньше индусо-кода.
В JEdit-е и плагины устанавливаются, включаются, отключаются — быстро, удобно и проще некуда. Посмотришь на эклипс — и не понимаешь, нахрена эта ынтерпрайз-жаба со всеми её OSGi-выкрутасами.
Re[11]: Нормальный редактор для C++ - существует ли?
От: Kswapd Россия  
Дата: 13.03.12 19:31
Оценка:
PSV>Имхо, тормознутость и прочее в эклипсе всё-таки не из-за джавы как таковой.

Очень может быть. Я на джаве одно время разрабатывал, быстрые программы делать можно. Что-то у них там наворочено, неподъёмное...

Но вот отсутствие в Eclipse возможности задать простой клавиатурный макрос — очень удивило.
Re[6]: Нормальный редактор для C++ - существует ли?
От: SleepyDrago Украина  
Дата: 13.03.12 21:11
Оценка:
Здравствуйте, alex_public, Вы писали:

...
_>В итоге так и остался лидером Netbeans...

у меня есть нездоровые сомнения в том что программисты на java будут писать редактор заточенный на С++ и делать это регулярно обновляя его под все более сложные фичи.

Можно вопрос что именно вы делаете с С++ что у вас обычная VS без помидоров тормозит?

Там где я сейчас старая версия софта использовавшая кутэ интелисенс убивала — факт. Но выкинули кутэ и все пучком . И это хорошо согласуется с моими наблюдениями что проще устранить то что мешает VS работать чем пытаться искать счастья на стороне.
Re[7]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 13.03.12 22:52
Оценка:
Здравствуйте, Kswapd, Вы писали:

K>Предупреждал . CEDET — неюзабельная хрень. Даже забавно, сколько лет его разрабатывают, а не поймут, что парсить надо не ELisp'ом, а чем-то более быстрым.


Кстати, дело как раз не в самом парсинге, а в реакции. Т.е. я допустим согласен что бы оно парсило сложные библиотеки хоть несколько часов — всё равно это один раз. Но вот что бы по нажатию . или -> или ctrl+пробел срабатывало вообще без задержек, мгновенно. И вот как раз тут cedit ужасно себя проявил. В том же Нетбинсе задержка чувствуется, но как бы не мешающая работать, а только чуть раздражающая...
Re[7]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 13.03.12 22:59
Оценка:
Здравствуйте, SleepyDrago, Вы писали:

SD>у меня есть нездоровые сомнения в том что программисты на java будут писать редактор заточенный на С++ и делать это регулярно обновляя его под все более сложные фичи.


Нуу например парсинг C++11 конструкций уже прикрутили, как раз в последнем релизе. Что меня очень порадовало, т.к. я уже перешёл на использование auto и т.п., а предыдущая версия подчёркивала это всё. )))

SD>Можно вопрос что именно вы делаете с С++ что у вас обычная VS без помидоров тормозит?


Эммм, а где я писал что VS тормозит? Как раз VS никогда у меня не тормозила, в том числе и вместе с VA. Меня не удовлетворяет функциональность их парсера/редактора. Т.е. даже VS+VA слабее чем редактор Нетбинса.

SD>Там где я сейчас старая версия софта использовавшая кутэ интелисенс убивала — факт. Но выкинули кутэ и все пучком . И это хорошо согласуется с моими наблюдениями что проще устранить то что мешает VS работать чем пытаться искать счастья на стороне.


Кстати, про QT не знаю точно — там же у них ещё своя надстройка над языком... Не знаю как сторонние редакторы к ней относятся. Но в любом случае у них в резерве есть QTCreator.

А мне для начал надо что бы Boost мог прожеваться. )))
Re[12]: Нормальный редактор для C++ - существует ли?
От: PSV100  
Дата: 13.03.12 23:01
Оценка:
Здравствуйте, Kswapd, Вы писали:

K>Но вот отсутствие в Eclipse возможности задать простой клавиатурный макрос — очень удивило.


А зачем там макросы? Ведь сделали современный ультратехнологичный эмакс (наконец-то), который всё знает и всё умеет, и не мешайте ему работать, а лучше наслаждайтесь интеллектуальным процессом разработки. Вы уже в 21 веке, опомнитесь, проснитесь, может уже пора на пенсию?

А если ынтерпрайз-эклипс что-то для чего-то не умеет, значит это ынтерпрайз-невосстребовано. Многие на Скалу даже взглянуть не хотели, прежде всего, из-за того, что не было (да и сейчас нет) поддержки со стороны IDE на уровне джавы.

И если даже введут ынтерпрайз-макросы, то можно будет повеситься: необходимо будет оформить километровую простыню из XML, реализовать свою фабрику макросов от AbstractMacroFactory (c разными вариантами политик управления макросами, причём для каждой work-директории своя фабрика), сам макрос должен быть наследован от AbstractMacro с реализацией не одного интерфейса. Макросом можно будет пользоваться только после прохождения unit-тестирования. Да, и не забыть про JavaDoc-документацию, она обязательно будет гармонично интегрироваться в общую документацию эклипса.
И при первом запуске макроса после нажатия шорката можно смело идти заваривать кофе.

Всё это конечно шутка, но доля плачевной правды в этом есть
Re[8]: Нормальный редактор для C++ - существует ли?
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 13.03.12 23:04
Оценка:
Ты просто не открывал при помощи Нетбинса действительно большой проект. Я как то подбирал в чем же мне открывать огроменный проект в Mac OS X. Так вот, Нетбинс просто падал в процессе парсинга, Eclipse подтормаживал слегка, но работал, а SlickEdit летал, все парсил и вообще отлично работал. Но т.к. денег на лицензию мне было жалко, я писал в Vim.
Re[9]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 14.03.12 00:08
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Ты просто не открывал при помощи Нетбинса действительно большой проект.

Причём тут размер проекта? Пускай для начала хотя бы инклуды отпарсит нормально. Сам C++ с WinAPI (допустим) — это уже мегов 100 заголовков. Добавляем Boost, ещё пару библиотек — ещё мегов 50 добавляется, причём намного сложнее чем в WSDK. Вот если это всё нормально проанализируется, то значит парсер хороший. А что бы размер проекта существенно влиял на ситуацию, это он должен быть уже совсем огромный, за сотню мегов.

KP>Я как то подбирал в чем же мне открывать огроменный проект в Mac OS X. Так вот, Нетбинс просто падал в процессе парсинга, Eclipse подтормаживал слегка, но работал, а SlickEdit летал, все парсил и вообще отлично работал. Но т.к. денег на лицензию мне было жалко, я писал в Vim.


Нетбинс у меня никогда не вылетал, только тормозил немного. Правда у меня стоит какой-то там тюнинг настроек JVM взяты по рекомендациям с их сайта.

Эклипс тоже не вылетал сам, но иногда подвисал на сложных библиотеках, так что приходилось убивать. Причём как-то странно — иногда подвисал, а иногда нет. И когда отрабатывал, то показывал уже всё корректно.

SlickEdit я проверял — он парсит некорректно. Наверное тоже ctags внутри или что-то такое.
Re[10]: Нормальный редактор для C++ - существует ли?
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 14.03.12 00:46
Оценка:
_>Причём тут размер проекта? Пускай для начала хотя бы инклуды отпарсит нормально. Сам C++ с WinAPI (допустим) — это уже мегов 100 заголовков. Добавляем Boost, ещё пару библиотек — ещё мегов 50 добавляется, причём намного сложнее чем в WSDK. Вот если это всё нормально проанализируется, то значит парсер хороший. А что бы размер проекта существенно влиял на ситуацию, это он должен быть уже совсем огромный, за сотню мегов.
А... я понял Мне просто для мелких проектиков за глаза хватает Vim-а и Grep, не говоря уж о cscope
_>Нетбинс у меня никогда не вылетал, только тормозил немного. Правда у меня стоит какой-то там тюнинг настроек JVM взяты по рекомендациям с их сайта.
К сожалению, на проекте размером в 2 гига, он встал в нехорошую позу
_>SlickEdit я проверял — он парсит некорректно. Наверное тоже ctags внутри или что-то такое.
Там своя парсилка, отлично работающая. Ну и 2 гига он в состоянии распарсить и потом по ним обеспечить навигацию без особых проблем. Кстати, а что ты там за ошибку парсинга нашел? Я им лет 5 назад активно пользовался и он все отлично парсил.
Re[4]: Нормальный редактор для C++ - существует ли?
От: 0xDEADBEEF Ниоткуда  
Дата: 14.03.12 04:00
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Здравствуйте, jazzer, Вы писали:


J>>У него там то же самый ctags


_>В каком смысле тот же самый? ) Ну и кстати ctags же только создаёт базу. А вот как в ней искать... Т.е. в этой области важен именно момент подсказки (бесит когда тормозит тут), а парсить исходники оно сколько угодно может, не жалко)))


Я поступил просто. Написал мелкую-мелкую утилитку, которая делает следующее:
1) От текущего каталога, спускается к корню диска и ищет ctags-овскую базу.
2) Найдя ее, ищет в ней все совпадающие теги и печатает их на stdout. Формат вывода совпадает с форматом сообщений об ошибках компилятора VC

Как эта штука используется:
— в корне проекта командой "ctags -R" создается база тегов.
— утилита вешается на горячую кнопку как custom tool и вываливает теги в окно вывода.

Плюс в том, что эта штука работает практически с любым редактором, который поддерживает кастом тулы. И не надо создавать никаких "проектов" и прочей тряхомуди. Просто натравить ctags на каталог. Очень удобно, если надо разобраться в каком-нить опенсорсе, что собирается мэйкфайлами.

Вот как выгдядит output:
> "d:\tools\ftag.exe" coroutine
D:\prj\libs\corlib\coroutine.hpp:280: function public coroutine::coroutine()
    /^    coroutine()$/
    language=C++;class=coroutine;access=public;signature=()
D:\prj\libs\corlib\coroutine.hpp:348: function public coroutine::coroutine(Function PXT_RREF f, std::size_t stack=0)
    /^    coroutine(Function PXT_RREF f, std::size_t stack=0)$/
    language=C++;class=coroutine;access=public;signature=(Function PXT_RREF f, std::size_t stack=0)
D:\prj\libs\corlib\coroutine.hpp:301: function public coroutine::coroutine(coroutine const& rhs)
    /^    coroutine(coroutine const& rhs)$/
    language=C++;class=coroutine;access=public;signature=(coroutine const& rhs)
D:\prj\libs\corlib\coroutine.hpp:307: function public coroutine::coroutine(coroutine& rhs)
    /^    coroutine(coroutine& rhs)$/
    language=C++;class=coroutine;access=public;signature=(coroutine& rhs)
D:\prj\libs\corlib\coroutine.hpp:312: function public coroutine::coroutine(coroutine&& rhs)
    /^    coroutine(coroutine&& rhs)$/
    language=C++;class=coroutine;access=public;signature=(coroutine&& rhs)
D:\prj\libs\corlib\coroutine.hpp:238: class coroutine
    /^class coroutine$/
    language=C++;inherits=impl_coroutine::coroutine_value

> Process Exit Code: 0
> Time Taken: 00:00


Ну, и исходники самой тулзины (надо, чтобы исходники ctags валялись где-то рядом)
//CC VC-10
//G++-FLAGS -O0 -g -- -lboost_filesystem-mgw45-mt-1_44 -lboost_system-mgw45-mt-1_44
//VC-FLAGS -MT -O2 -EHsc
#include <string.h>
#include <iostream>
#include <boost/filesystem.hpp>
#include "../3rdparty/ctags-5.8/readtags.h"

namespace fs = boost::filesystem;
using fs::path;

std::string
tagfile_find(path curdir = fs::current_path<path>())
{
    static const char* tagfile_names[] = {
        "tags", ".tags", "ctagsdb", ".ctagsdb", 0
    };
over:
    if( curdir.empty() )
        return std::string();
    for(int i=0; tagfile_names[i]; ++i)
    {
        path f = curdir / tagfile_names[i];
        if( fs::is_regular_file(f) )
            return f.file_string();
    }
    curdir = curdir.parent_path();
    goto over;
}

std::string
lookup_field(tagEntry const& entry, const char* name)
{
    for(int f=0;  f < entry.fields.count;  ++f)
    {
        if( 0 == strcmp(entry.fields.list[f].key, name) )
            return entry.fields.list[f].value;
    }
    return std::string();
}

std::string
build_name(tagEntry const& entry)
{
    const char *scope_delimiter = "::";

    std::string access    = lookup_field(entry, "access");
    std::string namesp    = lookup_field(entry, "namespace");
    std::string scope1    = lookup_field(entry, "class");
    std::string scope2    = lookup_field(entry, "struct");
    std::string signature = lookup_field(entry, "signature");

    std::string name      = std::string(entry.name) + signature;

    if( !access.empty() )
        access += ' ';
    if( !namesp.empty() )
        namesp += scope_delimiter;
    if( !scope1.empty() )
        scope1 += scope_delimiter;
    if( !scope2.empty() )
        scope2 += scope_delimiter;

    return access + namesp + scope1 + scope2 + name;
}

int main(int argc, char **argv)
{
    std::string tagfile_name = tagfile_find();
    if( tagfile_name.empty() ) {
        std::cerr << "tag file not found" << std::endl;
        return -1;
    }

    std::vector<std::string> tags;
    path basepath = path(tagfile_name).parent_path();

    int options = 0;
    for(int i=1; i<argc; ++i)
    {
        if( '-' == argv[i][0] ) {
            if( 0 == strcmp(argv[i]+1, "i") ) {
                options |= TAG_IGNORECASE;
            } else
            if( 0 == strcmp(argv[i]+1, "p") ) {
                options |= TAG_PARTIALMATCH;
            }
        } else
            tags.push_back(argv[i]);
    }

    if( !tags.size() )
        return 0;

    tagFileInfo info;
    tagFile *const file = tagsOpen (tagfile_name.c_str(), &info);
    if( !file )    {
        std::cerr << "cannot open tag file " << tagfile_name << std::endl;
        return -1;
    }

    for(int i=0; i<tags.size(); ++i) {
        tagEntry entry;
        if( TagSuccess != tagsFind(file, &entry, tags[i].c_str(), options))
            continue;
        do {
            std::string fname = fs::system_complete(basepath / entry.file).file_string();

            std::cout
                << fname << ':' << entry.address.lineNumber << ':' << ' ' << entry.kind
                    << ' ' << build_name(entry) << std::endl
                << '\t' << entry.address.pattern << std::endl;
            if( entry.fields.count )
                std::cout << '\t';
            for(int f=0;  f < entry.fields.count;  ++f) {
                std::cout
                    << entry.fields.list[f].key << '=' << entry.fields.list[f].value
                    << (f < entry.fields.count-1 ? ';' : '\n');
            }

        } while(TagSuccess == tagsFindNext(file, &entry));
    }
}

#include "../3rdparty/ctags-5.8/readtags.c"
__________
16.There is no cause so right that one cannot find a fool following it.
Re[13]: Нормальный редактор для C++ - существует ли?
От: PSV100  
Дата: 14.03.12 06:59
Оценка:
PSV>Здравствуйте, Kswapd, Вы писали:

K>>Но вот отсутствие в Eclipse возможности задать простой клавиатурный макрос — очень удивило.


Дополню юмор.

В Эклипсе для макросов могут ещё ввести какой-нибудь визард с десяток и более страниц, причём возможно обязательный, который на самом деле выплюнет тебе заготовки для кучи файлов. При этом опять будет заявлено об "интеллектуальности" эклипса: мы обеспечим в этих файлах и умный автокомплит, и ошибки по ходу дела будем светить вместе с рекомендациями и т.д.

В других IDE ситуация не на много лучше. Общая тормознутость и прожорливость системы, неудобство среды в плане и пользовательского интерфейса, и в принципах управления средой (на фоне вима/эмакса) — напрочь отбивают желание что-то "совершенствовать".

И вопросик по делу.

Я пользовался плагином KeySnail для firefox — некий вимператор в стиле эмакса (кстати весьма рекомендую как эмаксоводу). Он может коннектиться к эмаксу из фокса для правки текста. Здесь на форуме вспомнился eclim. Я его руками не щупал, но похоже такие техники взаимодействия имеют рациональные зерна. Я как-то пытался найти нечто похожее для JEdit (он тоже может работать в режимах клиент/сервер как эмакс), но ничего не нашёл, что не удивительно. А для эмакса какой-нибудь "eclim" попадался на глаза?
Re[8]: Нормальный редактор для C++ - существует ли?
От: SleepyDrago Украина  
Дата: 14.03.12 09:00
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Здравствуйте, SleepyDrago, Вы писали:


...
SD>>Можно вопрос что именно вы делаете с С++ что у вас обычная VS без помидоров тормозит?

_>Эммм, а где я писал что VS тормозит? Как раз VS никогда у меня не тормозила, в том числе и вместе с VA. Меня не удовлетворяет функциональность их парсера/редактора. Т.е. даже VS+VA слабее чем редактор Нетбинса.


...
_>А мне для начал надо что бы Boost мог прожеваться. )))

Это уже интересно А расскажите-ка пожалуйста простым пользователям VS чего у них нет. Так сказать на личных примерах.
Re[8]: Нормальный редактор для C++ - существует ли?
От: PSV100  
Дата: 14.03.12 09:13
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Эммм, а где я писал что VS тормозит? Как раз VS никогда у меня не тормозила, в том числе и вместе с VA. Меня не удовлетворяет функциональность их парсера/редактора. Т.е. даже VS+VA слабее чем редактор Нетбинса.


Я в С++ не супер-спец, но у меня давно сложился стереотип, который пока не опровергнут — в плане именно IDE для С++ лучше студии пока ничего нет, особенно если смотреть комплексно. Ну, может, про SlickEdit слухи давно ходили, но я его в глаза никогда не видел, не было потребностей.

Имхо, когда в майкросовский компилятор подтянут все фичи последнего стандарта (и это не за горами, ибо в свете последних тенденций майкрософт похоже опять налягает на нативный код), то студия не обосрамится, а за ней и помидоры подтянутся.
Re: Нормальный редактор для C++ - существует ли?
От: PSV100  
Дата: 14.03.12 10:16
Оценка:
Кстати, почему то про IDEA не вспомнили, у них тоже какой-то плагин есть.
Re[4]: Нормальный редактор для C++ - существует ли?
От: monax  
Дата: 14.03.12 10:52
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Плюсы он разбирает на порядок лучше эклипса. Твое пожелание разбора плюсов совсем уж просто редакторы из списка альтернатив исключает.

KP>А так, я бы взял Vim+Cscope и не парился, но тебя же такой вариант врятли устроит.

Какие преимущества даёт Cscope перед ctags?
Re[5]: Нормальный редактор для C++ - существует ли?
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 14.03.12 11:34
Оценка:
Здравствуйте, monax, Вы писали:

M>Какие преимущества даёт Cscope перед ctags?


Если отбросить чисто субъективное ощущение что лучше парсит, очень нравятся встроенные возможности навигации по коду (поиск использвоания, кто вызвал и т.д.).
Re[5]: Нормальный редактор для C++ - существует ли?
От: PSV100  
Дата: 14.03.12 11:46
Оценка:
Здравствуйте, monax, Вы писали:

M>Какие преимущества даёт Cscope перед ctags?


Насколько я понимаю, ключевое отличие Cscope, как и GNU GLOBAL, от ctags это то, что кроме базы идентификаторов они дают инфу по зависимостям: кто кого вызывает. Но С++ они парсят хуже, чем ctags.
Re[11]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 14.03.12 18:31
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>К сожалению, на проекте размером в 2 гига, он встал в нехорошую позу


Ого, 2 гига только исходников? Я с такими не работал. ) В моём понимание уже за 100 мегов исходников — это большой проект. А 2 гига... Интересно, что за проект такой...

_>>SlickEdit я проверял — он парсит некорректно. Наверное тоже ctags внутри или что-то такое.

KP>Там своя парсилка, отлично работающая. Ну и 2 гига он в состоянии распарсить и потом по ним обеспечить навигацию без особых проблем. Кстати, а что ты там за ошибку парсинга нашел? Я им лет 5 назад активно пользовался и он все отлично парсил.

Я сейчас уже точно не помню, но что-то с шаблонами и макросами некорректное было. Т.е. он не смог правильно понять код (причём не какой-то мой особо извращённый, а из библиотеки известной).
Re[5]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 14.03.12 18:35
Оценка:
Здравствуйте, 0xDEADBEEF, Вы писали:

DEA>Я поступил просто. Написал мелкую-мелкую утилитку, которая делает следующее:

DEA>...

Офигеть. )))
Re[9]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 14.03.12 18:41
Оценка:
Здравствуйте, SleepyDrago, Вы писали:

SD>Это уже интересно А расскажите-ка пожалуйста простым пользователям VS чего у них нет. Так сказать на личных примерах.


Нууу тут можно много говорить. Для начала хотя бы зайдите в настройки подсветки синтаксиса C++ в VS, Эклипсе и Нетбинсе. И сравните количество сущностей, которым можно назначить разные цвета. Это так сказать простейший пример из самого базового. А дальше там уже много можно говорить про навиагацию, форматирование, автодополнение, рефакторинг...
Re[9]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 14.03.12 18:49
Оценка:
Здравствуйте, PSV100, Вы писали:

PSV>Я в С++ не супер-спец, но у меня давно сложился стереотип, который пока не опровергнут — в плане именно IDE для С++ лучше студии пока ничего нет, особенно если смотреть комплексно. Ну, может, про SlickEdit слухи давно ходили, но я его в глаза никогда не видел, не было потребностей.


Мммм ну как IDE пожалуй так есть, если рассматривать весь комплекс функций и в интеграции между собой. Но это выходит только если использовать во всём технологии MS. А если вы используете сторонние системы сборки, контроля версии, командной работы, отладчики, редакторы GUI и т.п., то от VS остаётся по сути только редактор кода, а вот как раз он уступает и Эклипсу и Нетбинсу.

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


А вот компилятор мы используем как раз от MS (из WSDK) — он приятнее чем GCC во многом. Разве что модного for'a ещё нет.
Re[2]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 14.03.12 18:52
Оценка:
Здравствуйте, PSV100, Вы писали:

PSV>Кстати, почему то про IDEA не вспомнили, у них тоже какой-то плагин есть.


Мы пробовали. Всё же IDEA — для Java и это чувствуется. ))) Сейчас уже не помню в деталях почему его отбросили, но вердикт был такой: идеальная среда для Java, но для C++ не то совсем.
Re[3]: Нормальный редактор для C++ - существует ли?
От: yatagarasu Беларусь  
Дата: 14.03.12 22:27
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Здравствуйте, PSV100, Вы писали:


PSV>>Кстати, почему то про IDEA не вспомнили, у них тоже какой-то плагин есть.


_>Мы пробовали. Всё же IDEA — для Java и это чувствуется. ))) Сейчас уже не помню в деталях почему его отбросили, но вердикт был такой: идеальная среда для Java, но для C++ не то совсем.

да, да. "реальная история". вот у меняы появился проект на яве. я попробовал эклипс — лет десять назад юза его для явы. что-то зашкварилось там, попробовал нетбинс — он вообще не рабочий (на самом деле может и ок, но он шкварится на перезапусках томката), перешел на идею (и её я юзал лет десять назад). так вот новая идея — это шаг на 0. кроме модного иОС интерфейса я не нашел там ничего по сравнению с идей 7, или что там было десять лет назад. Не, правда, у меня был шок. она не умеет ничего (шок как у человека впервый раз севшего за вим). не удобно, нубу. а я то ждал одно кнопки которая зарефакторит весь код. и сделает всё как я хочу. наивно, да. но именно этого я ожидал, при таких то возможностях.
что до с++ — мне нужен просто редактор, привычный, как фар с колорером. но ещё и сбилдом и с подсветкой ошибок. и чтобы не мешал.
поэтому пока студия. (лень мне пилить cmake под свой проект). пока студия. можно жить.

только расскажите мне как отключить подстановку совсем левых подсказок интеллисенса.
не приятно кода ты пишишь o.d , а вылазит какой-нить дикий o.SOME_CRAZY_FUNCTION.
откуда она это берёт?

извените накипело.

а так хотелось бы редактор который прозрачно инлайнит инклюды, без табов и прочей. даже автодополнение не очень нужно. -=)

спасибо =)

зы. немного пьян )
ё
Re[10]: Нормальный редактор для C++ - существует ли?
От: SleepyDrago Украина  
Дата: 15.03.12 10:34
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Здравствуйте, SleepyDrago, Вы писали:


SD>>Это уже интересно А расскажите-ка пожалуйста простым пользователям VS чего у них нет. Так сказать на личных примерах.


_>Нууу тут можно много говорить. Для начала хотя бы зайдите в настройки подсветки синтаксиса C++ в VS, Эклипсе и Нетбинсе. И сравните количество сущностей, которым можно назначить разные цвета. Это так сказать простейший пример из самого базового. А дальше там уже много можно говорить про навиагацию, форматирование, автодополнение, рефакторинг...


Так форум для того и нужен Давайте подробнее про

>навигацию, форматирование, автодополнение, рефакторинг...
Re[4]: Нормальный редактор для C++ - существует ли?
От: PSV100  
Дата: 15.03.12 16:14
Оценка:
Здравствуйте, yatagarasu, Вы писали:

Y>что до с++ — мне нужен просто редактор, привычный, как фар с колорером. но ещё и сбилдом и с подсветкой ошибок. и чтобы не мешал.


Y>извените накипело.


Y>а так хотелось бы редактор который прозрачно инлайнит инклюды, без табов и прочей. даже автодополнение не очень нужно. -=)


Здесь гуру общего рецепта счастья не выдали, его нет, у каждого лишь свои мелкие радости.

А в целом, тема получилась результативной, во всяком случае, для меня. Я приятно удивлён Нетбинсом. Я раньше думал, что премьер-министр это Эклипс с его CDT после студии-президента. А оказывается и оппозиция вполне серьёзна.
Всё-таки не на пустом месте пару лет назад в кулуарах JEdit-а обсуждали возможность прикрутить парсер нетбинса. Правда были две проблемы: он основан на ANTLR, якобы с не очень эффективным кодом для разбора, и оторвать его от нетбинса очень тяжело, что, скорее всего, и поставило крест на задумке.

А так, проблему можно решать двумя путями. Первый — это упрощение процесса разработки. Пример на своей шкуре. У нас реализована своя наколенная скриптовая система, с элементарным алгоритмическим язычком по Lua-мотивам с небольшими элементами декларативных описаний. В системе всего лишь несколько десятков функций для "всех случаев", т.е. всё заточено под конкретную задачу. Для разработки нужен лишь блокнот, часто "разрабатывают" прикладную логику и конфигурируют систему те, кто к программированию имеет отделенное отношение, те же администраторы. Для "продвинутых" — хороший удобный редактор, в котором настроили синтаксический разбор с подсветкой и правилами фолдинга (заточенные для себя, а не только так, как реализовали разработчики IDE), а также другие параметры для отступов, выравниваний и прочего форматирования, и список функций добавлен для системы автокомплита — это всё, что нужно (ну ещё вызов внешних своих тулсов и обработка их результатов). Даже подсказка по параметрам функций особо не нужна — настраиваются свои "сниппеты" как в TextMate: набрал ss клацнул tab получил "subsrt(string, pos, count)", где три параметра выделены и сразу всё видно, курсор на первом, его ввел и клацнул tab — прилетел ко второму и т.д.
После такой "разработки" переключаться на C++, жабу и пр. весьма тошно. В геймдеве популярность Lua, Squirrel т.д. не на пустом месте возникла.

Жаль, что надеяться на упрощение самого языка в C++ — это фантастика, огромный и крайне взрывоопасный С++-шар хоть и медленно, но всё же раздувается и раздувается с новыми стандартами. Если бы гугловский Go заимел бы эффективный рантайм, полиморфизм на уровне типов (кроме парочки сегодняшних встроенных типов, но это вроде обещают), да добавить бы к нему мета-программирование в виде макро-функций, как это пытаются сейчас сделать в Скале, но на основе синтаксиса от MetaLua — то в некоторых моментах C++ подвинулся бы. И всё-равно в таком бы виде Go своих ближайших "конкурентов" — имеющийся D и новый мазиловский Rust — по простоте порвал бы вместе с Тузиком. При этом был бы не менее эффективным (если не более), и AST-пляски реализовать для него гараздо проще.

Но это всё мечты. А сложность языка — реальное западло. Ребят из JetBrains Скала задрала своей магией, даже они не могут реализовать нормальный разбор, особенно семантический. Не выдержали, решились даже на свой Kotlin.

И второй путь. Нужны "мозги" от теперешних IDE как отдельный продукт. Монстро-универсальность и мега-интеграция уже показали свои проблемности.
Взять самый элементарный пример, который первым в голову стукнул. Я в редакторе очень привык к такой штуке: нажал Ctrl-Enter — выполняется анализ текущей строки: если строка начинается со звёздочки или с "/*", "/**", как внутри JavaDoc — дублируем звёздочку на следующей строке, если с нумерации вида "1. ", "а) " и т.п. — увеличиваем номер для новой строки, и т.д., при этом соблюдаем форматирование, отступы и пр. Удобно, и не нужны 20 шоркатов. Или Ctrl-E Ctrl-Enter — дублируем строку, и если внутри есть нумерация, то инкрементируем: из строки вида "var1 = val1" получим новую "var2 = val2". Как реализовать такие удобняшки в Эклипсе? Ни разработчики JDT, ни разработчики CDT не позаботились. Искать сторонний плагин, который всё равно не покроет всех хотелок? Значит писать свой. Но вместо элементарного небольшого текстового файла, как для нормальных редакторов, мне нужно заниматься разработкой полноценного Java-проекта как плагина для Эклипс, долго вкуривая мутное монстро-API.
Это только элементарные вещи для текстового редактора, работа с альтернативными отладчиками, профайлерами, всякими анализаторами — отдельная мутная песня.

Ох если бы были доступны отдельно мозги от того же Нетбинса, оформленные самостоятельным проектом, даже пусть в виде готовых бинарников. Запустил какой-нибудь процесс, он постоянно и оперативно сам себе работает, как сервер эмакса, например. Хошь свой интерфейс для любимого редактора делай, хочешь через консоль работай и т.д.
Здравые идеи в этом направлении уже есть. Например, весит процесс/демон/служба fossil — как система контроля версий/багтрекалка/вики — коннектся себе, работай (правда пока только через консоль или броузер, но теоретически уже сейчас можно что-то наваять, кому нужно). Или в eclim-е пытаются мучать эклипс в таком стиле.

Имхо, вполне реально можно ожидать такой шаг от JetBrains. Работают там вполне грамотные люди, которые тоже "страдают", даже свой промышленный язык имеют возможности запилить. Имя они себе сделали, уже могут позволить маркетинговое стимулирование через бесплатные продукты, фактически зарабатывают только в интерпрайз-секторе. Если сделают "IDEA-Server", то, имхо, саму IDE он "не убьет", наоборот — лишняя мотивация, в том числе и коммерция здесь возможна.

Сорри за фактически офтоп, но у самого накипело по самые ...
Re[3]: Нормальный редактор для C++ - существует ли?
От: PSV100  
Дата: 15.03.12 16:41
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Здравствуйте, PSV100, Вы писали:


PSV>>Кстати, почему то про IDEA не вспомнили, у них тоже какой-то плагин есть.


_>Мы пробовали. Всё же IDEA — для Java и это чувствуется. ))) Сейчас уже не помню в деталях почему его отбросили, но вердикт был такой: идеальная среда для Java, но для C++ не то совсем.


Очень может быть. Похоже, что плагин пилят сторонние энтузиасты, и не рекламируют что-то его, как другие продукты.

А так, кроме того, что здесь разобрали, попадалось что-то на глаза, но как правило поверх ctags. Также вспоминается:

— FoxToolkit. У них был какой-то свой редактор, который поражал своей реактивностью, как в свое время блокнот Bred2 на винде. Но с русским языком никак не работал, и я не помню, было ли что-то там прикручено, или это просто блокнот с подсветкой (но вроде что-то было).

— Ultimate++. У них была какая-то IDE, типа наколенного QtCreator-а, со своей парсилкой. Но вроде они честно заявляли, что от макросов с шаблонами счастья не ждать. Но может сейчас что-то вдруг...
Re[11]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 16.03.12 03:30
Оценка:
Здравствуйте, SleepyDrago, Вы писали:

SD>Так форум для того и нужен Давайте подробнее про

>>навигацию, форматирование, автодополнение, рефакторинг...

Так зачем мне это? ) Я же процента с "продаж" Нетбинса не получаю. ))) Я свою оценку дал, а вы поставьте его себе и проверьте сами мои слова — самый лучший способ. )))

А вообще, если всё же попытаться кратко описать, то можно сказать что у всех трёх продуктов одинаковая функциональность, но с разной "глубиной" этой функциональности. Т.е. допустим класс вьюер в VS умеет показывать N сущностей, а в Netbeans'е N+5. Тоже самое с настройками автоформатирования, автодополнением, функциями рефакторинга и т.п.

Если вот зададите конкретный узкий вопрос, то можно будет не полениться, открыть эти среды рядом и ответить. А в общем виде это тянет на большую статью с огромной табличкой, которую мне писать мягко говоря лень. )))
Re[5]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 16.03.12 03:46
Оценка:
Здравствуйте, PSV100, Вы писали:

PSV>А так, проблему можно решать двумя путями. Первый — это упрощение процесса разработки. Пример на своей шкуре. У нас реализована своя наколенная скриптовая система, с элементарным алгоритмическим язычком по Lua-мотивам с небольшими элементами декларативных описаний. В системе всего лишь несколько десятков функций для "всех случаев", т.е. всё заточено под конкретную задачу. Для разработки нужен лишь блокнот, часто "разрабатывают" прикладную логику и конфигурируют систему те, кто к программированию имеет отделенное отношение, те же администраторы. Для "продвинутых" — хороший удобный редактор, в котором настроили синтаксический разбор с подсветкой и правилами фолдинга (заточенные для себя, а не только так, как реализовали разработчики IDE), а также другие параметры для отступов, выравниваний и прочего форматирования, и список функций добавлен для системы автокомплита — это всё, что нужно (ну ещё вызов внешних своих тулсов и обработка их результатов). Даже подсказка по параметрам функций особо не нужна — настраиваются свои "сниппеты" как в TextMate: набрал ss клацнул tab получил "subsrt(string, pos, count)", где три параметра выделены и сразу всё видно, курсор на первом, его ввел и клацнул tab — прилетел ко второму и т.д.

PSV>После такой "разработки" переключаться на C++, жабу и пр. весьма тошно. В геймдеве популярность Lua, Squirrel т.д. не на пустом месте возникла.

Мне всё же не нравятся языки без статической типизации для сложных задач. Вот для очень коротеньких скриптов — это да, полезно. ) И тут мой выбор за Питоном. Хотя для встраивания Lua вроде попроще говорят.


PSV>Жаль, что надеяться на упрощение самого языка в C++ — это фантастика, огромный и крайне взрывоопасный С++-шар хоть и медленно, но всё же раздувается и раздувается с новыми стандартами. Если бы гугловский Go заимел бы эффективный рантайм, полиморфизм на уровне типов (кроме парочки сегодняшних встроенных типов, но это вроде обещают), да добавить бы к нему мета-программирование в виде макро-функций, как это пытаются сейчас сделать в Скале, но на основе синтаксиса от MetaLua — то в некоторых моментах C++ подвинулся бы. И всё-равно в таком бы виде Go своих ближайших "конкурентов" — имеющийся D и новый мазиловский Rust — по простоте порвал бы вместе с Тузиком. При этом был бы не менее эффективным (если не более), и AST-пляски реализовать для него гараздо проще.


Я бы уже сейчас перешёл на D, если бы вокруг него существовала необходимая инфраструктура. Ну или если бы они хотя бы сумели наладить какой-то вид линковки C++ (для C у них есть) библиотек.

А Go и Rust — странные какие-то. )))

PSV>И второй путь. Нужны "мозги" от теперешних IDE как отдельный продукт. Монстро-универсальность и мега-интеграция уже показали свои проблемности.

PSV>Взять самый элементарный пример, который первым в голову стукнул. Я в редакторе очень привык к такой штуке: нажал Ctrl-Enter — выполняется анализ текущей строки: если строка начинается со звёздочки или с "/*", "/**", как внутри JavaDoc — дублируем звёздочку на следующей строке, если с нумерации вида "1. ", "а) " и т.п. — увеличиваем номер для новой строки, и т.д., при этом соблюдаем форматирование, отступы и пр. Удобно, и не нужны 20 шоркатов. Или Ctrl-E Ctrl-Enter — дублируем строку, и если внутри есть нумерация, то инкрементируем: из строки вида "var1 = val1" получим новую "var2 = val2". Как реализовать такие удобняшки в Эклипсе? Ни разработчики JDT, ни разработчики CDT не позаботились. Искать сторонний плагин, который всё равно не покроет всех хотелок? Значит писать свой. Но вместо элементарного небольшого текстового файла, как для нормальных редакторов, мне нужно заниматься разработкой полноценного Java-проекта как плагина для Эклипс, долго вкуривая мутное монстро-API.
PSV>Это только элементарные вещи для текстового редактора, работа с альтернативными отладчиками, профайлерами, всякими анализаторами — отдельная мутная песня.

Кстати, Visual Assist же по идее живёт сам по себе... Правда интерфейс он предоставлят только для Visual Studio...
Re[12]: Нормальный редактор для C++ - существует ли?
От: SleepyDrago Украина  
Дата: 16.03.12 09:47
Оценка:
Здравствуйте, alex_public, Вы писали:

...
_>Если вот зададите конкретный узкий вопрос, то можно будет не полениться, открыть эти среды рядом и ответить. А в общем виде это тянет на большую статью с огромной табличкой, которую мне писать мягко говоря лень. )))

в последний раз когда я его ставил (это было давненько) оно просто умерло. Не надо мне огромных статей и табличек — мне нужен пример который лично тебя заставил решиться на смену. 1-2 скриншота это вопрос пары секунд. Всегда можно проиллюстрировать не на секретном коде, просто открой буст какой-нибудь и обведи на картинке.
Re[6]: Нормальный редактор для C++ - существует ли?
От: PSV100  
Дата: 16.03.12 10:50
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Мне всё же не нравятся языки без статической типизации для сложных задач. Вот для очень коротеньких скриптов — это да, полезно. ) И тут мой выбор за Питоном. Хотя для встраивания Lua вроде попроще говорят.


Мне тоже кажется, что Lua попроще для внедрения, особенно Lua-Jit с его FFI, и в целом приятная штука.

Я в своей практике скриптинг использовал для решения как раз локализованных задач (ну кроме всяких вспомогательных, шелл-скриптов и пр., а также довелось и с фокспро/клиппер-ом повозиться, не говоря об SQL). Причём это разработка иного плана, чем, например, возня в Питоне/Руби для каких-нибудь Джанго/Рельс, т.е. всё максимально заточено конкретно под свои потребности, когда есть такая возможность — невозможно это счастье описать словами. Я лишь хотел подчеркнуть момент о лёгкости в разработке.

А так да, в динамике/статике есть свои плюсы/минусы, и холивары по этому поводу бесконечны. Но я уже глубоко убедился в том, что во всех лагерях полно своих мифов: и жаба не дает счастья, несмотря на все чудеса от IDE, и в скриптинге вполне реально можно писать надёжные программы, которые случайно не будут складывать слонов с попугаями. И вполне реально можно опровергнуть миф, что на динамике легко разработать, а сопровождать тяжело. На Эрланге имеют вполне достаточно крупные системы, и вводить статику там вроде не собираются.

_>Я бы уже сейчас перешёл на D, если бы вокруг него существовала необходимая инфраструктура. Ну или если бы они хотя бы сумели наладить какой-то вид линковки C++ (для C у них есть) библиотек.


_>А Go и Rust — странные какие-то. )))


Мне кажется, что сырость D не закончится никогда. Это какой-то полигон для fun-отдушины для всяких товарищей а-ля Александреску, промышленной платформы не будет. И D, и Rust — по навороченности от C++ не далеко отстали, а в Rust-е похоже хотят и С++ переплюнуть (но в нём чувствуются здравые мысли). А меня, как человека, нюхнувшего пороха в разных лагерях: "промышленнизм/ынтерпрайз" и "лёгкость/простота" — к таким простым и эффективным решениям как Go — теперь уже как магнитом тянет (но ему всё-таки не хватает ряда вещей, кроме того, о чём я писал раньше, ему бы какой-нибудь паттерн-матчинг, уникальные типы или уникальные указатели и пр.).

_>Кстати, Visual Assist же по идее живёт сам по себе... Правда интерфейс он предоставлят только для Visual Studio...


Мне кажется, что он без студии жить не сможет, иначе был бы давно прикручен в виме/эмаксе. Нужны вполне самостоятельные "мозги", причём удобно расширяемые, в идеале с каким-нибудь "стандартом" в API. Скорее всего, кто будет пионером, тот и задаст стандарт, как протокол memcached.

Кстати, я давненько читал какую-то статью одного чудака. Он интересно эмакс гонял вместе со студией: основная работа была в эмаксе, по клавише запускал скрипт, который переключался на окно студии, посылал виндовские сообщения (как я понял, эмулировал нажатия клавиш), чтобы студия переключилась на нужный файл, перекинула курсор и выплюнула автокомплит, вводилось что нужно и возвращаемся в эмакс. Причём это его долго устраивало, пока не перешёл на новую студию, которая стала тормозить: долго втыкала, что файл изменен внешне.

Вот такая наркота эти эмаксы
Re[6]: Нормальный редактор для C++ - существует ли?
От: PSV100  
Дата: 16.03.12 12:39
Оценка:
Здравствуйте, alex_public, Вы писали:

_>[...]


И у меня по ходу дела небольшой вопросик. А как вы у себя уживаетесь с интерфейсом Нетбинса?

Речь не об управлении средой (хотя, честное слово, после вима/эмакса/JEdit/Sublime любая IDE не удобна), а о шрифтах. Нетбинс, как и JEdit, живёт поверх жабского свинга, где в отличие от Эклипса с SWT, своя прорисовка шрифтов вместо системного рендеринга. И это реальная проблема, особенно под линухом, а в новом JavaFX со щрифтами вообще жопа. Многие забивают на это дело, ибо глубокая настройка монстро-IDE — это ещё то удовольствие (как минимум с цветами).
На винде это не так ощутимо, но я заметил, что при долгой работе в JEdit-е глаза ощутимо устают, больше чем в других редакторах. Я провёл реальное "расследование" — сравнивал увеличенные картинки прорисовки символов: есть небольшая разница в сглаживании и это корень зла. В результате, линии символов/букв рисуются несколько толще, насыщеннее, и в целом картинка получается более резкая, не такая мягкая, как в других редакторах. Это едва заметно на винде, на темном фоне разница ощутима больше. Кроме того, в свинге своё понятие высоты текста. У меня текст выводится несколько мелковато, причём согласно "замерам" по пикселям высота такая же, как в других редакторах, но из-за кривого сглаживания воспринимается как-то мельче. А следующий шаг в размере сразу даёт слишком большое увеличение, с ещё большими дефектами. И это всё проявляется на разных машинах с разным железом/мониторами.

Могу поделиться своими рецептами.

Лучшим шрифтом оказался Consolas, со всеми остальными есть всегда какие-то дефекты (перепробовалось куча всякого), причём в других редакторах часто этих дефектов нет. В JEdit-е есть всякие настройки для рендеринга текста, реально полезная штука — настройка межстрочного интервала. Можно добавить 1-2 пикселя между строками, и картинка реально лучше. В Нетбинсе я такого не увидел (раньше).

Альтернативная цветовая схема реально облегчает жизнь, я перепробовал дохрена вариантов, вроде получилось уменьшить кривизну.
Очень хороший вариант для светлой темы: Solarized, популярный проект, наверное есть готовый порт и для Нетбинса. С ней лучше работать и вечером, чем с белым фоном. Также там есть и неплохая тёмная тема, но для меня оказалась несколько темноватой, нужно добавлять яркости в мониторе, но для меня это неприемлемо.
Для тёмной темы неплохой вариант: Bespin для TextMate. Есть тема с таким названием для NotePad++ — не то пальто.
Но в JEdit-е с ней не так приятно работать, как в других редакторах. Лучшим оказалась тема для вима: Atom, нейтральные приятные цвета, хорошо различимы, без всякой "ядовитости". При этом хорошо уживается рядом со светлым окружением, а также вполне нормально можно работать и днём, если нет яркого солнца в помещении. Эта тема поможет избавиться от гемороя в переключении со светлого на тёмное, чем страдают все IDE.

Также рекомендую такой Look-and-Feel: NimROD, его вроде можно подключить в Нетбинсе. На фоне альтернатив он поприятнее, в нём легко можно настроить цвета в тон цветовой схемы для текста, например, можно избавиться от светлых панелей вокруг темной области с текстом.

Со свингом уже боролись, и каким образом, или пока забили ?
Re: Нормальный редактор для C++ - существует ли?
От: Kefir http://www.hippoedit.com
Дата: 16.03.12 17:35
Оценка:
Здравствуйте, alex_public, Вы писали:

прошу прощения за толику рекламы, но посмотрите HippoEDIT — это не IDE, больше быстрый редактор для программиста, но некоторые приятние функции есть:
— настраиваемая расскраска
— темплейты кода
— подсказки (CodeHints)
— поиск по chm
— хорошая интеграция внешних инструментов
— поддержка бинарных и скриптовых плагинов

и что не маловажно
— для ехUSSR бесплатен
— я помогу если че надо

Смотреть лучше бету 1.50:
http://forum.hippoedit.com/beta-version-test/alpha-1-50/

П.С: Ухожу в отпуск, так что отвечу если что через неделю
Re[13]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 17.03.12 13:44
Оценка:
Здравствуйте, SleepyDrago, Вы писали:

SD>в последний раз когда я его ставил (это было давненько) оно просто умерло. Не надо мне огромных статей и табличек — мне нужен пример который лично тебя заставил решиться на смену. 1-2 скриншота это вопрос пары секунд. Всегда можно проиллюстрировать не на секретном коде, просто открой буст какой-нибудь и обведи на картинке.


Не, так не выйдет. Я же говорю, там не одна мегафича из-за которой перешли, а 100 мелких улучшений у каждой известной фичи. Это надо или писать длинную детальную статью или лучше вообще ничего.

Вообще советую просто поставить и попробовать. Причём первым делом после установки зайти в настройки редактора — сразу многое станет ясно. )))
Re[7]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 17.03.12 13:52
Оценка:
Здравствуйте, PSV100, Вы писали:

PSV>Мне кажется, что сырость D не закончится никогда. Это какой-то полигон для fun-отдушины для всяких товарищей а-ля Александреску, промышленной платформы не будет. И D, и Rust — по навороченности от C++ не далеко отстали, а в Rust-е похоже хотят и С++ переплюнуть (но в нём чувствуются здравые мысли).


Мне кажется им многое подпортил C++11. Он дал довольно много вкусностей из набора D, оставим при этом всю мегаинфраструктуру старого C/C++.

PSV>А меня, как человека, нюхнувшего пороха в разных лагерях: "промышленнизм/ынтерпрайз" и "лёгкость/простота" — к таким простым и эффективным решениям как Go — теперь уже как магнитом тянет (но ему всё-таки не хватает ряда вещей, кроме того, о чём я писал раньше, ему бы какой-нибудь паттерн-матчинг, уникальные типы или

уникальные указатели и пр.).

Ммм, Оберон?

PSV>Мне кажется, что он без студии жить не сможет, иначе был бы давно прикручен в виме/эмаксе. Нужны вполне самостоятельные "мозги", причём удобно расширяемые, в идеале с каким-нибудь "стандартом" в API. Скорее всего, кто будет пионером, тот и задаст стандарт, как протокол memcached.


Я сомневаюсь что использует VA использует VS для какой-то функциональности. Но без неё действительно не живёт — скорее всего бизнес-решение такое... )

PSV>Кстати, я давненько читал какую-то статью одного чудака. Он интересно эмакс гонял вместе со студией: основная работа была в эмаксе, по клавише запускал скрипт, который переключался на окно студии, посылал виндовские сообщения (как я понял, эмулировал нажатия клавиш), чтобы студия переключилась на нужный файл, перекинула курсор и выплюнула автокомплит, вводилось что нужно и возвращаемся в эмакс. Причём это его долго устраивало, пока не перешёл на новую студию, которая стала тормозить: долго втыкала, что файл изменен внешне.


Re[7]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 17.03.12 14:19
Оценка:
Здравствуйте, PSV100, Вы писали:

PSV>И у меня по ходу дела небольшой вопросик. А как вы у себя уживаетесь с интерфейсом Нетбинса?


Эээ, вы про всякие контролы (кнопки, тулбары, менюшки, диалоги) или про основное окно редактора?

Если про всякие контролы, то не знаю. Я там ничего не трогал. Выглядит оно конечно не особо, но я туда и не смотрю обычно. В общем тут как-то вообще вопрос не вставал.

Что касается основного окна редактора, то тут настроен свой шрифт и свои цветовые схемы (которые под язык уже соответственно). Правда настроены они не из-за каких-то проблем, а просто потому что дефолтный шрифт мне был чуть маловат, а цветовая настройка вообще другая нужна. Ну и тут я как бы никаких проблем с отображением не вижу. Но т.к. эти настройки были сделаны сразу же, то возможно я просто не успел увидеть какие-то баги с дефолтными настройками.

Да, работаю с Нетбинсом в основном из Windows, с настроенным ClearType, на большом качественном мониторе...
Re[8]: Нормальный редактор для C++ - существует ли?
От: PSV100  
Дата: 17.03.12 21:57
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Эээ, вы про всякие контролы (кнопки, тулбары, менюшки, диалоги) или про основное окно редактора?


Про сам текстовый редактор, основная область вывода текста. Возможно и в интерфейсных контролах тоже не всё ахти, но там небольшой шрифт и как-то назаметно. И проблему я не сразу ощутил. В общем, нормальный шрифт и менее контрастная цветовая схема в свинге крайне полезны, особенно в линухе. В инете не мало инфы про кривости свинга.

_>Если про всякие контролы, то не знаю. Я там ничего не трогал. Выглядит оно конечно не особо, но я туда и не смотрю обычно. В общем тут как-то вообще вопрос не вставал.


Я обычно отключаю всё лишнее, всякие консоли и спец-окна появляются по требованию. И весь интерфейс редактора раскрашиваю в тона цветовой схемы текста, обычно работаю в полноэкранном режиме — приятно, прям как вим/эмакс.

_>Да, работаю с Нетбинсом в основном из Windows, с настроенным ClearType, на большом качественном мониторе...


Свинг, похоже, настройки винды игнорирует, включая подгонку ClearType. Возможно включение ClearType в винде заставляет Нетбинс включить у себя свое сглаживание. В JEdit-е всё настраивается независимо от настроек винды.
Re[2]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 18.03.12 00:50
Оценка:
Здравствуйте, Kefir, Вы писали:

K>прошу прощения за толику рекламы, но посмотрите HippoEDIT — это не IDE, больше быстрый редактор для программиста, но некоторые приятние функции есть:


Я посмотрел. Очень интересный редактор. Т.е. это конечно всё равно не то что обсуждалось в этой темке (синтаксический анализ проекта он не делает), но всё равно крайне интересный.

Сам редактор видимо из класса Notepad++, Sublime, jedit. По скорости чуть уступает Notepad++ (хотя тут по сути все быстры), но по возможностям заметно превосходит. Особенно порадовала панель навигации по файлу наверху. Я такое видел только у полноценных IDE. Просто супер. И функция аналог "перейти к определению" из IDE тоже работает замечательно, насколько возможно при навигации по одиночному файлу.

В общем это пожалуй самый лучший редактор одиночного файла, что я видел. Думаю перейти на него с Notepad++, который служил мне для этого раньше. Для больших проектов конечно не хватает навигации по всему коду и библиотекам, а для всего остального выглядит отлично.

Хотя возможно я ещё спешу и не успел разглядеть каких-то важные плюсов или минусов.

K>- настраиваемая расскраска


Ага, все нужные сущности есть.

K>- поиск по chm


Отлично работает. Жаль только нельзя назначить один шорткат на несколько файлов. И что бы оно открывало при этом только один, где есть нужная информация. У Зеуса так работало. )

K>— хорошая интеграция внешних инструментов


Действительно удобно сделано. Хотя для того что бы быть "совсем как ide" надо бы ещё что-то типа конфигураций настраиваемых (ну типа Release, Debug и т.п.) завести.

K>и что не маловажно

K>- для ехUSSR бесплатен

Это здорово. Кстати, а почему тогда нет русской локализации? )))
Re: Нормальный редактор для C++ - существует ли?
От: pzhy  
Дата: 21.03.12 17:48
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Практически уверен что получу отрицательный ответ (т.к. если бы существовал положительный, то скорее всего я бы про него уже давно знал), но всё же потрачу время на написание... А вдруг?

...
_>И всё. ) Вот интересно, существует ли что-то подобное в природе? Только подразумевается что это что-то, что можно скачать и просто использовать, а не хрень, которую ещё полгода затачивать.

KDevelop. Только это IDE, и я неуверен, что его можно собрать под windows. Парсер жрет все.
Re[3]: Нормальный редактор для C++ - существует ли?
От: Kefir http://www.hippoedit.com
Дата: 23.03.12 23:38
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Т.е. это конечно всё равно не то что обсуждалось в этой темке (синтаксический анализ проекта он не делает), но всё равно крайне интересный.

Ну это да. HippoEDIT и не задумывался как замена полновесному IDE — здесь очень сложно конкурировать с специализированным решением (тем более если решение уже есть давно на рынке). Это больше — универсальный редактор и просмотрщик кода. Если надо что то небольшое подправить, или какие скрипты написать. Хотя с 1.50 можно писать уже полноценные плагины, и специализировать под какой-то определенный язык программирования. Например, я сообираюсь добавить auto-completion плагин базированный на ctags — работы в принципе не много и охват языков сразу большой. Но опять же это не конкуренция с IDE.

_>Сам редактор видимо из класса Notepad++, Sublime, jedit. По скорости чуть уступает Notepad++ (хотя тут по сути все быстры), но по возможностям заметно превосходит. Особенно порадовала панель навигации по файлу наверху. Я такое видел только у полноценных IDE. Просто супер.

Это Navigation Bar, по аналогии с решением от Visual Assist, базированый на поиске меток в документе, описанных регулярными выражениями.
Еще там есть Hierarchy Bar (текущая стек областей видимости, не сильно полезно в с++ но больше для синтаксисов типа HTML) и
Overview Bar — есть пока только в Resharper, насколько я знаю. Minimap из Sublime это не то.

_>И функция аналог "перейти к определению" из IDE тоже работает замечательно, насколько возможно при навигации по одиночному файлу.

Да, это наверное Smart Navigate -> Alt+G (или Open Opposite?). Она много что умеет и зависит о контекста где вызвана.

_>В общем это пожалуй самый лучший редактор одиночного файла, что я видел. Думаю перейти на него с Notepad++, который служил мне для этого раньше. Для больших проектов конечно не хватает навигации по всему коду и библиотекам, а для всего остального выглядит отлично.

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

_>Хотя возможно я ещё спешу и не успел разглядеть каких-то важные плюсов или минусов.

Про минусы пишите.

K>>- поиск по chm

_>Отлично работает. Жаль только нельзя назначить один шорткат на несколько файлов. И что бы оно открывало при этом только один, где есть нужная информация. У Зеуса так работало. )
Да, это интересная идея. Уже добавил, будет в обновленной 1.50 бете. Можно будет указать несколько файлов в одно поле, разделенных || (C:\a.chm || C:\b.chm) и будет проверять по порядку.

K>>— хорошая интеграция внешних инструментов

_>Действительно удобно сделано. Хотя для того что бы быть "совсем как ide" надо бы ещё что-то типа конфигураций настраиваемых (ну типа Release, Debug и т.п.) завести.
Да можно, хотя какой то общий концепт пока не ясен. В принципе этого функционала можно добиться уже сейчас.
HippoEDIT поддерживает как инструменты привязанные к синтаксису так и инструменты вложенные в проект (в той же мере что и синтакс зависимые). Шоткаты из проекта перекрывают шоткаты языка. Так что можно сделать разные проекты для разных конфигураций.
Так же (с 1.50) можно задавать пользовательские переменные (global, workspace или project) и использовать их как параметры инструментов.
Можно написать простой скрипт плагин, который добавляет меню для переключения Tools или просто перехватывает команды.

K>>и что не маловажно

K>>- для ехUSSR бесплатен

_>Это здорово. Кстати, а почему тогда нет русской локализации? )))

Ну справедливости ради, нет никакой локализации, а не только русской . Сделать нормальную локализацию, это тоже время. А выхлоп меньше чем от добавления какой то новой функциональной фичи. Это ж таки shareware, хоть и бесплатная для exUSSR.
Плюс, редактор то для программистов, и все термины из интерфейса в принципе должны быть понятны.
Re[4]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 24.03.12 13:24
Оценка:
Здравствуйте, Kefir, Вы писали:

K>Ну это да. HippoEDIT и не задумывался как замена полновесному IDE — здесь очень сложно конкурировать с специализированным решением (тем более если решение уже есть давно на рынке). Это больше — универсальный редактор и просмотрщик кода. Если надо что то небольшое подправить, или какие скрипты написать.


Ага, именно для этих целей у меня Notepad++. Наверное сейчас заменю его на ваш продукт. )

K>Хотя с 1.50 можно писать уже полноценные плагины, и специализировать под какой-то определенный язык программирования.


Не очень представляю что тут может быть ещё добавлено не превращаясь в IDE. Но интересно. Хотя... Интеграция с популярными системами контроля версий возможно была бы интересной.

K>Например, я сообираюсь добавить auto-completion плагин базированный на ctags — работы в принципе не много и охват языков сразу большой. Но опять же это не конкуренция с IDE.


Хех, как раз в этой темке обсудили что ctags не справляется с полноценным C++...

K>Ну, как я писал, я могу помочь с интеграцией ctags или чего-то похожего, а полноценную поддержку мне не осилить

K>Хотя специализированные парсеры конечно писать проще чем общие..

Ну кстати с обработкой одиночного файла у вас же не плохо справляется. Пока единственный минус (по сравнению с монстрами делающими полный анализ) при подсветке по файлу, это то что нельзя настроить что бы делало серым неактивные (в данном контексте) области #ifdef/#else.

С навигацией тоже всё хорошо. Вот с автодополнением конечно всё хуже. )))

Так что в принципе, если попробовать своими силами, достаточно отработать полностью препроцессор (который не особо сложный) и далее на полученный мегабайтный исходник ваш текущий анализатор — для начала уже не плохо будет. Но это конечно тоже не просто и уже путь к полноценной IDE...

K>Про минусы пишите.


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

K>Да, это интересная идея. Уже добавил, будет в обновленной 1.50 бете. Можно будет указать несколько файлов в одно поле, разделенных || (C:\a.chm || C:\b.chm) и будет проверять по порядку.


Ооо, супер. С такими фичами можно даже частично забывать про автокомплит.

У меня есть chm по всем нашим библиотекам, по c++ библиотеке и по OS API. И по самому проекту генерится с помощью doxygen.

Кстати, возможно стоило бы как-то автоматизировать интеграцию с ним? ) Т.е. такой замкнутый цикл. Ставим в настройках проекта галочку "генерировать документацию". И оно автоматом создаёт с помощью doxygen chm файл по проекту и добавляет его в хелп текущий?

Хотя это наверное перебор уже. )))

K>Да можно, хотя какой то общий концепт пока не ясен. В принципе этого функционала можно добиться уже сейчас.

K>HippoEDIT поддерживает как инструменты привязанные к синтаксису так и инструменты вложенные в проект (в той же мере что и синтакс зависимые). Шоткаты из проекта перекрывают шоткаты языка. Так что можно сделать разные проекты для разных конфигураций.
K>Так же (с 1.50) можно задавать пользовательские переменные (global, workspace или project) и использовать их как параметры инструментов.
K>Можно написать простой скрипт плагин, который добавляет меню для переключения Tools или просто перехватывает команды.

Оо, инструменты на проект. Я как-то не заметил. Тогда в принципе ничего не надо добавлять. Единственно что хотелось бы в тулабре Tools выпадающий список, а не набор кнопок. А то у нас тут бывает по 10 конфигов разных на проект... )

K>Ну справедливости ради, нет никакой локализации, а не только русской . Сделать нормальную локализацию, это тоже время. А выхлоп меньше чем от добавления какой то новой функциональной фичи. Это ж таки shareware, хоть и бесплатная для exUSSR.


Это смотря какими инструментами пользоваться. У нас вся поддержка локализации в несколько строк выходит. Другое дело сами тексты. Но их можно поручить пользователям делать. )))

K>Плюс, редактор то для программистов, и все термины из интерфейса в принципе должны быть понятны.


Угу, в принципе перевод вообще не нужен. Просто Netbeans и Notepad++ у меня автоматом по русски говорят и я сразу заметил разницу. )))
Re[5]: Нормальный редактор для C++ - существует ли?
От: Kefir http://www.hippoedit.com
Дата: 24.03.12 23:41
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Не очень представляю что тут может быть ещё добавлено не превращаясь в IDE. Но интересно. Хотя... Интеграция с популярными системами контроля версий возможно была бы интересной.

Ну тот же языково-зависимый auto complete. Плагин не утяжеляет основное решение, а используется только теми кому надо. Но конечно его кто то написать должен Я пока для тяжелых языков не планировал. Может добавлю для скриптовых языков — мне надо самому для удобной разработки скриптовых плагинов в редакторе. Другой пример интеграция CVS (например Perforce) Вы уже упомянули. А если у CVS есть командный интерфейс, то это и достаточно просто.

K>>Например, я сообираюсь добавить auto-completion плагин базированный на ctags — работы в принципе не много и охват языков сразу большой. Но опять же это не конкуренция с IDE.

_>Хех, как раз в этой темке обсудили что ctags не справляется с полноценным C++...
Та да, я читал. Но ctags это все же лучше чем ничего А писать свой синтаксический парсер для C++ я пока не планирую.

_>Ну кстати с обработкой одиночного файла у вас же не плохо справляется. Пока единственный минус (по сравнению с монстрами делающими полный анализ) при подсветке по файлу, это то что нельзя настроить что бы делало серым неактивные (в данном контексте) области #ifdef/#else.

Ну здесь, к сожалению надо уже "понимать" язык. Тем более, все равно, на базе только одного файла не выйдет. Надо парсить все дерево инклудов и тд.
HippoEDIT, в отличии от Scintilla based (Notepad++) редакторов не использует специализированных парсеров для разных языков. У его универсальный, динамический парсер настраиваемый с помощью "синтаксической схемы" языка. Так что с специализациями, типа разбор препроцессора, тяжело. Хотя можно написать плагин, который парсит только препроцессор С++ и "гасит" неактивные куски наложением соответствующего стиля.
У меня есть функция для показа Inactive Code (View->Editor) но она работает для документов со смешанными языками. Там гасятся части кода с языком (синтаксисом) отличным от текущего. Например, в HTML документе, если Вы в HTML то все скриптовые и css блоки будут неактивны.

_>Так что в принципе, если попробовать своими силами, достаточно отработать полностью препроцессор (который не особо сложный) и далее на полученный мегабайтный исходник ваш текущий анализатор — для начала уже не плохо будет. Но это конечно тоже не просто и уже путь к полноценной IDE...

не думаю что все будет так просто. Проще все же плагин, который накладывает раскраску поверх. Основная проблема здесь — что работы до фига, а все равно IDE будет лучше

K>>Да, это интересная идея. Уже добавил, будет в обновленной 1.50 бете. Можно будет указать несколько файлов в одно поле, разделенных || (C:\a.chm || C:\b.chm) и будет проверять по порядку.

_>Ооо, супер. С такими фичами можно даже частично забывать про автокомплит.
_>У меня есть chm по всем нашим библиотекам, по c++ библиотеке и по OS API. И по самому проекту генерится с помощью doxygen.
_>Кстати, возможно стоило бы как-то автоматизировать интеграцию с ним? ) Т.е. такой замкнутый цикл. Ставим в настройках проекта галочку "генерировать документацию". И оно автоматом создаёт с помощью doxygen chm файл по проекту и добавляет его в хелп текущий?
Это языково специфично — нужен плагин. А так: плагин на сохранение проекта запрашивает список файлов проекта, отдает их doxygen (это не сложно). В контекстном хелпе можно использовать переменные, определенные в проекте, как например путь к генеренному chm файлу, и искать по нему до поиска по источникам по умолчанию. Если будет надо, можно потом конкретно посмотреть.
Еще можно добавить Context Help item прямо в проект. Тогда его шоткат перекроет шоткат контекстной справки языка.

_>Оо, инструменты на проект. Я как-то не заметил. Тогда в принципе ничего не надо добавлять. Единственно что хотелось бы в тулабре Tools выпадающий список, а не набор кнопок. А то у нас тут бывает по 10 конфигов разных на проект... )

Добавление выпадающего списка вместо кнопок (точнее это drop menu), возможно пока только для синтаксических инструментов (надо просто создать папку, и положить инструмент туда), для проектов пока нет. Но можно подумать. Drop box. ну не знаю. В принципе тоже можно добавить, но сложнее.

_>Это смотря какими инструментами пользоваться. У нас вся поддержка локализации в несколько строк выходит. Другое дело сами тексты. Но их можно поручить пользователям делать. )))

Ну это если с самого начала все по уму делать А так повозиться придется. С локализацией диалогов тоже будет непросто (при разной длине слов в разных языках и layout).
Re[6]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 25.03.12 12:21
Оценка:
Здравствуйте, Kefir, Вы писали:

_>>Кстати, возможно стоило бы как-то автоматизировать интеграцию с ним? ) Т.е. такой замкнутый цикл. Ставим в настройках проекта галочку "генерировать документацию". И оно автоматом создаёт с помощью doxygen chm файл по проекту и добавляет его в хелп текущий?

K>Это языково специфично — нужен плагин.

Ммм, ну относительно специфично. Всё же doxygen это: C++, C, Java, Objective-C, Python, IDL , Fortran, VHDL, PHP, C#, D.

K>Еще можно добавить Context Help item прямо в проект. Тогда его шоткат перекроет шоткат контекстной справки языка.


Только что бы не перекрывал, а что бы искал в нём первом и если в нём нет, то шёл к системным chm...

K>Добавление выпадающего списка вместо кнопок (точнее это drop menu), возможно пока только для синтаксических инструментов (надо просто создать папку, и положить инструмент туда), для проектов пока нет. Но можно подумать. Drop box. ну не знаю. В принципе тоже можно добавить, но сложнее.


В общем я могу сказать как у нас сделано — как сделать это же в вашем редакторе максимально удобно не знаю пока. У нас все построения работают из командной строки (т.е. принципе нам даже не обязательно для этого IDE — просто мелкое удобство). Все команды одиного типа: scons release, scons debug, scons tests, scons help, scons installer и т.д. И всего таких штук 10 на обычный проект.

В Нетбинсе у нас это реализовано просто через конфигурации, который он показывает в виде выпадающего списка на тулбаре (и рядом кнопки построить, очистить, запустить). В настройках конфигурации у Нетбинса указываются команды построения (см выше), очистки (у нас это scons -c release и т.п.) и выполнения (обычно просто указывает на результат построения).

О, кстати, забыл написать об этом в прошлый раз. У вас тут минус нашёлся, который я правда преодолел своими силами, но всё же... В общем scons — это под виндой bat файл коротенький, который запускает реальный python скрипт. Так вот у вас почему-то не перехватывается его вывод (т.е. возникает отдельное окно терминала а в вашем output пустота). Эклипс и Нетбинс работает без проблем. Ну я исправил это поставив в командную строку инструмента не scons, a собственно тот вызов питона. Но в целом это не дело. А если бы тот bat файл был большим и сложным? )

K>Ну это если с самого начала все по уму делать А так повозиться придется. С локализацией диалогов тоже будет непросто (при разной длине слов в разных языках и layout).


Если используемые инструменты не позволяют сделать это всё автоматом, то конечно и не стоит возиться. )
Re[9]: Нормальный редактор для C++ - существует ли?
От: Аноним  
Дата: 27.03.12 10:10
Оценка:
Здравствуйте, SleepyDrago, Вы писали:

SD>Это уже интересно А расскажите-ка пожалуйста простым пользователям VS чего у них нет. Так сказать на личных примерах.


Visual Assist — глючная поделка, не умеет корректно парсить плюсовый код. Элементарных вещей уже несколько лет не могут доработать.

Не умеет делать overload resolution для элементарных случаев:

Почему оно мне предлагает выбор, если тут однозначно определяется какая именно из перегруженных функций вызывается? Компилятор об этом меня не спрашивает же.

Не умеет поиск references для конструкторов:

Пытался найти references для Foo(int), а оно вывалило что попало и пропустило конструктор foo(1) в списке инициализации. Т.е. такой фичи вообще нет в VA.

Не умеет искать references для перегруженных операторов:

Попытка поискать references для Vec::operator-=, нет такой фичи.

Не умеет переходить к определению перегруженного оператора:

Опять какой-то левый выбор вариантов предлагает, хотя все однозначно в коде.

Даже completion, для которого у VA похоже куча эвристик (вместо нормального семантического анализа кода), работает криво:

Откуда у boost::sub_match взялась функция find?
Re[12]: Нормальный редактор для C++ - существует ли?
От: kamre Россия  
Дата: 27.03.12 10:15
Оценка:
Здравствуйте, Kswapd, Вы писали:

K>Но вот отсутствие в Eclipse возможности задать простой клавиатурный макрос — очень удивило.


Частично есть в виде плагина: http://sourceforge.net/projects/practicalmacro/files/ Но до удобства клавиатурных макросов в Emacs этому плагину далеко.
Re[8]: Нормальный редактор для C++ - существует ли?
От: Аноним  
Дата: 27.03.12 10:24
Оценка:
Здравствуйте, alex_public, Вы писали:

_>А мне для начал надо что бы Boost мог прожеваться. )))


Навигация по исходникам, которые используют boost (всякие там spirit/phoenix/multi_index), ни в одной IDE нормально не работает.
Re[7]: Нормальный редактор для C++ - существует ли?
От: kamre Россия  
Дата: 27.03.12 10:36
Оценка:
Здравствуйте, PSV100, Вы писали:

PSV>По поводу переходов/поиска определений элементов. Можно забабахать макросы в таком стиле: клацнули клавишу, определяем имя элемента (согласно выделенному тексту или положению курсора, можно также и запросить через ввод), выполнили поиск в проекте стандартными средствами редактора (они вполне мощные), если результат не один, то выводим в спец-окна/панель/буфер, где можно всё наглядно оценить, часто даже и переходить на нужное место и не понадобится.


"Вполне мощные" стандартные средства редактора ничего не знают про семантику кода, поэтому будут искать тупо текст и выдавать кучу левых, не относящихся к конкретному элементу результатов. Т.е. find-grep — это слишком примитивно и не удобно для навигации по коду.

PSV>Уверен, что для вима/эмакса таких готовых скриптов можно найти не мало, возможно и для Sublime уже наваяли. Также не мало всяких помогалок в стиле переключений из хедера на реализацию и наоборот, фактически это уже "стандартный" набор.


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

PSV>И так далее в таком стиле. При этом нет дикого расхода оперативки (можно запускать рядом IDE, она всё сожрёт), нет затыков, всё летает.


Так никаких удобств при работе с исходным кодом нет, его то за обычный текст считают, то пытаются парсить кривыми парсерами на regexp, которые о семантике понятия не имеют. Вот оно и "летает".
Re[7]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 27.03.12 11:33
Оценка:
Здравствуйте, PSV100, Вы писали:

PSV>Я всё-таки рекомендую получше присмотреться к Sublime.


Кстати, смотрю сейчас на новую версию Notepad++ — там появилась "карта документа". Вроде бы это была одна из заметных уникальных фич Sublime... )))
Re[9]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 27.03.12 11:34
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Навигация по исходникам, которые используют boost (всякие там spirit/phoenix/multi_index), ни в одной IDE нормально не работает.


Netbeans пробовали? У меня работает. Хотя spirit и т.п. напрямую не использовал. )
Re[13]: Нормальный редактор для C++ - существует ли?
От: PSV100  
Дата: 27.03.12 12:54
Оценка:
Здравствуйте, kamre, Вы писали:

K>Здравствуйте, Kswapd, Вы писали:


K>>Но вот отсутствие в Eclipse возможности задать простой клавиатурный макрос — очень удивило.


K>Частично есть в виде плагина: http://sourceforge.net/projects/practicalmacro/files/ Но до удобства клавиатурных макросов в Emacs этому плагину далеко.


Как я понимаю, основной посыл был в том, что такие базовые необходимые функциональные вещи отсутствуют изначально, из коробки. И сама идеология системы заставляет создавать полноценные проекты как монстро-плагины для IDE на каждый чих. К сожалению, таковы "современные эмаксы".
Re[8]: Нормальный редактор для C++ - существует ли?
От: PSV100  
Дата: 27.03.12 13:21
Оценка:
Здравствуйте, kamre, Вы писали:

K>Здравствуйте, PSV100, Вы писали:


PSV>>По поводу переходов/поиска определений элементов. Можно забабахать макросы в таком стиле: клацнули клавишу, определяем имя элемента (согласно выделенному тексту или положению курсора, можно также и запросить через ввод), выполнили поиск в проекте стандартными средствами редактора (они вполне мощные), если результат не один, то выводим в спец-окна/панель/буфер, где можно всё наглядно оценить, часто даже и переходить на нужное место и не понадобится.


K>"Вполне мощные" стандартные средства редактора ничего не знают про семантику кода, поэтому будут искать тупо текст и выдавать кучу левых, не относящихся к конкретному элементу результатов. Т.е. find-grep — это слишком примитивно и не удобно для навигации по коду.


PSV>>Уверен, что для вима/эмакса таких готовых скриптов можно найти не мало, возможно и для Sublime уже наваяли. Также не мало всяких помогалок в стиле переключений из хедера на реализацию и наоборот, фактически это уже "стандартный" набор.


K>Костылей уже немало наваяли для этих редакторов, а адекватную модель кода для корректной навигации по нему ничего из этих костылей не умеет.


PSV>>И так далее в таком стиле. При этом нет дикого расхода оперативки (можно запускать рядом IDE, она всё сожрёт), нет затыков, всё летает.


K>Так никаких удобств при работе с исходным кодом нет, его то за обычный текст считают, то пытаются парсить кривыми парсерами на regexp, которые о семантике понятия не имеют. Вот оно и "летает".


Я сам мечтаю иметь хороший редактор и удобную среду, при этом иметь прелести адекватного IDE-помощника. А некоторым интузиастам и для C++ нафиг не нужен и автокомплит, например.
В моём случае, редактор часто используется для своего DSL, который специально спроектирован для простой работы. В начале был прицел, чтобы реализовать полноценный парсер для работы в редакторе, в т.ч. и со всякой семантикой (в JEdit есть полноценная система для своих парсеров, чем-то похоже на механизмы в Эклипсе). Но потом обломались, настроили стандартные универсальные средства, которые могут хотя бы подсказать о виде литерала (это комментарий, или строка, или это внутри "другого языка" и пр.), ваяем свои макросы — вроде ничего, удобно. И действительно летает.
Re[8]: Нормальный редактор для C++ - существует ли?
От: PSV100  
Дата: 27.03.12 13:33
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Здравствуйте, PSV100, Вы писали:


PSV>>Я всё-таки рекомендую получше присмотреться к Sublime.


_>Кстати, смотрю сейчас на новую версию Notepad++ — там появилась "карта документа". Вроде бы это была одна из заметных уникальных фич Sublime... )))


Да всяких minimap-ов наваяли для многих редакторов/IDE. Возможно в Sublime это появилось первым, я не в курсе. По мне, так это просто, прежде всего, привлекалово юзеров, но иногда действительно приятная и как-то подмогнёт.

Кстати, здесь рядом рекомендовали HippoEdit — неплохая штука, давно на него смотрел, тогда он был в какой-то бете и был неюзабельный, но внимание привлёк. Сейчас руки всё никак не доходят посмотреть.
Re[9]: Нормальный редактор для C++ - существует ли?
От: kamre Россия  
Дата: 27.03.12 13:46
Оценка:
Здравствуйте, PSV100, Вы писали:

PSV>Я сам мечтаю иметь хороший редактор и удобную среду, при этом иметь прелести адекватного IDE-помощника.


Мне тоже хватало бы Emacs как редактора плюсового кода, если бы там нормально навигация по исходникам работала. И ведь принципиально ничего не мешает эту функциональность добавить вместо той кучи костылей, которая сейчас предлагается. Просто сообщество — неосиляторы какие-то, самое лучшее для плюсов было в проприетарном xrefactory, который к сожалению загнулся. Может быть когда-нибудь прикрутят c++ front-end от clang.

PSV> А некоторым интузиастам и для C++ нафиг не нужен и автокомплит, например.

Лично мне корректный семантический автокомплит не шибко критичен, меня в большинстве случаев устроит и тупой словарный из Emacs. А вот проверка корректности кода по мере набора и до компиляции для меня важна, также как и удобная навигация по всему коду в проекте. Только вот эти вещи посложнее кучи костылей с эвристиками для автокомплита.

PSV>В моём случае, редактор часто используется для своего DSL, который специально спроектирован для простой работы. В начале был прицел, чтобы реализовать полноценный парсер для работы в редакторе, в т.ч. и со всякой семантикой (в JEdit есть полноценная система для своих парсеров, чем-то похоже на механизмы в Эклипсе).


Если так много кода нужно писать и поддерживать на своем DSL, то можно попробовать на фреймворке Xtext написать.
Re[10]: Нормальный редактор для C++ - существует ли?
От: PSV100  
Дата: 27.03.12 16:37
Оценка:
Здравствуйте, kamre, Вы писали:

K>Здравствуйте, PSV100, Вы писали:


PSV>>Я сам мечтаю иметь хороший редактор и удобную среду, при этом иметь прелести адекватного IDE-помощника.


K>Мне тоже хватало бы Emacs как редактора плюсового кода, если бы там нормально навигация по исходникам работала. И ведь принципиально ничего не мешает эту функциональность добавить вместо той кучи костылей, которая сейчас предлагается. Просто сообщество — неосиляторы какие-то, самое лучшее для плюсов было в проприетарном xrefactory, который к сожалению загнулся. Может быть когда-нибудь прикрутят c++ front-end от clang.


Всё-таки неосиляторы для плюсов не от хорошей жизни. Я вспоминаю дебаты вокруг JEdit, когда оценивали шансы отодрать парсер от Нетбинса. Даже если бы и получилось это сделать как разовая операция, то потом поддерживать/развивать тоже очень непросто, мало кто хочет с этим возиться. При этом для ряда популярных языков как Джава, Питон, Руби, Haxe и пр. свои парсеры есть.

PSV>> А некоторым интузиастам и для C++ нафиг не нужен и автокомплит, например.

K>Лично мне корректный семантический автокомплит не шибко критичен, меня в большинстве случаев устроит и тупой словарный из Emacs. А вот проверка корректности кода по мере набора и до компиляции для меня важна, также как и удобная навигация по всему коду в проекте. Только вот эти вещи посложнее кучи костылей с эвристиками для автокомплита.

Да, тут вы правы. Жаба, как промышленное явление, в своё время конкретно подсадила на иглу всю отрасль.

PSV>>В моём случае, редактор часто используется для своего DSL, который специально спроектирован для простой работы. В начале был прицел, чтобы реализовать полноценный парсер для работы в редакторе, в т.ч. и со всякой семантикой (в JEdit есть полноценная система для своих парсеров, чем-то похоже на механизмы в Эклипсе).


K>Если так много кода нужно писать и поддерживать на своем DSL, то можно попробовать на фреймворке Xtext написать.


Спасибо, про Xtext я в курсе, как и про MPS от Jetbrains. В своё время я смотрел эти системы, как-то там не всё просто и однозначно, нужно детально разбираться. В любом случае, их функционал для наших задачи не подходит. А у нас как раз всё заточено на то, чтобы кроме текстового редактора больше ничем не нагибать. С кодом работают разные люди, программисты в различных областях и с различной квалификацией, а также и не совсем программисты, например, администраторы. Многим даже и раскраска кода особо не нужна.
Re[7]: Нормальный редактор для C++ - существует ли?
От: Kefir http://www.hippoedit.com
Дата: 27.03.12 20:20
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Ммм, ну относительно специфично. Всё же doxygen это: C++, C, Java, Objective-C, Python, IDL , Fortran, VHDL, PHP, C#, D.

Ну все же специфично А делать как плагин или встраивать в базовую функциональность, для пользователя какая разница? Главное чтоб работало

K>>Еще можно добавить Context Help item прямо в проект. Тогда его шоткат перекроет шоткат контекстной справки языка.

_>Только что бы не перекрывал, а что бы искал в нём первом и если в нём нет, то шёл к системным chm...
Ну, это как сконфигурируешь. Можно решить разными путями. Если искать по набору chm, то просто поставить chm проекта первым.

_>В общем я могу сказать как у нас сделано — как сделать это же в вашем редакторе максимально удобно не знаю пока. У нас все построения работают из командной строки (т.е. принципе нам даже не обязательно для этого IDE — просто мелкое удобство). Все команды одиного типа: scons release, scons debug, scons tests, scons help, scons installer и т.д. И всего таких штук 10 на обычный проект.

Понятно. В принципе у меня идея есть как это сделать, чтоб было как надо Надо добавить возможность создания наборов user variables. Выпадающий список все же будет нужен в тулбаре, для переключения этих конфигураций.
Я себе записал, если будете пользоваться, и будет надобность — добавим.

_>О, кстати, забыл написать об этом в прошлый раз. У вас тут минус нашёлся, который я правда преодолел своими силами, но всё же... В общем scons — это под виндой bat файл коротенький, который запускает реальный python скрипт. Так вот у вас почему-то не перехватывается его вывод (т.е. возникает отдельное окно терминала а в вашем output пустота). Эклипс и Нетбинс работает без проблем. Ну я исправил это поставив в командную строку инструмента не scons, a собственно тот вызов питона. Но в целом это не дело. А если бы тот bat файл был большим и сложным? )

A Capture Output флаг был включен в настройка Tool? Ну и Output Type должен быть "Output Window". Если все стоит и все рано не ловит — может баг. Должно работать. Пишите баг репорт разберемся
1.50 это major beta, так что могло что-то поломаться. 1.49 — стабильная. Но новые фичи посмотреть / добавить лучше в 1.50.
Re[9]: Нормальный редактор для C++ - существует ли?
От: Kefir http://www.hippoedit.com
Дата: 27.03.12 20:28
Оценка:
Здравствуйте, PSV100, Вы писали:

PSV>Кстати, здесь рядом рекомендовали HippoEdit — неплохая штука, давно на него смотрел, тогда он был в какой-то бете и был неюзабельный, но внимание привлёк. Сейчас руки всё никак не доходят посмотреть.

Посмотрите еще раз Но в этот раз я тоже дал ссылку на major beta 1.50
Автор: Kefir
Дата: 16.03.12
, чтобы можно было новые фичи "пощупать". Для продакшн, лучше использовать 1.49 релиз с сайта.
Re[8]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 27.03.12 23:16
Оценка:
Здравствуйте, Kefir, Вы писали:

K>Понятно. В принципе у меня идея есть как это сделать, чтоб было как надо Надо добавить возможность создания наборов user variables. Выпадающий список все же будет нужен в тулбаре, для переключения этих конфигураций.

K>Я себе записал, если будете пользоваться, и будет надобность — добавим.

Я тут посмотрел... Оно оказывается добавляет инструменты проекта ещё и в окошко project explorer — это в принципе может быть нормальной заменой того выпадающего списка.

Хотя идея с конфигурациями как в нетбинсе всё же эффективнее потому как там же не 1 команда, а сразу несколько от конфига зависят: построить, очистить, выполнить. А тут тогда 3хN tools заводить — перебор уже точно. )))

K>A Capture Output флаг был включен в настройка Tool? Ну и Output Type должен быть "Output Window". Если все стоит и все рано не ловит — может баг. Должно работать. Пишите баг репорт разберемся


Не, на самом деле это я ошибся. Не заметил что оно почему то само переключает Capture Output в зависимости от команды. Т.е. когда там python стоит — одно (флаг стоит), а когда меняю на scons.bat флаг автоматом убирается (надо потом вручную снова поставить). Из-за этого ошибся. )
Re[9]: Нормальный редактор для C++ - существует ли?
От: Kefir http://www.hippoedit.com
Дата: 27.03.12 23:37
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Здравствуйте, Kefir, Вы писали:


_>Я тут посмотрел... Оно оказывается добавляет инструменты проекта ещё и в окошко project explorer — это в принципе может быть нормальной заменой того выпадающего списка.

_>Хотя идея с конфигурациями как в нетбинсе всё же эффективнее потому как там же не 1 команда, а сразу несколько от конфига зависят: построить, очистить, выполнить. А тут тогда 3хN tools заводить — перебор уже точно. )))
Инструменты добавляются в проект, можно как из главного меню, как и контекстно — кликая по дереву проекта. Просто когда из меню не понятно в какой нод вставляется (если окно Project Explorer скрыто). Но по правилам все команды должны быть доступны из меню. Вот оно там и есть.
А с конфигурациями да — удобней. Ну и более интуитивно. User Variables есть как также на уровне проекта, так что все получиться логично.

K>>A Capture Output флаг был включен в настройка Tool? Ну и Output Type должен быть "Output Window". Если все стоит и все рано не ловит — может баг. Должно работать. Пишите баг репорт разберемся

_>Не, на самом деле это я ошибся. Не заметил что оно почему то само переключает Capture Output в зависимости от команды. Т.е. когда там python стоит — одно (флаг стоит), а когда меняю на scons.bat флаг автоматом убирается (надо потом вручную снова поставить). Из-за этого ошибся. )
Надо посмотреть. Оно меняет состояния флага (Enabled/Disabled) в зависимости если консоль поддерживается. И должна выключать+дисайблить флаг если не поддерживаеться, но не похоже не должна включать автоматом...
Re[10]: Нормальный редактор для C++ - существует ли?
От: PSV100  
Дата: 28.03.12 17:10
Оценка:
Здравствуйте, Kefir, Вы писали:

K>Здравствуйте, PSV100, Вы писали:


PSV>>Кстати, здесь рядом рекомендовали HippoEdit — неплохая штука, давно на него смотрел, тогда он был в какой-то бете и был неюзабельный, но внимание привлёк. Сейчас руки всё никак не доходят посмотреть.

K>Посмотрите еще раз Но в этот раз я тоже дал ссылку на major beta 1.50
Автор: Kefir
Дата: 16.03.12
, чтобы можно было новые фичи "пощупать". Для продакшн, лучше использовать 1.49 релиз с сайта.


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

Я давненько здесь на форуме (скорее в С/С++) как-то заметил тему, где Вы пытались что-то обсудить для своего редактора (вроде что-то по буферам текста), и посмотрел ваш проект. Тогда им пользоваться было невозможно (краши, зависания), и была якобы рабочая версия, но вкусности были именно в нерабочей бете. Редактор оставил приятные впечатления, но пришлось тогда работать с NotePad++. Затем я использовал вим/эмакс (и сейчас изредка), а сегодня больше работаю в JEdit (кроме всяких разных IDE). Инфа о вашем редакторе на глаза как-то не попадалась, и как-то он подзабылся. И вот приятно удивлён, что проект имеет свою жизнь. У меня у самого есть кое-какой опыт создания редакторов/IDE, но далеко не с пустого листа (проект SynEdit для Delphi/FreePascal), так что я имею представление, какая проделана работа, причём сразу видно, что с пониманием дела.
Поэтому, мои небольшие поздравления с успехом...

Но, к сожалению, лично я воспользоваться редактором для работы вряд ли смогу. Для меня желательна кроссплатформа (хотя работаю в основном под виндой), да и есть уже наработанные решения в других редакторах. Также не позволит совесть использовать ваш редактор бесплатно в кое-каких коммерческих разработках (согласно лицензии). К тому же, я уже "прикипел" к тем принципам, подходам в интерфейсе и управлении средой, которые есть в вим/эмакс/JEdit/Sublime, а также к их идеологии тотального "программирования редактора", везде и во всём. Ваш редактор очевидно рассчитан на тех, кто привык к Visual Studio. Даже если у Вас есть какие-то тайные желания в каком-то развитии, то, имхо, есть немало технических проблем, с той же кроссплатформой. К тому же понятно, что проект редактора — это не основная сфера вашей деятельности, и много времени ему уделять нет возможности.

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

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

Я немного повертел редактор, у меня скопились всякие мысли по этому поводу, могу поделиться, вдруг, что-то пригодится. Возможно здесь будут некоторые "придирки", что ли, но откровенно говоря, когда работаешь в какой-нибудь IDE на много чего не обращаешь внимания, но когда в удобном редакторе — уже стараешься "выжать" всё для своего же блага. Итак, попробую.

— несколько портит картину о лёгковестности вариант поставки с pdb, особенно неподготовленного человека. Я вроде в этой бете особых глюков/крашей не заметил. Может есть смысл сделать вариант сборки и без pdb, а уже постоянные пользователи, кто помогает в тестировании, смогут взять себе с pdb.

— Я так понимаю, что нет возможности указывать длинные шорткаты из нескольких нажатий, вида "Ctrl-E, Ctrl-A". Жаль. Не мешало бы иметь некие виртуальные шорткаты, типа каких-то Meta, например, "Ctrl-E, g h" -> "Ctrl-K, g h", т.е. Ctrl-E и Ctrl-K — одно и то же. Полезно иметь глобальные переназначения клавиш, типа Ctrl перебросил на CapsLock. В идеале, хотелось бы иметь в редакторе обработку клавиш на уровне scan-кодов, чтобы не влиял текущий язык (en|ru).

— нет глубокой настройки базовых операций. Например, кому-то нужно, чтобы перемещение по словам работало чуть иначе: нажал Ctrl+вправо и курсор прыгнул не в начало следующего слова, а на конец текущего слова. Или, например, когда постоянно жмёшь влево не нужен переход на верхнюю строку, когда уперлись в начало.
Или, например, мне удобно, когда курсор не доходит до самого конца/начала экрана, а за строчек 5 начинается прокрутка. Сейчас в редакторе вроде за 1 строку начинается прокрутка, но при этом есть какая-то задерганность на экране — выделение текущей строки прыгает туда-сюда. И сам индикатор курсора при работе в редакторе как-то бывает иногда задерганным, мельтешит в глазах.
А плавная прокрутка, кстати, у вас сделана приятно, и вроде даже отключаема (что полезно).

— вроде заявлена фича для автоматического обрамления скобками, но как-то не до конца проработанная. Например, не всегда работают кавычки (скорее, это где-то настраивается, чем обрамлять). Если я передумал обрамление и нажал undo, то отменяется одна скобка, а не две. Или нажал "(", получил "()", затем нажал backspace, но удалил только левую скобку, без правой. Одним словом, посмотрите на Sublime, там это хорошо отработано.

— чуток бы поудобнее автокомплит. Например, когда вставляется в код функция неплохо курсор переносить во внутрь скобок, когда есть параметры, или за скобки, когда их нет.

— также не заметил фактически сегодняшнего "стандарта" — сниппетов или шаблонов по мотивам TextMate, которые есть в том же Sublime. Весьма полезны.

— частенько во всяких хинтах, где выводится код, например, при подсказке списка параметров функции, рисуются квадратики. Это не убираются переводы строк: char 10 и 13.

— заметил глюк: иногда после undo индикатор цвета слева в панели с текстом, что указывает на измененность строк, не сбрасывается, т.е. показывает, что строка изменена.

— там же слева, где номера строк, неплохо подсвечивать область вместе с выделением скобочек. т.е. когда выделяются парные скобки (или другие элементы) и они на разных строках, то слева светится индикатор, как это делает JEdit. И само выделение парных элементов иногда лучше обрамлять рамочкой, вместо цвета или подчёркивания — так они лучше выделяются, особенно когда рядом есть другие фоновые цвета или подчёркивания.
И неплохо выделять синтаксическую область слева, по мотивам Эклипса.
Также неплохо слева выделять область для текущей строки, когда она в режиме wordwrap и виртуально расползается на несколько строк на экране, как это делает Sublime.

— Пробелы, концы строк, табы можно выделять через точечки, но не по средине строки, а внизу, как обычные точки, только дать им другие цвета, как это делает jedit. Тогда эти символы будут не бросаться в глаза, при этом можно включить их постоянный вывод и смотреть на них не только при выделении текста.

— не хватает опции, чтобы концевые пробелы обрубались сразу по ходу дела, а не только при сохранении.

— не хватает опции, чтобы внутри выделения тоже рисовалась раскраска кода.

— очень не хватает множественного выделения, как это сделано в jedit (лучший вариант) или в Sublime. Я так понимаю, что ввести его очень проблематично, ибо требуется переделка многого функционала, который работает с выделением. Для некоторых случаев можно реализовать режим для группового изменения, как это сделано в Lazarus, например: выделили блок, нажали клавишу или пиктограмму слева от текста, включился режим спец-редактирования, таб-ом выбрали нужное слово, редактируем и все такие же слова одинаково изменяются, нажили esc — закончили. Как это выглядит, можно глянуть здесь.

— вроде для выделений есть режимы Reset/Restore, но как-то они не так работают. Посмотрите опять же на Sublime.
И ещё по выделению. Вроде заявлен способ перемещения через выделение, когда, например, выделили блок, курсор на его правой границе, нажали влево — перелетели на его начало, но нажатие вверх почему то работает как обычно.

— у вас вроде неплохой набор функций вокруг буфера обмена. В JEdit-е есть ещё неплохая штука — он хранит историю удаленных элементов, которые не кидались в буфер обмена, и можно делать вставки оттуда. Также в редакторах есть работа с буферами-регистрами по мотивам эмакса, но лично я уже отошёл от их использования. Они полезны для всяких макросов/скриптов, но если есть нормальный API, то и там можно на них забить.

— глюк в окне закладок: после перегрузки редактора там появились какие-то пустые строки в начале списка. При нажатии "перейти" на закладке нет переключения на нужное окно с файлом. Также не хватает позиции столбца (кроме строки). В JEdit-е есть ещё удобный способ работы с именованными метками, но у вас есть Anchor, в принципе, наверно его достаточно. Не хватает типовой функции выделения текста от Anchor до текущего положения курсора.

— в редакторе весьма гибкий поиск, но вроде нет возможности искать/заменять многострочные выражения. В jedit-е есть классная штука: замена текста на результат работы макро-кода. Удобно, иногда избавляет от написания макроса или внешнего скрипта/утилиты.

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

— не очень улобная работа с фолдингом. Нет понятия уровней, не ясно, можно ли делать произвольные свёртки. Не хватает виртуального вырезания кода, т.е. временного отбрасывания лишнего, как механизм Narrow в JEdit.

— не понятно, как работать с буферами, или файлами: если делать split в окне, то там показывается только этот же файл, причём всегда синхронно (если слева-справа). Если расположить два MDI-окна рядом с одним и тем же файлом, то не ясно как синхронизировать при необходимости.

— в полноэкранном режиме редактор не перекрывает весь экран — видна виндовская панель задач. В Sublime есть ещё один приятный режим — Distraction Mode.

— не понял, как работают макросы. Скорее, чего-то не хватает в поставке. Я предполагаю, что будет задействован стандартный майкрософтский ActiveX для скриптинга (не помню как он обзывается), и скрипты можно будет ваять на JavaScript.


В общем, всего вспомнить уже не могу. Не стоит "принимать всё близко к сердцу", но может быть что-то полезное я указал. Также хотелось бы предложить для редактора такие фичи:

— список ошибок. Сейчас в редакторе ошибки светятся чёрточками справа от текстовой панели. Не мешало бы их вывести отдельным списком, да и внутри кода подчеркнуть при необходимости. Но, возможно есть проблема, что парсеры в редакторе не дают подробного описания ошибки и не объясняют, чем им "красное" место не нравится.
Также полезен вывод ошибок при обработке результатов внешних тулсов (я пока не в курсе, как работает их запуск, примерно увидел, что чего-то есть).

— всякие разные списки своих заметок и определенных элементов, типа TODO-метки.

— модные ныне minimap-ы. В основном, баловство, но иногда приятны, особенно когда можно чуть увеличить и видны всякие подчёркивания и выделения. Им не хватает какого-нибудь hint-а: под мышкой чтобы вылазило окошко с увеличенной информацией.

— diff-сравнивалки. B JEdit-е есть простой, но хороший diff. Удобно, когда сразу внутри редактора можно всё править по месту, пользуясь всеми его функциями, вместо запуска внешних тулсов.

В общем, я думаю, что Вы всякие хотелки знаете побольше меня.


И есть пару вопросов:

— я не увидел фичи, как делать поиск по chm-файлам, о которой тут на форуме была речь;

— что может выводить Overview Bar (только чёрточки типа для ошибок ?);

— что может вытворять Smart Navigate (Alt+G) ?

— можно пару слов про Nesting Level (хотя вроде понятно), Alternative Mode (ну вроде тоже), Virtual Space, Inactive Code.

Спасибо.
Re[11]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 28.03.12 18:02
Оценка:
Здравствуйте, PSV100, Вы писали:

Отвечу за автора на пару вопросов. )))

PSV>- я не увидел фичи, как делать поиск по chm-файлам, о которой тут на форуме была речь;


Настраивается в меню Help->Syntax Help->Manage Help. Использовать логичнее всего по клавиатурной комбинации. Правда пока для каждого chm надо отдельную создавать, что не удобно. Хотя по языкам оно само разделяет — уже хорошо. Но у меня для одного C++ штук 5 будет. )))

PSV>- что может вытворять Smart Navigate (Alt+G) ?


Ну для C++ оно частично (в рамках файла) заменяет Go to Difinition из больших IDE. На мой взгляд в рамках одного файла работает очень не плохо.
Re[10]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 28.03.12 21:07
Оценка:
Здравствуйте, Kefir, Вы писали:

У меня тут ещё вопрос возник. Я там заметил команду форматирования... А где-то есть настройки этого форматирования? ) Я что-то не нашёл. А ведь расстановка скобочек, переносов и пробелов — это же почти религиозный вопрос. ))) В том же Нетбинсе настройке форматирования посвящено окошко с приблизительно миллионом опций. )))
Re[11]: Нормальный редактор для C++ - существует ли?
От: Kefir http://www.hippoedit.com
Дата: 29.03.12 00:17
Оценка:
Здравствуйте, PSV100, Вы писали:

PSV>Наконец-то посмотрел на ваш бегемотик. Кстати, прикольный логотип, чувствуется рука дизайнера.

Это жена Жена — художник (не дизайнер). По поводу иконки, если честно (ну и названия) — мнения не однозначные.

Спасибо за огромный (и дельный) отзыв. Но думаю, не все осилят его до конца Но для меня — очень полезно.
В общем о редакторе: это Windows решение, мульти-платформенность я не планирую. С одной стороны сейчас уже будет много работы с рефакторингом и тд, а с другой стороны работа под одну платформу дает свои преимущества по оптимизации и UI.
HippoEDIT это не emacs/vim альтернатива, и в принципе я не хочу сильно развиваться в эту сторону. Перетянуть пользователей emacs/vim на GUI платформу трудно (из-за разности мировозрения) а развиться до их уровня и больше не реально (хотя бы из-за платности). Идея была создать GUI редактор который бы с одной стороны был интуитивен и легок в освоении а с другой стороны обладал продвинутой функциональностью необходимой опытным пользователям. Позволял глубокую настройку, но не засорял интерфейс. Ну и чтоб работал "as expected but not as designed"
Кое что получилось, кое что не очень. Редактор уже стал достаточно сложным в освоении и перегружённым функциями и настройками. С множественными кастомизациями требуемыми пользователями, я борюсь использованием XML настроек, изменять которые можно только прямым редактированием файлов установок (например сколько линий оставлять до границы окна до начала прокручивания при навигации — ваш вопрос). Ну конечно если это что то распространенное то переноситься в UI.
С новыми функциями, как то языково специфичные расширения или какие нибудь функции форматирования — решение было плагины (появилось в 1.50). Пришлось очень много переделать, чтоб плагины органично вписались в архитектуру и были не только способом внешних расширений, но и направлением внутреннего развития. Сейчас поддерживаются два вида плагинов: бинарные (dll, COM based но без регистрации) — для критических расчетов, как то наложение стилей (Spell Checker), функциональных панелей (Bookmark Manager, File and Project Explorer), auto compelete (в проекте), Debuging (в проекте) и тд; и скриптовые (Active Scripting) — для не критических расчетов и расширений, как то дополнительные команды, тулбары, меню, диалоги, индикаторы статус бара, шаблоны кода и тд. Идея была чтоб функционально скриптовые плагины были сравнимы по функционалу с бинарными. Они резиденты, кешируются, поддерживают инклуды, смешанные языки, динамические события, инлайновые функции, закладки свойств и тд. Все на базе Active Scripting, но сделано максимально удобно для использования и очень много API открыто (правда пока не документировано). Плагины имеют "бесшовную" интеграцию и не отличимы от оригинальной, встроенной функциональности. Примеры можно глянуть здесь.

Ну и дальше по тексту...

PSV>Поэтому, мои небольшие поздравления с успехом...

Спасибо.

PSV>Но, к сожалению, лично я воспользоваться редактором для работы вряд ли смогу. Для меня желательна кроссплатформа (хотя работаю в основном под виндой), да и есть уже наработанные решения в других редакторах. Также не позволит совесть использовать ваш редактор бесплатно в кое-каких коммерческих разработках (согласно лицензии). К тому же, я уже "прикипел" к тем принципам, подходам в интерфейсе и управлении средой, которые есть в вим/эмакс/JEdit/Sublime, а также к их идеологии тотального "программирования редактора", везде и во всём. Ваш редактор очевидно рассчитан на тех, кто привык к Visual Studio. Даже если у Вас есть какие-то тайные желания в каком-то развитии, то, имхо, есть немало технических проблем, с той же кроссплатформой. К тому же понятно, что проект редактора — это не основная сфера вашей деятельности, и много времени ему уделять нет возможности.

Каждый выбирает то что ему больше подходит — это понятно. Sublime реально неплохой редактор, там много чего уникального и приятного. Как то множественное выделение, предосмотр файлов и go to anywhere (или че-то похожее). MiniMap — красиво но я не уверен в ее необходимости. Я думаю Overview Bar более функциональна. То же Distraction Mode — я не делал его не потому что не смог , а просто не захотел (бенефиты/затраты меня не устроили). Был еще неплохой редактор такого плана Intype, но он умер. Jedit мне не понравился — тяжеловат, но интеграция плагинов сделана хорошо. EmEditor хорош, для простого текста.

PSV>В общем, интерфейс и управление средой — это отдельная немалая тема. И в вашем редакторе есть отличный функциональный потенциал составить достойную конкуренцию многим проектам, включая и ныне самый гламурно раскручиваемый (но, имхо, не на пустом месте) Sublime. Даже, в какой-то степени, и для эмакс: у вас есть возможность использовать разные шрифты и размер для текста, осталось добавить вывод картинок, эмуляцию кнопок, чекбоксов, таблиц, деревьев и пр., и можно реализовать принцип эмакса — со всем можно работать как с текстом, что дает огромным потенциал.

Нет — это не наш путь. См выше. Я предпочитаю бесшовное расширение существующего интерфейса, но не хочу уходить в текстовый режим. И картинки в тексте — тоже планирую. У меня есть поддержка скриптовых нативных диалогов (таблицы и дерева пока нет, но можно добавить), я думаю это для HippoEDIT перспективнее.

PSV>- несколько портит картину о лёгковестности вариант поставки с pdb, особенно неподготовленного человека. Я вроде в этой бете особых глюков/крашей не заметил. Может есть смысл сделать вариант сборки и без pdb, а уже постоянные пользователи, кто помогает в тестировании, смогут взять себе с pdb.

У меня выложено 6 версий инсталляторов: для 3х технологий, с pdb и без. Просто для тестирования я всегда даю ссылки на версии с pdb — при падении, редактор отсылает crash report, где в в дополнении к дампу лежит errorlog с callstack. Для коррекного формирования callstack на клиенте нужны pdb. Часто бывает у меня уже pdb нет, а callstack посмотреть можно.
Но при желании всегда можно скасать версию без pdb (убрать _pdb в конце файла). Ну и на сайте (не на форуме) везде версии без pdb.

PSV>- Я так понимаю, что нет возможности указывать длинные шорткаты из нескольких нажатий, вида "Ctrl-E, Ctrl-A". Жаль.

Есть. Можно задавать композитные шоткаты как "Ctrl-E, Ctrl-A". Но только двух компонентные. "Ctrl-E, Ctrl-A, B" — нельзя. Можно несколько шоткатов на команду. плюс шоткаты перекрываются языково или проекто специфичными.
Можно делать Alt + Menu Accelerators. Есть Command Hints (View->Command Hints).

PSV>- Не мешало бы иметь некие виртуальные шорткаты, типа каких-то Meta, например, "Ctrl-E, g h" -> "Ctrl-K, g h", т.е. Ctrl-E и Ctrl-K — одно и то же.

Не понял.

PSV> — Полезно иметь глобальные переназначения клавиш, типа Ctrl перебросил на CapsLock.

Ну не знаю. Можно, но пока никто не просил

PSV> В идеале, хотелось бы иметь в редакторе обработку клавиш на уровне scan-кодов, чтобы не влиял текущий язык (en|ru).

Да, это так Хотелось бы — пока нет. Себе запишу.

PSV>- нет глубокой настройки базовых операций. Например, кому-то нужно, чтобы перемещение по словам работало чуть иначе: нажал Ctrl+вправо и курсор прыгнул не в начало следующего слова, а на конец текущего слова. Или, например, когда постоянно жмёшь влево не нужен переход на верхнюю строку, когда уперлись в начало.

Ну да это можно — но опять, никто не просил. А усложнять без надобности — неблагодарное дело. Основной массе людей это будет не нужно, и не известно (в UI это конечно выносить не надо).

PSV>Или, например, мне удобно, когда курсор не доходит до самого конца/начала экрана, а за строчек 5 начинается прокрутка. Сейчас в редакторе вроде за 1 строку начинается прокрутка, но при этом есть какая-то задерганность на экране — выделение текущей строки прыгает туда-сюда. И сам индикатор курсора при работе в редакторе как-то бывает иногда задерганным, мельтешит в глазах.

Это настраиваемо — через XML. В UI нет. Чтоб меньше прыгал можно попробовать "Double rate on key repeat" -> Tools -> Options -> Formatting -> Smart Helpers.

PSV>- вроде заявлена фича для автоматического обрамления скобками, но как-то не до конца проработанная. Например, не всегда работают кавычки (скорее, это где-то настраивается, чем обрамлять).

Да это языково, контекстно зависимо.
PSV>Если я передумал обрамление и нажал undo, то отменяется одна скобка, а не две.
Это баг.
PSV>Или нажал "(", получил "()", затем нажал backspace, но удалил только левую скобку, без правой. Одним словом, посмотрите на Sublime, там это хорошо отработано.
Удаляет сразу две скобки, если стоять справа от (). Но да, можно сделать лучше.

PSV>- чуток бы поудобнее автокомплит. Например, когда вставляется в код функция неплохо курсор переносить во внутрь скобок, когда есть параметры, или за скобки, когда их нет.

Редактор не знает ничего о языке. Есть только схема (куча xml файлов в data folder) и динамический общий парсер, autocomplete основан на его результатах, разборе меток, шаблонов кода и статистики использования.
Функция, не функция — ему едино. Так что здесь нужно специализированное решение в виде плагина.

PSV>- также не заметил фактически сегодняшнего "стандарта" — сниппетов или шаблонов по мотивам TextMate, которые есть в том же Sublime. Весьма полезны.

Оно есть — называется Code Templates. Языково (синтакс) специфично. Можно поискать в Tools->Options.

PSV>- частенько во всяких хинтах, где выводится код, например, при подсказке списка параметров функции, рисуются квадратики. Это не убираются переводы строк: char 10 и 13.

Это баг. Если можно, пошлите пример воспроизведения. Никогда раньше не видел.

PSV>- заметил глюк: иногда после undo индикатор цвета слева в панели с текстом, что указывает на измененность строк, не сбрасывается, т.е. показывает, что строка изменена.

Скорее всего не все отменили. Посмотрите историю Undo (popup окно под кнопкой undo).

PSV>- там же слева, где номера строк, неплохо подсвечивать область вместе с выделением скобочек. т.е. когда выделяются парные скобки (или другие элементы) и они на разных строках, то слева светится индикатор, как это делает JEdit.

Да можно, но будет конфликтовать с подсветкой текущей области видимости. Я подумаю, может есть какой вариант, но большой надобности не вижу.

PSV>И само выделение парных элементов иногда лучше обрамлять рамочкой, вместо цвета или подчёркивания — так они лучше выделяются, особенно когда рядом есть другие фоновые цвета или подчёркивания.

Это поддерживается. Надо просто задать соответствующий аттрибут стиля активных элементов. Я пока не менял, потому как это подразумевает изменение схемы, а схемы у меня едины для всех версий. Не будет видно в старых версиях.
Стиль не виден в настройках но можно задать в XML.

PSV>И неплохо выделять синтаксическую область слева, по мотивам Эклипса.

Оно есть. Присмотритесь к Outlining. Show Current Scope. Можно сделать ярче при желании в настройках цветов.

PSV>Также неплохо слева выделять область для текущей строки, когда она в режиме wordwrap и виртуально расползается на несколько строк на экране, как это делает Sublime.

Не знаю. Можно конечно — не сложно. Но это видно и так если включить номера строк. Посмотрел, похоже в разреженном режиме строк здесь тоже баг. Надо рисочки для перенсенных линий не показывать. Но слева то индикатор все равно есть.

PSV>- Пробелы, концы строк, табы можно выделять через точечки, но не по средине строки, а внизу, как обычные точки, только дать им другие цвета, как это делает jedit. Тогда эти символы будут не бросаться в глаза, при этом можно включить их постоянный вывод и смотреть на них не только при выделении текста.

Ну их можно и так включить View->Editor->White Space + Trailing White Space (поискать в Options), и задать для них то цвет что хочешь (или увеличить прозрачность). Только надо обратить внимание на установки Contrast Ratio (options -> search "contrast"), они могут не позволить не контрастные сочетания.

PSV>- не хватает опции, чтобы концевые пробелы обрубались сразу по ходу дела, а не только при сохранении.

Ну не знаю. Плагин?

PSV>- не хватает опции, чтобы внутри выделения тоже рисовалась раскраска кода.

Оно есть, просто по умолчанию так. Просто в настройках стиля выделения надо установить прозрачный цвет текста.

PSV>- очень не хватает множественного выделения, как это сделано в jedit (лучший вариант) или в Sublime. Я так понимаю, что ввести его очень проблематично, ибо требуется переделка многого функционала, который работает с выделением. Для некоторых случаев можно реализовать режим для группового изменения, как это сделано в Lazarus, например: выделили блок, нажали клавишу или пиктограмму слева от текста, включился режим спец-редактирования, таб-ом выбрали нужное слово, редактируем и все такие же слова одинаково изменяются, нажили esc — закончили. Как это выглядит, можно глянуть здесь.

Да, не хватает. У меня запланировано. Но я думал лучшая имплементация у Sublime. У меня даже больше не проблема переделки функционала а проблема Usability: как начинать множественное выделение, клик с Ctrl зарезервирован под выделение слова (ну и вообще Ctrl везде связан с работой со словами). Вариант со спец режимом, я предпочитаю как дополнение, а не альтернативу.

PSV>- вроде для выделений есть режимы Reset/Restore, но как-то они не так работают. Посмотрите опять же на Sublime.

Ну не знаю. Режимом пользуются не часто, но нареканий не было. Я гляну.

PSV>И ещё по выделению. Вроде заявлен способ перемещения через выделение, когда, например, выделили блок, курсор на его правой границе, нажали влево — перелетели на его начало, но нажатие вверх почему то работает как обычно.

Не, вроде не заявлен Или я че-то что запрограммировал забыл

PSV>- у вас вроде неплохой набор функций вокруг буфера обмена. В JEdit-е есть ещё неплохая штука — он хранит историю удаленных элементов, которые не кидались в буфер обмена, и можно делать вставки оттуда.

Записал себе. Хотя в не убежден в надобности подобной функции. на крайняк можно сделать поиском через Undo больших, удаленных кусков. Чтоб новое хранилище не заводить.

PSV>Также в редакторах есть работа с буферами-регистрами по мотивам эмакса, но лично я уже отошёл от их использования. Они полезны для всяких макросов/скриптов, но если есть нормальный API, то и там можно на них забить.

Да, у меня уже в планах есть.

PSV>- глюк в окне закладок: после перегрузки редактора там появились какие-то пустые строки в начале списка. При нажатии "перейти" на закладке нет переключения на нужное окно с файлом. Также не хватает позиции столбца (кроме строки). В JEdit-е есть ещё удобный способ работы с именованными метками, но у вас есть Anchor, в принципе, наверно его достаточно.

С пустой строкой в начале списка — похоже на баг, но воспроизвести не смог. С переходом — это новый баг. Поправлю. Букмарки, базированны на линиях. Можно конечно добавить и колонку, но похоже народу это не надо.

PSV>Не хватает типовой функции выделения текста от Anchor до текущего положения курсора.

Оно есть. Edit->Selection->Select from Anchor.

PSV>- в редакторе весьма гибкий поиск, но вроде нет возможности искать/заменять многострочные выражения.

Поиск с регулярными выражениями. Просто вставьте многострочный текст в диалоге поиска Ctrl + F (не поддерживается в QuickSearch Bar -> Ctrl + Q).

PSV>В jedit-е есть классная штука: замена текста на результат работы макро-кода. Удобно, иногда избавляет от написания макроса или внешнего скрипта/утилиты.

Думаю это усложнение. Можно написать стандартный скрипт для всех.

PSV>- глюк в инкрементном поиске: жму F3 — переход на следующее найденное значение, жму Shift-F3 — инкрементный поиск сбрасывается и ищется пред. значение из обычного поиска.

Даже не помню как оно должно было быть Поправлю.

PSV>- не очень улобная работа с фолдингом. Нет понятия уровней, не ясно, можно ли делать произвольные свёртки.

Уровни не хотел — они засоряют UI. Хотя когда то в планах было.
Если произвольные свертки подразумевают, выделить мышкой произвольный кусок и свернуть — то пока нет, но запланировано.
Есть поддержка регионов — те можно для любого синтаксиса задавать области для свертки в тегах форматирования (в принципе в комментариях чтоб не тревожить компилятор).

PSV>Не хватает виртуального вырезания кода, т.е. временного отбрасывания лишнего, как механизм Narrow в JEdit.

Не уверен что оно надо. У меня есть другие идеи на этот счет, так что я скорее всего пойду в другом направлении.

PSV>- не понятно, как работать с буферами, или файлами: если делать split в окне, то там показывается только этот же файл, причём всегда синхронно (если слева-справа). Если расположить два MDI-окна рядом с одним и тем же файлом, то не ясно как синхронизировать при необходимости.

Синхронизации скролинга пока нет.

PSV>- в полноэкранном режиме редактор не перекрывает весь экран — видна виндовская панель задач. В Sublime есть ещё один приятный режим — Distraction Mode.

Distraction Mode — я не фанат. "видна виндовская панель задач" — это по дизайну. Можно конечно добавить кофигурационный флаг.

PSV>- не понял, как работают макросы. Скорее, чего-то не хватает в поставке. Я предполагаю, что будет задействован стандартный майкрософтский ActiveX для скриптинга (не помню как он обзывается), и скрипты можно будет ваять на JavaScript.

В HippoEDIT есть как макро последовательности, так и поддержка скриптинга на базе Active Scripting (см выше). Зачем надо было и то и другое здесь.

PSV>В общем, всего вспомнить уже не могу. Не стоит "принимать всё близко к сердцу", но может быть что-то полезное я указал.

И на том спасибо. Честно скажу — отвечаю уже 3й час

PSV>Также хотелось бы предложить для редактора такие фичи:

PSV>- список ошибок. Сейчас в редакторе ошибки светятся чёрточками справа от текстовой панели. Не мешало бы их вывести отдельным списком, да и внутри кода подчеркнуть при необходимости. Но, возможно есть проблема, что парсеры в редакторе не дают подробного описания ошибки и не объясняют, чем им "красное" место не нравится.
Да парсер не знает что он показывает Обычно это просто ошибки, определенные на основе схемы (не закрытые скобки, scopes и тд). Думаю что подсветка на Overview Bar достаточна. А детальные сообщения можно отдать внешним инструментам и плагинам.

PSV>Также полезен вывод ошибок при обработке результатов внешних тулсов (я пока не в курсе, как работает их запуск, примерно увидел, что чего-то есть).

Все выводиться в Output панели (можно иметь много).

PSV>- всякие разные списки своих заметок и определенных элементов, типа TODO-метки.

Да это запланировано. Как плагины. Тем более TODO из кода уже сейчас показываются на Overview bar.

PSV>- модные ныне minimap-ы. В основном, баловство, но иногда приятны, особенно когда можно чуть увеличить и видны всякие подчёркивания и выделения. Им не хватает какого-нибудь hint-а: под мышкой чтобы вылазило окошко с увеличенной информацией.

Ну может быть. Как плагин. Народ просит, но я пока не убежден

PSV>- diff-сравнивалки. B JEdit-е есть простой, но хороший diff. Удобно, когда сразу внутри редактора можно всё править по месту, пользуясь всеми его функциями, вместо запуска внешних тулсов.

Да. Запланировано.

PSV>В общем, я думаю, что Вы всякие хотелки знаете побольше меня.

Да — у меня их уже килограммы Но всегда полезен взгляд со стороны, для развития старых идей либо получение новых.

PSV>И есть пару вопросов:


PSV>- я не увидел фичи, как делать поиск по chm-файлам, о которой тут на форуме была речь;

Ну вам уже ответили Кроме как для языка, можно добавить еще проектную контекстную справку.
С поиском по нескольким chm по одной команде я уже добавил, но версию еще не обновил. Может на следующей неделе выложу — поправлю что вы зарепортили

PSV>- что может выводить Overview Bar (только чёрточки типа для ошибок ?);

Он много что показывает.

PSV>- что может вытворять Smart Navigate (Alt+G) ?

Зависит от контекста Скопировал из кода:
    // here we would try to understand what user wants
    // the result would depend from position where we are now
    // what can kind of result can be:
    // ------------------------------------------------------
    // N  | Object under cursor  | Result
    // 1  | Any type of brace    | go to pair brace
    // 2  | Scope Tag         | go to pair tag or other depending on modifier keys
    // 3  | name equal to label  | go to definition of the label                
    // 4  | File             | open file in IDE
    // 5  | Directory         | Open explorer with this directory as current
    // 6  | mail             | open default mail client with this address in To field
    // 7  | Url             | navigate to Url in IDE
    // 8  | executable         | execute file under cursor
    // 9  | FirstOccurrence         | first occurrence of the word in document/scope


Сейчас метки (метки, это части кода определенные по регулярным выражениям описанным в схеме, в частности может быть определение функции) ищуться и по открытым документам а не только в текущем. Дальше еще руки не дошли.

PSV>- можно пару слов про Nesting Level (хотя вроде понятно):

Уровень вложенности областей видимости. Дает некое представление о сложности куска кода.

PSV>Alternative Mode (ну вроде тоже)

Просто через строчная раскраска — удобна для работы с табличными данными

PSV>Virtual Space

Если хочется писать где хочешь, а не только в границах строки.

PSV>Inactive Code.

Используется в основном в документах со смешанными языками. "Тушит" неактивные синтаксисы. Например если вы редактируете скриптовую часть (позиция курсора) в HTML документе, раскраска HTML, CSS и прочее будет притушена.

PSV>Спасибо.

И вам большое спасибо за отзыв!
P.S: слава богу, это конец
Re[11]: Нормальный редактор для C++ - существует ли?
От: Kefir http://www.hippoedit.com
Дата: 29.03.12 00:31
Оценка:
Здравствуйте, alex_public, Вы писали:

_>У меня тут ещё вопрос возник. Я там заметил команду форматирования... А где-то есть настройки этого форматирования? ) Я что-то не нашёл. А ведь расстановка скобочек, переносов и пробелов — это же почти религиозный вопрос. ))) В том же Нетбинсе настройке форматирования посвящено окошко с приблизительно миллионом опций. )))


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

    <FORMAT>
      <DefaultKeywordCase>4</DefaultKeywordCase>
      <FormatWords>
        <FormatWord word="public" next_line="true" range_till_next="true" pos_sent_start="1"/>
        <FormatWord word="private" next_line="true" range_till_next="true" pos_sent_start="1"/>
        <FormatWord word="protected" next_line="true" range_till_next="true" pos_sent_start="1"/>
        <FormatWord word="if" next_line="true" range_sentence="true"/>
        <FormatWord word="else" next_line="true" range_sentence="true" range_till_next="true"/>
        <FormatWord word="while" next_line="true" range_sentence="true"/>
        <FormatWord word="case" next_line="true" range_till_next="true"/>
        <FormatWord word="default" next_line="true" range_till_next="true"/>
        <FormatWord word="for" next_line="true" range_sentence="true"/>
      </FormatWords>
    </FORMAT>


но потом — забил. Форматирование специфично для каждого синтаксиса, стандартные установки всех не устроят, надо будет вводить UI а сделать его подходящим для всех языков будет либо сложным, либо не удобным.
Сейчас форматирует базируясь на областях видимости (scopes), корректируя кое где базируясь на правилах из схем (см выше), и корректируя keyword case (где можно, для case sensitive языков нельзя) базируясь на Options->Formating->Case Correction.

Правильно будет писать свой плагин (скрипт или бинарный), перехватывать команду форматирования и делать как хошь.
Re[12]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 29.03.12 01:21
Оценка:
Здравствуйте, Kefir, Вы писали:

K>Не найдете


Ммм, жаль) Хотя для своих кодов я такую функцию никогда и не использовал. А вот чужие привести в привычный вид одним нажатием в Нетбинсе бывало удобно.

Да, а мне тут баг встретился — не хочет назначать ассоциации файлов. Ставлю галочки, нажимаю update — окно молча закрывается, но в проводнике никаких изменений... Это потому что бета или нет? )
Re[12]: Нормальный редактор для C++ - существует ли?
От: PSV100  
Дата: 29.03.12 17:51
Оценка:
Здравствуйте, Kefir, Вы писали:

Вступление: предлагаю сразу на "ты", на форумах так проще...

PSV>>В общем, всего вспомнить уже не могу. Не стоит "принимать всё близко к сердцу", но может быть что-то полезное я указал.

K>И на том спасибо. Честно скажу — отвечаю уже 3й час

Сорри, сам писал не меньше, благо было время. Сейчас постараюсь поменьше, да и сильно разогнаться не могу.

Почему так получилось. Я когда-то разрабатывал типа встроенной IDE для продукта (бизнес-система), поверх SynEdit для Delphi (имхо, ты в курсе). После этого у меня в голове постоянно мысли как сделать нормальный удобный редактор, и есть тайные желания забабахать свой проект (какой же нормальный программист не мечтает о своём языке программирования (и языки приходилось делать) и о своём редакторе ? ). А тут и тема форума такая привлекла, и ты "за живое" задел...

PSV>>Наконец-то посмотрел на ваш бегемотик. Кстати, прикольный логотип, чувствуется рука дизайнера.

K>Это жена Жена — художник (не дизайнер). По поводу иконки, если честно (ну и названия) — мнения не однозначные.

Ну почему же, у меня язык не поворачивается назвать "бегемот", как раз "бегемотик", и иконка в тему. Имхо, и "буржуи" вполне адекватны.

K>В общем о редакторе: это Windows решение, мульти-платформенность я не планирую. С одной стороны сейчас уже будет много работы с рефакторингом и тд, а с другой стороны работа под одну платформу дает свои преимущества по оптимизации и UI.

K>HippoEDIT это не emacs/vim альтернатива, и в принципе я не хочу сильно развиваться в эту сторону. Перетянуть пользователей emacs/vim на GUI [...]

Да, мульти-платформенность это конкретная проблема и большое западло для С++, как минимум, в рамках GUI для всех платформ. Ребята из Sublime явно мучаются...
Я прекрасно понимаю сущность твоего редактора, на кого он рассчитан, и полностью поддерживаю правильное для тебя направление. И отлично понимаю, что большинство проблем/фич, которые мы затронули, мало кому нужны из твоих имеющихся пользователей. Я раньше сам многого не знал/не понимал нафига всякое оно нужно. Ну, имхо, определиться в чём-то для себя, как хозяину дела, лишний раз не помешает, конкуренция ведь растёт и растёт...

Здесь я много говорил о JEdit, ибо его "вкурил", и о Sublime. Я не фанат ни всяких редакторов/IDE, ни языков программирования и пр. JEdit имеет GUI-направленность, но по духу близок к эмакс, с хорошим функционалом. В Sublime, как у потомка TextMate, хорошая функциональность для операций с текстом, что сейчас пытаются перетянуть во многие редакторы, включая и в вим/эмакс. К тому же, у него есть неплохие попытки найти компромисс между GUI/Text-направленностью, работа без модальных диалогов (что уже начинают применять и всякие IDE, типа QtCreator), конфигурация только на основе текста (кстати JSON вместо XML), и пр. Я думаю, что ты сам всё прекрасно знаешь и меня правильно понимаешь.

K>...Был еще неплохой редактор такого плана Intype, но он умер.

Есть ещё "E-Editor", но Sublime всех задавил.

K>...Jedit мне не понравился — тяжеловат, но интеграция плагинов сделана хорошо.

Да, те, кому больше NotePad++ и не нужно, на него и не посмотрят. Сама жаба всех отпугивает, особенно на фоне эклипсов/нетбинсов/идеи. Но работает он шустро, по умолчанию он настроен для работы с памятью чуть с запасом (но гораздо меньше всяких хромов с лисами). Я экспериментировал с настройками и заставлял бегать под несколькими десятками мб, и ничего, нормально, GC чаще срабатывает конечно, но тормозов нет, это не сервер приложений. Есть возможность запустить "сервер" как в эмаксе, файлы из фара по Alt-F4 открываются мгновенно. Причём огромные файлы (например, лог) даже с подсветкой JEdit открывает быстрее всех.
Кстати, я обратил внимание, что в его декларациях для всяких правил разбора далеко не всегда указываются регулярные выражения, в отличие от многих редакторов, где всё на сплошных регулярках. Например, указывают типа так: это ключевое слово должно быть только со значимого начала строки, т.е. игнорируем все ведущие пробелы и пр. Скорее всего, это тоже сказывается на перфомансе.

И ещё про JEdit. У него есть ряд концепций, которые могут нормально вписаться в твой редактор, тем более, как я понимаю, уже ведётся неслабый рефакторинг в проекте:

— да, у него хорошо сделана работа с плагинами и макросами, что-то удобнее и не нужно. Нормальная логика в организации меню: удобно, когда всё, что касается плагинов, находится в одном месте — пункт "Plugins" в главном меню (и Macros ещё), остальные пункты — типа стандартные функции редактора. Так проще и быстрее разобраться в функционале. Кому нужно, можно организовать изменяющееся меню в зависимости от текущего языка (или mode, т.е. синтаксиса), больше это актуально для popup-меню внутри панели с текстом. Я, например, добавил себе в главное меню (т.е. в самый верхний уровень) всяких своих пунктов — повыносил себе нужные мне действия — так быстрее было освоить состав функционала. Самим меню пользуюсь редко, и всякие тулбары с кнопками поотключал.

— есть виртуальное понятие команд: Action. У тебя вроде тоже есть какие-то команды. Но они у тебя не удобно показываются. Лучше CamelCase светить так: "Very Long Command", особенно в каких-то списках. Так делает Sublime. В jedit также есть возможность с ними работать в эмакс-стиле, т.е. как с лисп-идентификаторами: very-long-command.

— есть удобная запускалка команд. Не помешала бы она в дополнение к твоим всяким вылетающим хинтам по командам и клавишам (кстати, здесь CamelCase лучше из-за множества столбцов). Есть команд-бар: клацнул — вылезла панелька типа твоего Quick Search, набрал пару букв, можно tab клацнуть — автодополнение (но в jedit нормального дополнения здесь не хватает), короче ввёл команду или имя макроса (!) — enter и выполнили. А если набираешь не буквы, а цифры — значит будем повторять действия, например, ввел 16 и клацнул пробел — вставили 16 пробелов, ввел 18 и left — перелетели на 18 левее.
Это удобно и избавляет от многих шорткатов.

— есть возможность на основе XML создать свои простые диалоги, без программирования. Например, сделать форму для настройки параметров перед запуском какой-нибудь тулсы (это плагин Console). Я так понимаю, ты работаешь сейчас над этим вопросом.

Есть ещё моменты в плане удобного интерфейса, грамотной работы с буферами и пр., но, скорее всего, в твоем редакторе они уже неприменимы, как минимум, без тотальных переделок. Но это уже не будет "маленькая студия".

K>У меня выложено 6 версий инсталляторов: для 3х технологий, с pdb и без. Просто для тестирования я всегда даю ссылки на версии с pdb — при падении, редактор отсылает crash report, где в в дополнении к дампу лежит errorlog с callstack. Для коррекного формирования callstack на клиенте нужны pdb. Часто бывает у меня уже pdb нет, а callstack посмотреть можно.

K>Но при желании всегда можно скасать версию без pdb (убрать _pdb в конце файла). Ну и на сайте (не на форуме) везде версии без pdb.
Понятно, сайт я не смотрел. А с pdb понятно зачем, ведь незря CrashReport.exe притянут.

PSV>>- Я так понимаю, что нет возможности указывать длинные шорткаты из нескольких нажатий, вида "Ctrl-E, Ctrl-A". Жаль.

K>... Но только двух компонентные. "Ctrl-E, Ctrl-A, B" — нельзя.
Имхо, любителям VS большего и не нужно.

PSV>>- Не мешало бы иметь некие виртуальные шорткаты, типа каких-то Meta, например, "Ctrl-E, g h" -> "Ctrl-K, g h", т.е. Ctrl-E и Ctrl-K — одно и то же.

K>Не понял.
Сейчас в эмаксе бывшую клавишу Meta эмулируют обычно через Alt или Esc.
А я имел в виду следующее. Заводим виртуальную клавишу, скажем, Ext. Определяем, что ее можно эмулировать так: "Ctrl+E" или "Ctrl-K". Назначаем шорткаты для команд вида: "Ext a s", "Ext i p". Теперь я могу вызвать команду так: "Ctrl+E", затем "a" и "s" или "Ctrl+K, a, s" — запустится та же команда. Но мне удобнее Ctrl жать правой, а "E" и клавиши с ней рядом — левой. Когда нужно клацать в районе "K" — удобнее правой это делать, соответственно Ctrl в это время удобнее клацать левой. Поэтому, когда хочу, жму Ctrl+E плюс остальное, а хочу — жму Ctrl+K плюс это же остальное. Думаю, что понятно.
При этом такая схема вместе с шорткатами вида "Ctrl+E A S" позволяют создавать много шорткатов (причём с логикой) и удобных, вместо неудобных для меня Ctrl+Alt, или когда пальцы можно сломать от четырёх одновременных нажатий, а то и более.

PSV>> — Полезно иметь глобальные переназначения клавиш, типа Ctrl перебросил на CapsLock.

K>Ну не знаю. Можно, но пока никто не просил
Имхо, и не попросят. Так, например, любят делать любители вима: при их способе работы им удобнее не тянуться мизинцем к Ctrl, а клацать CapsLock. Часто и к Esc не тянутся, жмут Ctrl/CapsLock + [.
Если будет эмулятор вима (а ведь могут потребовать после Sublime ), может пригодиться.

PSV>> В идеале, хотелось бы иметь в редакторе обработку клавиш на уровне scan-кодов, чтобы не влиял текущий язык (en|ru).

K>Да, это так Хотелось бы — пока нет. Себе запишу.
Причём это болезнь у всех поголовно. Если Ctrl+A, Ctrl+C работает всегда, то как раз всякие "Ctrl+E A S" — хрен там. Причём теоретически проблема решаема даже на уровне кроссплатформы — ведь браузеры позволяют всяким JavaScript-ам работать на уровне scan-кодов. Но конечно, это конкретный гемор в реализации.

PSV>>- нет глубокой настройки базовых операций. Например, кому-то нужно, чтобы перемещение по словам работало чуть иначе: нажал Ctrl+вправо и курсор прыгнул не в начало следующего слова, а на конец текущего слова. Или, например, когда постоянно жмёшь влево не нужен переход на верхнюю строку, когда уперлись в начало.

K>Ну да это можно — но опять, никто не просил. А усложнять без надобности — неблагодарное дело. Основной массе людей это будет не нужно, и не известно (в UI это конечно выносить не надо).
Да, для твоего редактора так оно и есть.

K>Это настраиваемо — через XML. В UI нет. Чтоб меньше прыгал можно попробовать "Double rate on key repeat" -> Tools -> Options -> Formatting -> Smart Helpers.

Как-то не помогает, но это не важно.

PSV>>- вроде заявлена фича для автоматического обрамления скобками, но как-то не до конца проработанная. Например, не всегда работают кавычки (скорее, это где-то настраивается, чем обрамлять).

K>Да это языково, контекстно зависимо.
Я так и думал. Для txt можно вместе с одинарными кавычками добавить и двойные по умолчанию.

PSV>>Или нажал "(", получил "()", затем нажал backspace, но удалил только левую скобку, без правой. Одним словом, посмотрите на Sublime, там это хорошо отработано.

K>Удаляет сразу две скобки, если стоять справа от ().
Ух-ты, так даже сам о великий Sublime из коробки не делает

PSV>>- чуток бы поудобнее автокомплит. Например, когда вставляется в код функция неплохо курсор переносить во внутрь скобок, когда есть параметры, или за скобки, когда их нет.

K> Редактор не знает ничего о языке. Есть только схема (куча xml файлов в data folder) и динамический общий парсер, autocomplete основан на его результатах, разборе меток, шаблонов кода и статистики использования.
K>Функция, не функция — ему едино. Так что здесь нужно специализированное решение в виде плагина.
Можно попробовать просто вставлять курсор внутри скобок, если они есть. Хотя, это мелочи.

PSV>>- также не заметил фактически сегодняшнего "стандарта" — сниппетов или шаблонов по мотивам TextMate, которые есть в том же Sublime. Весьма полезны.

K>Оно есть — называется Code Templates. Языково (синтакс) специфично. Можно поискать в Tools->Options.
Я как-то не заметил, есть ли там позиции/переменные, где можно быстро прыгать по tab, групповой ввод и пр., т.е. всё то, что вытворяет Sublime, например. Реально удобно.

PSV>>- частенько во всяких хинтах, где выводится код, например, при подсказке списка параметров функции, рисуются квадратики. Это не убираются переводы строк: char 10 и 13.

K>Это баг. Если можно, пошлите пример воспроизведения. Никогда раньше не видел.
Я немного приврал: это не частенько. Специально воспроизвести не удалось. Я не помню, было ли это точно внутри самого редактора, т.е. из панели с текстом. Но было точно в каком-то модальном диалоге, возможно с какими-то настройками, там тоже вылазили хинты. Имхо, там это несмертельно, его может никто и не увидит толком.

PSV>>- заметил глюк: иногда после undo индикатор цвета слева в панели с текстом, что указывает на измененность строк, не сбрасывается, т.е. показывает, что строка изменена.

K>Скорее всего не все отменили. Посмотрите историю Undo (popup окно под кнопкой undo).
Возможно так оно и есть. Специально не получилось сделать.

Кстати, а историю undo я даже не заметил: ее нет в главном меню, а на всякие кнопки я по привычке уже не смотрю (хотя сам когда-то такие же undo-кнопки делал). Имхо, важный момент...

PSV>>- там же слева, где номера строк, неплохо подсвечивать область вместе с выделением скобочек. т.е. когда выделяются парные скобки (или другие элементы) и они на разных строках, то слева светится индикатор, как это делает JEdit.

K>Да можно, но будет конфликтовать с подсветкой текущей области видимости. Я подумаю, может есть какой вариант, но большой надобности не вижу.
Это действительно не супер-важно. Просто, наверное, я к нему привык. Иногда помогает, когда сразу не видно, где светится парный элемент.
А вообще-то, в jedit сделано так, что он там никому не мешает. У тебя, кстати, удобно хинт светится для подсказки конца блока.
И по поводу выделений слева. Конечно хорошо, когда можно много чего выделять. В jedit есть ещё фича для закладок выделять номера строк вместо иконок, а также выделять номера через определенные позиции, и пр. Но как всё удобно сделать — я сам не знаю.

PSV>>- Пробелы, концы строк, табы можно выделять через точечки, но не по средине строки, а внизу, как обычные точки, только дать им другие цвета, как это делает jedit. Тогда эти символы будут не бросаться в глаза, при этом можно включить их постоянный вывод и смотреть на них не только при выделении текста.

K>Ну их можно и так включить View->Editor->White Space + Trailing White Space (поискать в Options), и задать для них то цвет что хочешь (или увеличить прозрачность). Только надо обратить внимание на установки Contrast Ratio (options -> search "contrast"), они могут не позволить не контрастные сочетания.
Понятно. Только вот эти параграфы, или как эти символы обзываются для конца строк а-ля Word (это очень распространено), как-то громоздки. В jedit светится точечка в конце строк, обычно оранжевая по умолчанию, она и в глаза не бросается, и заметна, когда специально посмотришь.

PSV>>- не хватает опции, чтобы концевые пробелы обрубались сразу по ходу дела, а не только при сохранении.

K>Ну не знаю. Плагин?
Ну я не в курсе, плагин или нет. Многие IDE для паскаля, как Delphi, делают это всегда по умолчанию, и вроде всё нормально, удобно. А вот во многих редакторах/IDE, особенно тех, кто под впечатлением от VS, этого нет. Почему — хз. Но это неважно.

PSV>>- очень не хватает множественного выделения, как это сделано в jedit (лучший вариант) или в Sublime. Я так понимаю, что ввести его очень проблематично, ибо требуется переделка многого функционала, который работает с выделением. Для некоторых случаев можно реализовать режим для группового изменения, как это сделано в Lazarus, например: выделили блок, нажали клавишу или пиктограмму слева от текста, включился режим спец-редактирования, таб-ом выбрали нужное слово, редактируем и все такие же слова одинаково изменяются, нажили esc — закончили. Как это выглядит, можно глянуть здесь.

K>Да, не хватает. У меня запланировано. Но я думал лучшая имплементация у Sublime. У меня даже больше не проблема переделки функционала а проблема Usability: как начинать множественное выделение, клик с Ctrl зарезервирован под выделение слова (ну и вообще Ctrl везде связан с работой со словами). Вариант со спец режимом, я предпочитаю как дополнение, а не альтернативу.

Тут нужен некий симбиоз функционала от jedit и sublime. В jedit не хватает явных "курсорчиков", а в sublime — когда эти курсорчики бегают везде, где не нужно — тоже не фонтан. Имхо, можно как-то так: в редакторе должен быть всегда один курсор, когда ты зашёл курсором в область выделения, одного из остальных, сразу появляются курсорчики во всех выделениях, и начинают бегать синхронно. При этом, можно делать так: нажал home — все курсоры перелетели в начало каждого своего выделения, ещё раз home — уже работает как для основного курсора редактора, т.е. ты вылез из первичного выделения, куда ты пришёл раньше основным курсором, и все курсорчики пропали.
В общем, нужно брать одновременно jedit с sublime и "втыкать", что-то родить можно.

А в jedit сделано очень грамотно переключение выделений: "Ctrl-\" — включает/отключает множественное выделение, "Alt-\" — управляет выделением по столбцам. Не нужно жать всякие Alt-Shift-... Также почитай, как выделяется мышкой, и про её прочие функции (хотя я лично мышкой фактически не пользуюсь, даже не помню, как ее вертеть надо для выделения). Всё очень удобно.
Можно ещё переключатели добавить в строку статуса. Также реально полезно обычное выделение и множественное выделять разными цветами.

А для всяких спец режимов вокруг множественных выделений — нет ограничения для фантазий.

PSV>>- вроде для выделений есть режимы Reset/Restore, но как-то они не так работают. Посмотрите опять же на Sublime.

K>Ну не знаю. Режимом пользуются не часто, но нареканий не было. Я гляну.
Тут надо одновременно клацать и там и здесь. Пока заметил, что Reset в sublime не всегда сразу всё сбрасывает, как-то он удобнее.

PSV>>И ещё по выделению. Вроде заявлен способ перемещения через выделение, когда, например, выделили блок, курсор на его правой границе, нажали влево — перелетели на его начало, но нажатие вверх почему то работает как обычно.

K>Не, вроде не заявлен Или я че-то что запрограммировал забыл
А-а, понятно. Реально удобно использовать выделения не только для правки. Вот выше я давал шорткаты: "Ctrl+E a s" — выделить всё предложение, вместе с концевыми пробелами, или "Ctrl+K i p" — выделить содержательную часть параграфа, т.е. без хвостовых пробелов и пустых строк после него (вот кстати и логика в шорткатах: a — от "a object", i — от "in object", p — параграф и т.д., что упрощает запоминание), или "Ctrl+K i ' " — выделить всё внутри кавычек, но без самих кавычек. После выделения клацнул влево, вверх — перелетел в начало и т.д.

Кстати, в редакторе я не заметил выделений текстовых объектов. Полезны переходы типа вперёд/назад по параграфам и пр., выше по фолд-уровню и пр. Но, имхо, действительно это всё всем не нужно.

PSV>>- у вас вроде неплохой набор функций вокруг буфера обмена. В JEdit-е есть ещё неплохая штука — он хранит историю удаленных элементов, которые не кидались в буфер обмена, и можно делать вставки оттуда.

K>Записал себе. Хотя в не убежден в надобности подобной функции. на крайняк можно сделать поиском через Undo больших, удаленных кусков. Чтоб новое хранилище не заводить.
Да, в целом. Лично мне редко помогало, но иногда здорово. А в undo-истории нельзя выдрать кусок без восстановления всего предыдущего (хотя может и можно ?).

Кстати, вроде в виме очень крутое какое-то дерево для undo, но как с ним работать, я быстро не разобрался, а потом забил.

PSV>>Также в редакторах есть работа с буферами-регистрами по мотивам эмакса, но лично я уже отошёл от их использования. Они полезны для всяких макросов/скриптов, но если есть нормальный API, то и там можно на них забить.

K>Да, у меня уже в планах есть.
В jedit, кстати, всё сделано удобно.

PSV>>- глюк в окне закладок: после перегрузки редактора там появились какие-то пустые строки в начале списка. При нажатии "перейти" на закладке нет переключения на нужное окно с файлом. Также не хватает позиции столбца (кроме строки). В JEdit-е есть ещё удобный способ работы с именованными метками, но у вас есть Anchor, в принципе, наверно его достаточно.

K>С пустой строкой в начале списка — похоже на баг, но воспроизвести не смог. С переходом — это новый баг. Поправлю. Букмарки, базированны на линиях. Можно конечно добавить и колонку, но похоже народу это не надо.
Вот картинка:


Как получилось — я не заметил. Но вверху как таковых пустых строк нет, т.е. туда не попадёшь курсором или мышкой.

PSV>>- в редакторе весьма гибкий поиск, но вроде нет возможности искать/заменять многострочные выражения.

K>Поиск с регулярными выражениями. Просто вставьте многострочный текст в диалоге поиска Ctrl + F (не поддерживается в QuickSearch Bar -> Ctrl + Q).
Понятно. В том же jedit есть поля для многострочного ввода. В других редакторах иногда жмёшь Ctrl+Enter — и поле расширилось на две строки или более.

PSV>>В jedit-е есть классная штука: замена текста на результат работы макро-кода. Удобно, иногда избавляет от написания макроса или внешнего скрипта/утилиты.

K>Думаю это усложнение. Можно написать стандартный скрипт для всех.
Можно и скрипт. Но, например, можно задать какую-то регулярку, чего-то понаходить и конвертнуть в нижний регистр, указав в поиске для замены выражение "_0.toLowerCase()". Быстро, просто, удобно.

PSV>>- не очень улобная работа с фолдингом. Нет понятия уровней, не ясно, можно ли делать произвольные свёртки.

K>Уровни не хотел — они засоряют UI. Хотя когда то в планах было.
K>Если произвольные свертки подразумевают, выделить мышкой произвольный кусок и свернуть — то пока нет, но запланировано.
K>Есть поддержка регионов — те можно для любого синтаксиса задавать области для свертки в тегах форматирования (в принципе в комментариях чтоб не тревожить компилятор).
Я с фолдингом в последнее время тоже мало вожусь. Но частенько приятно, когда правила для фолдинга составлены грамотно, например, для своего DSL, и клацнул, скажем, сверни до 2-го уровня: получи список структур или функций, и т.п. В sublime есть свертки вида "сверни все атрибуты в тегах", тоже облегчает.

PSV>>Не хватает виртуального вырезания кода, т.е. временного отбрасывания лишнего, как механизм Narrow в JEdit.

K>Не уверен что оно надо. У меня есть другие идеи на этот счет, так что я скорее всего пойду в другом направлении.
Согласен, что этот Narrow не идеал. А какие идеи, если не секрет, конечно ?

PSV>>- в полноэкранном режиме редактор не перекрывает весь экран — видна виндовская панель задач. В Sublime есть ещё один приятный режим — Distraction Mode.

K>Distraction Mode — я не фанат. "видна виндовская панель задач" — это по дизайну. Можно конечно добавить кофигурационный флаг.
Да это всё неважно. Про Distraction Mode я просто подсказал, что есть такие варианты. А так, лично я просто привык, когда в полноэкранном режиме я больше ничего не вижу. Я раскрашиваю весь редактор в одни цвета, вечером — в тёмные, причём и текст и весь интерфейс в одном тоне — фактически вим/эмакс. Так просто приятнее работать.

PSV>>- не понял, как работают макросы. Скорее, чего-то не хватает в поставке. Я предполагаю, что будет задействован стандартный майкрософтский ActiveX для скриптинга (не помню как он обзывается), и скрипты можно будет ваять на JavaScript.

K>В HippoEDIT есть как макро последовательности, так и поддержка скриптинга на базе Active Scripting (см выше). Зачем надо было и то и другое здесь.
Ясно, а много языков реально востребовано ? Ведь усложняет процесс...
В jedit есть плагин, с которым можно програмлять на чём угодно, но как-то он особо никому не нужен...

PSV>>Также хотелось бы предложить для редактора такие фичи:

PSV>>- список ошибок. Сейчас в редакторе ошибки светятся чёрточками справа от текстовой панели. Не мешало бы их вывести отдельным списком, да и внутри кода подчеркнуть при необходимости. Но, возможно есть проблема, что парсеры в редакторе не дают подробного описания ошибки и не объясняют, чем им "красное" место не нравится.
K>Да парсер не знает что он показывает Обычно это просто ошибки, определенные на основе схемы (не закрытые скобки, scopes и тд). Думаю что подсветка на Overview Bar достаточна. А детальные сообщения можно отдать внешним инструментам и плагинам.
Я так и думал. А вот такие подсветки как в Overview Bar, как-то они, лично для меня, не очень информативны. Удобнее, когда есть явный их список и в коде все подсвечивается. Но в Jedit, да, работают спец-парсеры для этого.

PSV>>- модные ныне minimap-ы. В основном, баловство, но иногда приятны, особенно когда можно чуть увеличить и видны всякие подчёркивания и выделения. Им не хватает какого-нибудь hint-а: под мышкой чтобы вылазило окошко с увеличенной информацией.

K>Ну может быть. Как плагин. Народ просит, но я пока не убежден
Тут только одна мотивация для тебя — привлечение юзверов, многие просто кайфуют, и всё. Но работы до хрена...
Кстати, скачал сейчас NotePad++ по наводке alex_public, давненько я на него не смотрел. С этой хреновеной редактор падает постоянно...

PSV>>- diff-сравнивалки. B JEdit-е есть простой, но хороший diff. Удобно, когда сразу внутри редактора можно всё править по месту, пользуясь всеми его функциями, вместо запуска внешних тулсов.

K>Да. Запланировано.
Посмотри в jedit, реально удобнее и не нужно.

PSV>>- что может выводить Overview Bar (только чёрточки типа для ошибок ?);

K>Он много что показывает.
Понятно. Я думал, что может кроме чёрточек вдруг какие-то диаграммы вылазят, к примеру.

PSV>>- что может вытворять Smart Navigate (Alt+G) ?

K>Зависит от контекста Скопировал из кода: [...]
Ясно, подозревал, что это гибко настраивается.

PSV>>Virtual Space

K>Если хочется писать где хочешь, а не только в границах строки.
А можно в двух словах подробнее, или скриншот, если есть.


И ещё одно предложение. Для вима есть неплохие скрипты для быстрого перемещения по тексту в стиле вимператора для firefox, как EasyMotion. Но я бы сделал чуть по-другому. Подробно помечал бы слова внутри какой-то лексической области, например, функции, а в остальном помечал бы только начало функций — меньше шума, можно перейти как бы в 2 этапа, и быстро, если все удобно сделать.
В общем, думаю, что идея понятна.


P.S. Блин, опять простыня. Писал весь день в твоем редакторе, с "перерывами на работу". Сорри...
Re[13]: Нормальный редактор для C++ - существует ли?
От: Kefir http://www.hippoedit.com
Дата: 29.03.12 19:15
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Ммм, жаль) Хотя для своих кодов я такую функцию никогда и не использовал. А вот чужие привести в привычный вид одним нажатием в Нетбинсе бывало удобно.

Да жаль, но как я уже писал — здесь сделать что-то, что подходит всем будет очень сложно. Лучше найти какое нибудь специализированное решение — "с++ code beautifier" и подсоединить его как внешний инструмент или скрипт. Точно такое уже есть, и точно оно будет мощнее чем решение в HippoEDIT.

_>Да, а мне тут баг встретился — не хочет назначать ассоциации файлов. Ставлю галочки, нажимаю update — окно молча закрывается, но в проводнике никаких изменений... Это потому что бета или нет? )

Это баг. Потому что 1.50 бета. В 1.49 должно работать. Появился недавно, когда я делал рефакторинг для поддержки процесс UAC elevation. В обновлении исправлю. Спасибо.
Re[13]: Нормальный редактор для C++ - существует ли?
От: PSV100  
Дата: 30.03.12 11:17
Оценка:
Здравствуйте, PSV100, Вы писали:

PSV>[...]


В дополнение к предыдущему своему посту...

Я не заметил, что там не вылезла почему-то картинка с багом в окне закладок. Вот прямая ссылка:
http://xmages.net/i/3443320

Похоже, что баг на уровне GUI, что-то с самим контролом/виджетом.

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

— я писал про автокомплит, что неплохо бы курсор вставлять во внутрь скобок. Заметил, что редактор так и делает. Но видел, что так и не делает. Возможно от синтаксиса зависит. В общем, я не понял, это не очень важно, не обращай внимание.

Кстати, об автодополнении. У тебя хороший механизм с хинтами, в какой-то степени, киллер-фича редактора. Но некоторым нравится, например, как работает автокомплит в sublime, кто-то любит жать Esc/Shift-Esc для подстановки, кому-то нужно, чтобы при наборе автоматом добавлялись окончания как выделенный текст и т.д. Плюс настраиваемая игра с регистром: чувствительность при наборе, всегда ли преобразовывать как в источнике, всякий smart-поиск и т.п.
Имхо, в твоём случае, скорее, действительно не нужно распыляться на все варианты (да и здоровья не хватит одного для всего). Так, прежде всего, избалованы пользователи вим/эмакс (да и в JEdit есть всякие варианты), кто как хочет, так и делает. Но приятно...

И я не совсем въехал о всех источниках, откуда берутся данные. Но я особо не разбирался, просто скажу, что неплохо иметь возможность указывать вручную (не только в XML-описании грамматики) список элементов для каждого синтаксиса (например, список своих функций). Также удобно дополнять слова из соседних открытых буферов, но не из всех, а по определенным правилам. Но для этого нужна более удобная организация работы с буферами (как в том же jedit, или вим/эмакс).

Кстати, здесь на форуме ты говорил о мыслях прикрутить ctags — хорошая идея в рамках универсальности. Ещё можно подумать и о cscope и ей подобных — она ещё дает инфу и по зависимостям, кто кого вызывает. Иногда я видел, что для языков, которых не поддерживают эти штуки, составляют списки своих элементов (например, функций, всяких структур) в каком-то псевдо-синтаксисе а-ля С, чтобы ctags их проглотила.

— вроде не работает автокоррекция: светится хинт, но жмешь enter/tab, а эффекта нет.

И неплохо иметь автокоррекцию по пробелу, например, набрал "if", жмёшь пробел и получи "if (|)", т.е. добавили скобки и курсор прыгнул во внутрь. Причём список элементов для коррекции должен быть настраиваемый по синтаксисам.

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

И кстати, я не заметил команды временного запрета расширенной обработки клавиш. Например, клацнул Ctrl+Q, затем жмёшь пробел, а коррекция специально не срабатывает, вводится обычный пробел. Или Ctrl+Q, Enter — вводится просто перенос строки, без всякого выравнивания. Удобно, даже необходимо.

— я не разбирался подробно в правилах для синтаксисов в плане их разбора, выравниваний, отступов и т.д. Вроде всё неплохо. Но как-то не заметил всяких "помогалок", типа так: ввел "switch (some_var) {", клацнул enter — новая строка сдвинулась вправо, т.е. добавили пробелов или tab согласно отступу. Затем я набираю "case some_val:" — и строка сдвинулась влево, выровнялась по слову "switch". Т.е. в правилах можно указать, что а для "case" давай двигай мне обратно, причём тогда, когда я введу ":". В общем, посмотри на правила в JEdit, в чём-то они по шире, по удобнее (особенно в рамках всяких скобок). Но у тебя есть свои приятные фишки.
Кстати, в Sublime тоже очень гибкие правила, по наследству от TextMate, но я с ними не разбирался.
А "удобняшки" из коробки меньше нагибают писать макросы/плагины.

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

— в диалогах не хватает хотя бы каких-то хинтов, которые чуть больше подскажут по опции. Документация сейчас неполная, да и мало кто ее читает. Например, "Easy Line Copy" — я, к примеру, настраиваю у себя копировать всю строку, если нет выделения, но это та же опция или нет, не понятно. Т.е. пользователи могут просто не заметить какие-то киллер-фичи.
Кстати, в sublime, где вся настройка в текстовых файлах, приятно, когда рядом с параметром есть комментарий к нему.

Но я понимаю, какая это муторная работа всё расписать...

— Я упоминал ранее о механизме "Actions" в jedit, что напоминает команды в твоём редакторе. У тебя в редакторе есть понятие "событий" — при старте редактора, при закрытии последнего документа (может что-то ещё). Можно расширить этот виртуальный список событий и дать возможность указывать всякие команды, встроенные, от плагинов, макросы. Это уменьшит потребность в ручном "программировании" редактора. Такой механизм есть в jedit. Например, можно указать, что при переключении на буфер с таким-то синтаксисом чтобы вылазила такая-то панель, или сразу переключиться на другое состояние среды, т.е. перестроить положение буферов/док-панелей (по мотивам перспектив в эклипсе, только работает всё мгновенно, в отличие от эклипса). Или перед тем, как что-то сделать, всё посохранять, что нужно, и т.д. и т.п.

Но нужен ли такой механизм в редакторе а-ля VS — сомнительно...

— заметил неплохую фишку: хинты для констант с цветом. Для эмакса есть классная вещь: rainbow-mode. Включил эту mode (режим) — все цветовые константы в коде выделяются своим цветом — тоже удобно.

— раз уж об эмаксе вспомнили, то рекомендую взглянуть на его org-mode. Это мощный режим для ведения всяких своих документов, списков данных и пр., где нужна структурированность данных, рисование таблиц, переходы на документы и т.д. Функционал огромный, лично я всего не знаю и пользовался этим mode мало. Но это реальная киллер-фича. Многие эмаксом пользуются только из-за неё, не для программирования. Потом и его почтовиком начинают пользоваться, HTML пописывать, и пошло и поехало...
Есть некая эмуляция, естественно, для вима, для JEdit я видел небольшой наборчик макросов. А во многих простых редакторах (и их пользователи) даже и не знают о таком функционале. Конечно, реализовать весь потенциал весьма проблематично, но базовые вещи можно — это хорошее завлекалово юзеров.


И о киллер-фичах. Есть небольшая просьба, чтобы ты намекнул, на что можно обратить внимание, по твоему мнению (т.е. чем можешь похвастаться ), кроме того, что естественно бросается в глаза. Сайт смотрел, но там нет всех нюансов, типа того же Virtual Space (что за штука ?). Думаю, просьба понятна.

Вроде всё, что хотел сказать. Больше нет сил и времени.
Re[13]: Нормальный редактор для C++ - существует ли?
От: PSV100  
Дата: 30.03.12 11:45
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Здравствуйте, Kefir, Вы писали:


K>>Не найдете


_>Ммм, жаль) Хотя для своих кодов я такую функцию никогда и не использовал. А вот чужие привести в привычный вид одним нажатием в Нетбинсе бывало удобно.


Поддержу товарища Kefir. Лучше пройтись каким нибудь AStyle.

В JEdit есть плагин, который может форматировать. Имеет гибкие настройки (через GUI, кстати) вокруг стандартных правил для разбора синтаксиса, но для ряда популярных языков всё-равно задействованы специальные парсеры, и свои специфичные настройки. Хотя через его универсальный механизм мы можем неплохо форматнуть наш DSL, например, но толком этим никто не пользуется (просто потому, что особо не нужно). Но с другой стороны, если нет внешнего инструмента, который можно подогнать под свои нужды, такие плагины весьма полезны, в ряде редакторов их нет.
Re[13]: Нормальный редактор для C++ - существует ли?
От: Kefir http://www.hippoedit.com
Дата: 31.03.12 23:47
Оценка:
Здравствуйте, PSV100, Вы писали:

PSV>Почему так получилось. Я когда-то разрабатывал типа встроенной IDE для продукта (бизнес-система), поверх SynEdit для Delphi (имхо, ты в курсе). После этого у меня в голове постоянно мысли как сделать нормальный удобный редактор, и есть тайные желания забабахать свой проект (какой же нормальный программист не мечтает о своём языке программирования (и языки приходилось делать) и о своём редакторе ? ). А тут и тема форума такая привлекла, и ты "за живое" задел...

Да, конечно, SynEdit я знаю — на нем много чего сделано. Это альтернатива Scintilla для дельфистов. Но насколько я помню, он уже давно не развивался, в отличии от Scintilla.
Я когда начинал редактор писать (как редактор для некоего проприетарного языка одной большой компании), то честно говоря, Scintilla не нашел, поэтому пришлось писать все самому. Хотя база была, CrystalEdit исходник с CodeProject. Но сейчас от него мало что осталось. Может было бы тогда больше опыта, получилось бы лучше и быстрее, но его не было . Сейчас бы наверное писал мультиплатформенно, на Qt. Хранение данных бы по другому реализовал и тд.
А у тебя, если желание есть — присоединяйся. Много вариантов сотрудничества есть

PSV>Ну почему же, у меня язык не поворачивается назвать "бегемот", как раз "бегемотик", и иконка в тему. Имхо, и "буржуи" вполне адекватны.

Кто как. Один из примеров.

PSV>Здесь я много говорил о JEdit, ибо его "вкурил", и о Sublime. Я не фанат ни всяких редакторов/IDE, ни языков программирования и пр. JEdit имеет GUI-направленность, но по духу близок к эмакс, с хорошим функционалом. В Sublime, как у потомка TextMate, хорошая функциональность для операций с текстом, что сейчас пытаются перетянуть во многие редакторы, включая и в вим/эмакс. К тому же, у него есть неплохие попытки найти компромисс между GUI/Text-направленностью, работа без модальных диалогов (что уже начинают применять и всякие IDE, типа QtCreator), конфигурация только на основе текста (кстати JSON вместо XML), и пр. Я думаю, что ты сам всё прекрасно знаешь и меня правильно понимаешь.

Ну не знаю, тут дело, мне кажется не в модальных диалогах, а просто в общем удобстве. Если удобно, понятно и не перегружено — зашибись. А только текстовые установки — это тоже не очень хорошо для первичного освоения. Нет вспомогательных инструментов как то: выбор файлов, цветов, дат и тд; нельзя управлять связанными данными и многое другое. Текстовые установки просто проще для разработчика.
JSON или XML разницы нет. Просто когда я начинал json был не так распространен, а корпоративным был xml.

K>>...Был еще неплохой редактор такого плана Intype, но он умер.

PSV>Есть ещё "E-Editor", но Sublime всех задавил.
E-TextEditor похоже тоже "умер". Ушел в OpenSource и давно не обновлялся. Его уникальная фича, как раз была навороченная история undo с визуализацией ветвлений.

K>>...Jedit мне не понравился — тяжеловат, но интеграция плагинов сделана хорошо.

PSV>Да, те, кому больше NotePad++ и не нужно, на него и не посмотрят. Сама жаба всех отпугивает, особенно на фоне эклипсов/нетбинсов/идеи. Но работает он шустро, по умолчанию он настроен для работы с памятью чуть с запасом (но гораздо меньше всяких хромов с лисами). Я экспериментировал с настройками и заставлял бегать под несколькими десятками мб, и ничего, нормально, GC чаще срабатывает конечно, но тормозов нет, это не сервер приложений. Есть возможность запустить "сервер" как в эмаксе, файлы из фара по Alt-F4 открываются мгновенно. Причём огромные файлы (например, лог) даже с подсветкой JEdit открывает быстрее всех.
Поставил сейчас — попробовал. С настройками из коробки, он отказался открывать 170 мб лог и потом завис когда я открыл файл с очень длинной строкой (9мб). Это я думаю проблемы java. Я понимаю что для маленьких файлов он работает шустро, но я бы, как пользователь, хотел решение что работает для всех сценариев (понятно что в разумных пределах).

PSV>Кстати, я обратил внимание, что в его декларациях для всяких правил разбора далеко не всегда указываются регулярные выражения, в отличие от многих редакторов, где всё на сплошных регулярках. Например, указывают типа так: это ключевое слово должно быть только со значимого начала строки, т.е. игнорируем все ведущие пробелы и пр. Скорее всего, это тоже сказывается на перфомансе.

У меня регулярки сейчас используются только для поиска так называемых меток (асинхронно). Правила разбора / движок свой (работает в основном синхронно). Руглярные выражения были в 10 раз медленней, даже на тех же сценариях (пробовал boost). Хотя скорее всего придется вводить и их поддержку, потому как мои правила все же сильно ограниченны и не позволяют покрыть все случаи.

PSV>И ещё про JEdit. У него есть ряд концепций, которые могут нормально вписаться в твой редактор, тем более, как я понимаю, уже ведётся неслабый рефакторинг в проекте:

Рефакторинг ведется всегда Сейчас у меня процесс завершения 1.50. Остался один баг (но серьезный) с многострочным поиском и подключение онлайнового функционала. Потом релиз. Так что серьезные вещи я сейчас уже начинать не хочу. И так 1.50 уже делается 2 года.

PSV>- да, у него хорошо сделана работа с плагинами и макросами, что-то удобнее и не нужно. Нормальная логика в организации меню: удобно, когда всё, что касается плагинов, находится в одном месте — пункт "Plugins" в главном меню (и Macros ещё), остальные пункты — типа стандартные функции редактора. Так проще и быстрее разобраться в функционале. Кому нужно, можно организовать изменяющееся меню в зависимости от текущего языка (или mode, т.е. синтаксиса), больше это актуально для popup-меню внутри панели с текстом. Я, например, добавил себе в главное меню (т.е. в самый верхний уровень) всяких своих пунктов — повыносил себе нужные мне действия — так быстрее было освоить состав функционала. Самим меню пользуюсь редко, и всякие тулбары с кнопками поотключал.

Здесь у меня другое отношение. В HE у плагина те же права, что и встроенного функционала. Он может расширять функционал там где считает нужным, чтоб органически вписаться в существующую организацию. Может добавить пункт в меню редактирования, или добавить свое главное меню. Расширить стандартный тудбар или добавить свой. Переписать стандартную команду.
Это была основная идея бесшовной интеграции, так как я планирую и сам расширять функционал далее в виде плагинов.
Ограничение по положению есть только у внешних инструментов и контекстной помощи.

PSV>- есть виртуальное понятие команд: Action. У тебя вроде тоже есть какие-то команды. Но они у тебя не удобно показываются. Лучше CamelCase светить так: "Very Long Command", особенно в каких-то списках. Так делает Sublime. В jedit также есть возможность с ними работать в эмакс-стиле, т.е. как с лисп-идентификаторами: very-long-command.

Мне уйти от текущего формата будет уже тяжело, потому как так записаны шоткаты в пользовательских схемах. Да и большой проблемы в формате не вижу. Поиск будет работать и так и так. Может только если делать какие command bars.

PSV>- есть удобная запускалка команд. Не помешала бы она в дополнение к твоим всяким вылетающим хинтам по командам и клавишам (кстати, здесь CamelCase лучше из-за множества столбцов). Есть команд-бар: клацнул — вылезла панелька типа твоего Quick Search, набрал пару букв, можно tab клацнуть — автодополнение (но в jedit нормального дополнения здесь не хватает), короче ввёл команду или имя макроса (!) — enter и выполнили. А если набираешь не буквы, а цифры — значит будем повторять действия, например, ввел 16 и клацнул пробел — вставили 16 пробелов, ввел 18 и left — перелетели на 18 левее.

PSV>Это удобно и избавляет от многих шорткатов.
Да. У меня в планах есть. Про повторение еще не думал — запишу. В Sublime вроде неплохо было сделано.

PSV>- есть возможность на основе XML создать свои простые диалоги, без программирования. Например, сделать форму для настройки параметров перед запуском какой-нибудь тулсы (это плагин Console). Я так понимаю, ты работаешь сейчас над этим вопросом.

Да у меня очень неплохо сделано. С data binding, layout и поддержкой property pages. Там есть в примерах скриптов.

PSV>Сейчас в эмаксе бывшую клавишу Meta эмулируют обычно через Alt или Esc.

PSV>А я имел в виду следующее. Заводим виртуальную клавишу, скажем, Ext. Определяем, что ее можно эмулировать так: "Ctrl+E" или "Ctrl-K". Назначаем шорткаты для команд вида: "Ext a s", "Ext i p". Теперь я могу вызвать команду так: "Ctrl+E", затем "a" и "s" или "Ctrl+K, a, s" — запустится та же команда. Но мне удобнее Ctrl жать правой, а "E" и клавиши с ней рядом — левой. Когда нужно клацать в районе "K" — удобнее правой это делать, соответственно Ctrl в это время удобнее клацать левой. Поэтому, когда хочу, жму Ctrl+E плюс остальное, а хочу — жму Ctrl+K плюс это же остальное. Думаю, что понятно.
PSV>При этом такая схема вместе с шорткатами вида "Ctrl+E A S" позволяют создавать много шорткатов (причём с логикой) и удобных, вместо неудобных для меня Ctrl+Alt, или когда пальцы можно сломать от четырёх одновременных нажатий, а то и более.
Теперь понял. Себе записал. Может оно и удобно, но у меня пока еще не просили. Скорее всего сказывается специфика пользователей, которые про это и не знают. Для часто используемых назначают обычные шоткаты, а редкие вызывают из меню.

PSV>Имхо, и не попросят. Так, например, любят делать любители вима: при их способе работы им удобнее не тянуться мизинцем к Ctrl, а клацать CapsLock. Часто и к Esc не тянутся, жмут Ctrl/CapsLock + [.

PSV>Если будет эмулятор вима (а ведь могут потребовать после Sublime ), может пригодиться.
Ну тогда и буду разбираться, я не собираюсь имплементировать все мыслимые команды и стили ввода. Редактор — это отражение моего мировоззрения на удобный инструмент + продающие фичи. Не думаю что это будет продающая фича.
Работы может и немного, но редактор по любому усложнит.

PSV>>>- вроде заявлена фича для автоматического обрамления скобками, но как-то не до конца проработанная. Например, не всегда работают кавычки (скорее, это где-то настраивается, чем обрамлять).

K>>Да это языково, контекстно зависимо.
PSV>Я так и думал. Для txt можно вместе с одинарными кавычками добавить и двойные по умолчанию.
Да, я добавил в схему. Хотя, по моему как раз ' там быть не должно. Из-за всяких Mc'Donalds или can't. Но может я там че-то уж поправил (вроде как).

PSV>Можно попробовать просто вставлять курсор внутри скобок, если они есть. Хотя, это мелочи.

Да, в принципе там можно кое что улучшить. Хотя я чего-то сценария не понял. Попробовал — у меня во многих случаях вставляет (есть паттерн в схеме для вставки функций). Но не сработает, если функция была собрана как просто символ а не как метка или загруженная из словаря. Те где то в тексте есть foo() * 3; но определения foo в текущем файле нет. А потом, когда редактор подсказывает foo, он не знает что это функция, ну и () не вставляет.

K>>Оно есть — называется Code Templates. Языково (синтакс) специфично. Можно поискать в Tools->Options.

PSV>Я как-то не заметил, есть ли там позиции/переменные, где можно быстро прыгать по tab, групповой ввод и пр., т.е. всё то, что вытворяет Sublime, например. Реально удобно.
Да, позиций пока нет. Это у меня в планах. Но придет вместе с множественным выделением.

PSV>Кстати, а историю undo я даже не заметил: ее нет в главном меню, а на всякие кнопки я по привычке уже не смотрю (хотя сам когда-то такие же undo-кнопки делал). Имхо, важный момент...

Ну ее по любому надо выводить в popup окне, для множественной отмены. Такой тип представления, посмотрите продукты от MS. И у них тоже нет отдельного пункта меню вроде. Так что думаю Windows пользователи найдут если надо.

PSV>>>- там же слева, где номера строк, неплохо подсвечивать область вместе с выделением скобочек. т.е. когда выделяются парные скобки (или другие элементы) и они на разных строках, то слева светится индикатор, как это делает JEdit.

K>>Да можно, но будет конфликтовать с подсветкой текущей области видимости. Я подумаю, может есть какой вариант, но большой надобности не вижу.
PSV>Это действительно не супер-важно. Просто, наверное, я к нему привык. Иногда помогает, когда сразу не видно, где светится парный элемент.
PSV>А вообще-то, в jedit сделано так, что он там никому не мешает. У тебя, кстати, удобно хинт светится для подсказки конца блока.
PSV>И по поводу выделений слева. Конечно хорошо, когда можно много чего выделять. В jedit есть ещё фича для закладок выделять номера строк вместо иконок, а также выделять номера через определенные позиции, и пр. Но как всё удобно сделать — я сам не знаю.
А запустить jEdit после падения я так и не смог... Он постоянно загружает файл на котором упал и виснет. Даже с полным uninstall и re-install. (нашел таки потом его перспективу — удалил — загрузился, хотя осадочек остался ).
У меня там тоже было много конфигураций по выделению/отображению левой границы. Кое что настраивается xml флагами, кое что зависит от того какие области отключены, тогда информация с отключенных областей переносится на панель номеров строк.

PSV>>>- Пробелы, концы строк, табы можно выделять через точечки, но не по средине строки, а внизу, как обычные точки, только дать им другие цвета, как это делает jedit. Тогда эти символы будут не бросаться в глаза, при этом можно включить их постоянный вывод и смотреть на них не только при выделении текста.

K>>Ну их можно и так включить View->Editor->White Space + Trailing White Space (поискать в Options), и задать для них то цвет что хочешь (или увеличить прозрачность). Только надо обратить внимание на установки Contrast Ratio (options -> search "contrast"), они могут не позволить не контрастные сочетания.
PSV>Понятно. Только вот эти параграфы, или как эти символы обзываются для конца строк а-ля Word (это очень распространено), как-то громоздки. В jedit светится точечка в конце строк, обычно оранжевая по умолчанию, она и в глаза не бросается, и заметна, когда специально посмотришь.
Ну тут можно возразить, что тогда просто пробел тяжело отличить от конца строки. У меня так показывает если нет смешанных терминаторов строк (те все CRLF или LF и тд). Если терминаторы разные, то будет показываться конкретные значения для каждой строки (как Notepad++). Тоже гда то настраивается.

PSV>>>- не хватает опции, чтобы концевые пробелы обрубались сразу по ходу дела, а не только при сохранении.

K>>Ну не знаю. Плагин?
PSV>Ну я не в курсе, плагин или нет. Многие IDE для паскаля, как Delphi, делают это всегда по умолчанию, и вроде всё нормально, удобно. А вот во многих редакторах/IDE, особенно тех, кто под впечатлением от VS, этого нет. Почему — хз. Но это неважно.
Ну потому как, по мне это и не важно пока не сохранено. Для тех кого это волнует, есть режим Show trailing spaces. Но обрезать их все придется или плагином или внешним инструментом.

PSV>А в jedit сделано очень грамотно переключение выделений: "Ctrl-\" — включает/отключает множественное выделение, "Alt-\" — управляет выделением по столбцам. Не нужно жать всякие Alt-Shift-... Также почитай, как выделяется мышкой, и про её прочие функции (хотя я лично мышкой фактически не пользуюсь, даже не помню, как ее вертеть надо для выделения). Всё очень удобно.

PSV>Можно ещё переключатели добавить в строку статуса. Также реально полезно обычное выделение и множественное выделять разными цветами.
Да можно делать по переключателю. У меня уже это все есть (Edit->Selection->Stream/Column/Line) и статус бар индикатор есть.
Про цвет, да тоже можно.

PSV>>>И ещё по выделению. Вроде заявлен способ перемещения через выделение, когда, например, выделили блок, курсор на его правой границе, нажали влево — перелетели на его начало, но нажатие вверх почему то работает как обычно.

K>>Не, вроде не заявлен Или я че-то что запрограммировал забыл
PSV>А-а, понятно. Реально удобно использовать выделения не только для правки. Вот выше я давал шорткаты: "Ctrl+E a s" — выделить всё предложение, вместе с концевыми пробелами, или "Ctrl+K i p" — выделить содержательную часть параграфа, т.е. без хвостовых пробелов и пустых строк после него (вот кстати и логика в шорткатах: a — от "a object", i — от "in object", p — параграф и т.д., что упрощает запоминание), или "Ctrl+K i ' " — выделить всё внутри кавычек, но без самих кавычек. После выделения клацнул влево, вверх — перелетел в начало и т.д.
Попробуй Edit->Selection->Expand/Shrink с множественным повтором. Тебе понравится

PSV>Кстати, в редакторе я не заметил выделений текстовых объектов. Полезны переходы типа вперёд/назад по параграфам и пр., выше по фолд-уровню и пр. Но, имхо, действительно это всё всем не нужно.

Переход/выделение по параграфам есть. Просто не в меню. Поищите в списке команд Paragraph. Прыжки по блока тоже есть. Фильтруй в командах по Scope.

PSV>>>- у вас вроде неплохой набор функций вокруг буфера обмена. В JEdit-е есть ещё неплохая штука — он хранит историю удаленных элементов, которые не кидались в буфер обмена, и можно делать вставки оттуда.

K>>Записал себе. Хотя в не убежден в надобности подобной функции. на крайняк можно сделать поиском через Undo больших, удаленных кусков. Чтоб новое хранилище не заводить.
PSV>Да, в целом. Лично мне редко помогало, но иногда здорово. А в undo-истории нельзя выдрать кусок без восстановления всего предыдущего (хотя может и можно ?).
Можно. Но надо будет дополнительную команду писать, работы немного. Сейчас пока нельзя.

PSV>Кстати, вроде в виме очень крутое какое-то дерево для undo, но как с ним работать, я быстро не разобрался, а потом забил.

Есть и в e-texteditor — его киллер фича. Но если даже ты не разобрался — кому оно надо

K>>С пустой строкой в начале списка — похоже на баг, но воспроизвести не смог. С переходом — это новый баг. Поправлю. Букмарки, базированны на линиях. Можно конечно добавить и колонку, но похоже народу это не надо.

PSV>Вот картинка:
PSV>
Да, это баг контрола. Я думал уже пофиксил, но похоже опять всплыло. Чего-то переоптимизировал.

PSV>>>- в редакторе весьма гибкий поиск, но вроде нет возможности искать/заменять многострочные выражения.

K>>Поиск с регулярными выражениями. Просто вставьте многострочный текст в диалоге поиска Ctrl + F (не поддерживается в QuickSearch Bar -> Ctrl + Q).
PSV>Понятно. В том же jedit есть поля для многострочного ввода. В других редакторах иногда жмёшь Ctrl+Enter — и поле расширилось на две строки или более.
Проблема многострочных полей ввода — тяжело показать историю запросов (поэтому у меня поле ввода и сделано как выпадающий список). Но принципе можно использовать трюк с Ctrl+Enter и заменять контрол на месте. Запишу себе.

PSV>>>В jedit-е есть классная штука: замена текста на результат работы макро-кода. Удобно, иногда избавляет от написания макроса или внешнего скрипта/утилиты.

K>>Думаю это усложнение. Можно написать стандартный скрипт для всех.
PSV>Можно и скрипт. Но, например, можно задать какую-то регулярку, чего-то понаходить и конвертнуть в нижний регистр, указав в поиске для замены выражение "_0.toLowerCase()". Быстро, просто, удобно.
Да, но думается мне это не для всех С таким же успехом, можно и в command bar написать : findAll("dodo").toLowerCase(). Или чего-нибудь подобное. Усложнять диалог поиска, я думаю идея плохая. Он и так уже слишком сложен.

K>>Есть поддержка регионов — те можно для любого синтаксиса задавать области для свертки в тегах форматирования (в принципе в комментариях чтоб не тревожить компилятор).

PSV>Я с фолдингом в последнее время тоже мало вожусь. Но частенько приятно, когда правила для фолдинга составлены грамотно, например, для своего DSL, и клацнул, скажем, сверни до 2-го уровня: получи список структур или функций, и т.п. В sublime есть свертки вида "сверни все атрибуты в тегах", тоже облегчает.
Ну сверни все аттрибуты в тегах — это языко-специфично. не будет. Но есть Collapse to Definition, Collapse Comments, Collapse all same blocks... Посмотрите контекстное меню, Outlining. Зависит от синтаксиса.

PSV>>>Не хватает виртуального вырезания кода, т.е. временного отбрасывания лишнего, как механизм Narrow в JEdit.

K>>Не уверен что оно надо. У меня есть другие идеи на этот счет, так что я скорее всего пойду в другом направлении.
PSV>Согласен, что этот Narrow не идеал. А какие идеи, если не секрет, конечно ?
Идея навеяна CodeBubles. Я хочу уйти от понятия файла а перейти к представлениям которые отражают задачу. Такой себе составной документ из разных кусков кода этого или других документов отобранных по заданным пользователям тегам. С поддержкой редактирования конечно. Например чтобы определение и имлементация функции были в одном месте, или функции для работы с текстом, в независимости от реального расположения обрабатывались вместе.
Это + множественные выделения у меня приоритетные задачи на следующие версии.

K>>В HippoEDIT есть как макро последовательности, так и поддержка скриптинга на базе Active Scripting (см выше). Зачем надо было и то и другое здесь.

PSV>Ясно, а много языков реально востребовано ? Ведь усложняет процесс...
PSV>В jedit есть плагин, с которым можно програмлять на чём угодно, но как-то он особо никому не нужен...
ну по умолчанию у всех есть JS + Vbscript. А так есть движки для Perl, PHP, Lua.

PSV>>>Также хотелось бы предложить для редактора такие фичи:

PSV>>>- список ошибок. Сейчас в редакторе ошибки светятся чёрточками справа от текстовой панели. Не мешало бы их вывести отдельным списком, да и внутри кода подчеркнуть при необходимости. Но, возможно есть проблема, что парсеры в редакторе не дают подробного описания ошибки и не объясняют, чем им "красное" место не нравится.
K>>Да парсер не знает что он показывает Обычно это просто ошибки, определенные на основе схемы (не закрытые скобки, scopes и тд). Думаю что подсветка на Overview Bar достаточна. А детальные сообщения можно отдать внешним инструментам и плагинам.
PSV>Я так и думал. А вот такие подсветки как в Overview Bar, как-то они, лично для меня, не очень информативны. Удобнее, когда есть явный их список и в коде все подсвечивается. Но в Jedit, да, работают спец-парсеры для этого.
Ну да, для ошибок это не очень подходит. Тут лучше список. Но для показа количества совпадений слова в документе, измененных зон, вложенных синтаксисов или наличие туду — подходит нормально. Можно использовать как индикатор ошибок в логе, создав стиль подсвечивающий сообщение об ошибке и вывести его на Overview Bar.

PSV>>>- модные ныне minimap-ы. В основном, баловство, но иногда приятны, особенно когда можно чуть увеличить и видны всякие подчёркивания и выделения. Им не хватает какого-нибудь hint-а: под мышкой чтобы вылазило окошко с увеличенной информацией.

PSV>Тут только одна мотивация для тебя — привлечение юзверов, многие просто кайфуют, и всё. Но работы до хрена...
Там работы в принципе не много. У меня уже все разделено и подготовлено. Единственно могут быть проблемы с производительностью, если показывать большой документ. Но вроде там всего пару экранов вводиться так что может будет нормально.

PSV>>>- что может выводить Overview Bar (только чёрточки типа для ошибок ?);

K>>Он много что показывает.
PSV>Понятно. Я думал, что может кроме чёрточек вдруг какие-то диаграммы вылазят, к примеру.
Нет — диаграмм нет Это в принципе стандартный вид отображения (Resharper, Chrome).

PSV>>>Virtual Space

K>>Если хочется писать где хочешь, а не только в границах строки.
PSV>А можно в двух словах подробнее, или скриншот, если есть.
Скриншот тут сильно не поможет, но я нашел пару описаний в интернете, чтоб заново не писать: MSDN или StackOverflow. Искать в гугле "virtual spaces text editor".

PSV>И ещё одно предложение. Для вима есть неплохие скрипты для быстрого перемещения по тексту в стиле вимператора для firefox, как EasyMotion. Но я бы сделал чуть по-другому. Подробно помечал бы слова внутри какой-то лексической области, например, функции, а в остальном помечал бы только начало функций — меньше шума, можно перейти как бы в 2 этапа, и быстро, если все удобно сделать.

PSV>В общем, думаю, что идея понятна.
Да я посмотрел — идея в принципе интересная. Записал себе. Хотя не знаю как она приживется в GUI редакторе. Сначала думал: как же это они делают в большом документе. А потом понял, что это только для видимой области. В этом случае, твое предложение по переходу по функциям кажется мне не очень полезным — сколько будет функций за раз видно на экране? ну и у меня уже есть достаточно удобная навигация по меткам (функциям) с помощью Navigation Bar: Alt+M -> набрать часть имени функции -> Enter.

PSV>P.S. Блин, опять простыня. Писал весь день в твоем редакторе, с "перерывами на работу". Сорри...

И ты на этом не остановился
Re[14]: Нормальный редактор для C++ - существует ли?
От: Kefir http://www.hippoedit.com
Дата: 01.04.12 00:56
Оценка:
Здравствуйте, PSV100, Вы писали:

PSV>Кстати, об автодополнении. У тебя хороший механизм с хинтами, в какой-то степени, киллер-фича редактора. Но некоторым нравится, например, как работает автокомплит в sublime, кто-то любит жать Esc/Shift-Esc для подстановки, кому-то нужно, чтобы при наборе автоматом добавлялись окончания как выделенный текст и т.д. Плюс настраиваемая игра с регистром: чувствительность при наборе, всегда ли преобразовывать как в источнике, всякий smart-поиск и т.п.

smart-поиск я еще приделаю: поиск по акронимам, нечеткий поиск.
Case я уже сейчас отслеживаю, и вставляю так как было набрано или как определено в свойствах (если позволено для синтаксиса).
Подстановка in-place — мне не нравиться — это от бедности GUI функционала.

PSV>И я не совсем въехал о всех источниках, откуда берутся данные. Но я особо не разбирался, просто скажу, что неплохо иметь возможность указывать вручную (не только в XML-описании грамматики) список элементов для каждого синтаксиса (например, список своих функций). Также удобно дополнять слова из соседних открытых буферов, но не из всех, а по определенным правилам. Но для этого нужна более удобная организация работы с буферами (как в том же jedit, или вим/эмакс).

Про пользовательские списки у меня уже в планах есть, но пока не приоритетно. Дополнение из других буферов... Это все не точно, и может принести больше проблем чем пользы. Лучше уж тогда прикрутить ctags или разбирать инклуды для синтаксиса. Но можно будет посмотреть.

PSV>Кстати, здесь на форуме ты говорил о мыслях прикрутить ctags — хорошая идея в рамках универсальности. Ещё можно подумать и о cscope и ей подобных — она ещё дает инфу и по зависимостям, кто кого вызывает. Иногда я видел, что для языков, которых не поддерживают эти штуки, составляют списки своих элементов (например, функций, всяких структур) в каком-то псевдо-синтаксисе а-ля С, чтобы ctags их проглотила.

Да — согласен В планах есть.

PSV>- вроде не работает автокоррекция: светится хинт, но жмешь enter/tab, а эффекта нет.

Это баг. Тоже воспроизвел. Поправлю. В 1.49 работает.

PSV>И неплохо иметь автокоррекцию по пробелу, например, набрал "if", жмёшь пробел и получи "if (|)", т.е. добавили скобки и курсор прыгнул во внутрь. Причём список элементов для коррекции должен быть настраиваемый по синтаксисам.

Ну это CodeTemplates, они зависимы от синтаксиса. А чтоб сработало на пробел, надо его установить как шоткат для Edit.ExpandTemplate. Я помню я там делал специальный хак, чтоб оно потом не ело пробелы, если был набран не имя шаблона. Но я думаю, вариант с Code Hint + Enter если есть шаблон интуитивнее и более стабилен.

PSV>И коррекция помогает набирать всякие мудрёные символы из юникода, кому нужно (я не пользовался).

ну автокоррекция есть, можно добавить что хочешь. Или как темплейт.

PSV>И кстати, я не заметил команды временного запрета расширенной обработки клавиш. Например, клацнул Ctrl+Q, затем жмёшь пробел, а коррекция специально не срабатывает, вводится обычный пробел. Или Ctrl+Q, Enter — вводится просто перенос строки, без всякого выравнивания. Удобно, даже необходимо.

Ну это не запрет расширенной обработки клавиш, но запрет форматирования, в случае HE. Да, можно сделать. Тем более у меня такой режим уже есть, но не виден в UI. Он активируется при записи макросов.

PSV>- я не разбирался подробно в правилах для синтаксисов в плане их разбора, выравниваний, отступов и т.д. Вроде всё неплохо. Но как-то не заметил всяких "помогалок", типа так: ввел "switch (some_var) {", клацнул enter — новая строка сдвинулась вправо, т.е. добавили пробелов или tab согласно отступу. Затем я набираю "case some_val:" — и строка сдвинулась влево, выровнялась по слову "switch". Т.е. в правилах можно указать, что а для "case" давай двигай мне обратно, причём тогда, когда я введу ":". В общем, посмотри на правила в JEdit, в чём-то они по шире, по удобнее (особенно в рамках всяких скобок). Но у тебя есть свои приятные фишки.

PSV>Кстати, в Sublime тоже очень гибкие правила, по наследству от TextMate, но я с ними не разбирался.
PSV>А "удобняшки" из коробки меньше нагибают писать макросы/плагины.
Ну у меня много чего есть, в плане автоматических отступов или положения табов, но конкретно уменьшения отступа по : для с++ нет. Есть уменьшение отступа по закрытию scope ( } ). О расширенном варианте с : я конечно думал, но решил пока не делать (в планах есть) — мне нужно универсальный движок, с поддержкой любы синтаксисов, а сделать его быстро не получиться. Но скорее всего буду делать базируясь на правилах описанных в регулярных выражениях.

PSV>- не хватает в GUI для настроек синтаксиса пары важных элементов: указание символов для разделения слов, расширения файлов для синтаксиса, какими символами (скобками, кавычками, и пр.) автообрамлять текст и остальные ключевые элементы, которые реально могут потребоваться для настройки под себя.

Расширения есть. Options->Synatx Settings->Syntax->Miscalenious->File Pattern. Остального в UI не планирую. Под себя проще настроить схему как файл . Скопировав, или наследуясь от стандартной.

PSV>- в диалогах не хватает хотя бы каких-то хинтов, которые чуть больше подскажут по опции. Документация сейчас неполная, да и мало кто ее читает. Например, "Easy Line Copy" — я, к примеру, настраиваю у себя копировать всю строку, если нет выделения, но это та же опция или нет, не понятно. Т.е. пользователи могут просто не заметить какие-то киллер-фичи.

PSV>Кстати, в sublime, где вся настройка в текстовых файлах, приятно, когда рядом с параметром есть комментарий к нему.
Плохо искал. Символ вопроса (?) в системном меню диалога и клик на интересующий контрол или Ctrl+F1.

PSV>- Я упоминал ранее о механизме "Actions" в jedit, что напоминает команды в твоём редакторе. У тебя в редакторе есть понятие "событий" — при старте редактора, при закрытии последнего документа (может что-то ещё). Можно расширить этот виртуальный список событий и дать возможность указывать всякие команды, встроенные, от плагинов, макросы. Это уменьшит потребность в ручном "программировании" редактора. Такой механизм есть в jedit. Например, можно указать, что при переключении на буфер с таким-то синтаксисом чтобы вылазила такая-то панель, или сразу переключиться на другое состояние среды, т.е. перестроить положение буферов/док-панелей (по мотивам перспектив в эклипсе, только работает всё мгновенно, в отличие от эклипса). Или перед тем, как что-то сделать, всё посохранять, что нужно, и т.д. и т.п.

Я думаю проще все же написать скрипт. Все варианты и комбинации все равно не учтешь. Плюс проблема прикрепления нескольких комманд. События в HippoEDIT — это артефакт Надо бы их убрать, но у меня пока что на них кое что завязано.

PSV>- заметил неплохую фишку: хинты для констант с цветом. Для эмакса есть классная вещь: rainbow-mode. Включил эту mode (режим) — все цветовые константы в коде выделяются своим цветом — тоже удобно.

Да, у меня уже есть в идеях, от одного фаната емакс. Там же отображением стилем для bold/italic и тд. Но интересно, что будет если цвет совпадает с цветом фона ну и у меня еще поправляется контрастность для цвета текста, так что может быть точного совпадения.

PSV>- раз уж об эмаксе вспомнили, то рекомендую взглянуть на его org-mode. Это мощный режим для ведения всяких своих документов, списков данных и пр., где нужна структурированность данных, рисование таблиц, переходы на документы и т.д. Функционал огромный, лично я всего не знаю и пользовался этим mode мало. Но это реальная киллер-фича. Многие эмаксом пользуются только из-за неё, не для программирования. Потом и его почтовиком начинают пользоваться, HTML пописывать, и пошло и поехало...

PSV>Есть некая эмуляция, естественно, для вима, для JEdit я видел небольшой наборчик макросов. А во многих простых редакторах (и их пользователи) даже и не знают о таком функционале. Конечно, реализовать весь потенциал весьма проблематично, но базовые вещи можно — это хорошее завлекалово юзеров.
Нет Редактор, это редактор. А органайзер — это органайзер Те кому нужен органайзер — купят специализированный продукт. А другие будут пользоваться бесплатным емакс.

PSV>И о киллер-фичах. Есть небольшая просьба, чтобы ты намекнул, на что можно обратить внимание, по твоему мнению (т.е. чем можешь похвастаться ), кроме того, что естественно бросается в глаза. Сайт смотрел, но там нет всех нюансов, типа того же Virtual Space (что за штука ?). Думаю, просьба понятна.

Фиг его знает. Фич много уже сделано за все время. Про Virtual Space я уже тебе написал.
Можешь глянуть новое, что появилось в 1.50:
— Virtual Folders в проекте (динамические фильтры на файловую систему)
— colored indent guides / braces. Ну видел, вложение скобок (разных) отражается цветом. Попробуй это (((((((((((()))))))))).
— Еще могут быть интересны аннотации закрытия блоков (Options->Editor->Display). Надо смотреть на больших функциях.
— Scope exits. Сделано на метках, наверное видел как помечаются return/break.
— Организацию диалога поиска Ctrl+F и Find All результаты.
— Произвольные выделения текста (на тулбаре). Сохраняются между сессиями.
— Smart Highlight.
— тут в принципе можно посмотреть список http://forum.hippoedit.com/beta-version-test/alpha-1-50/

PSV>Вроде всё, что хотел сказать. Больше нет сил и времени.

Не поверишь Отпишись в личку: можно будет поговорить/переписываться по skype или email. Так возможно будет быстрее.
А то как то здесь наши обсуждения как оффтопик выходят.
Re[10]: Нормальный редактор для C++ - существует ли?
От: _NN_ www.nemerleweb.com
Дата: 02.04.12 11:38
Оценка:
Здравствуйте, Аноним, Вы писали:

<skip/>

http://www.wholetomato.com/forum/forum.asp?FORUM_ID=13
Вы им напишите об этом, они и исправят.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[14]: Нормальный редактор для C++ - существует ли?
От: PSV100  
Дата: 03.04.12 13:05
Оценка:
Здравствуйте, Kefir, Вы писали:

K>Да, конечно, SynEdit я знаю — на нем много чего сделано. Это альтернатива Scintilla для дельфистов. Но насколько я помню, он уже давно не развивался, в отличии от Scintilla.

Да, в целом сам проект SynEdit фактически не развивают (но я его давно смотрел), есть всякие альтернативные его ветки. А так, кому нужно, в основном, берут его основу и правят не слабо под свои потребности.

K>А у тебя, если желание есть — присоединяйся. Много вариантов сотрудничества есть

Спасибо, но пока возможностей нет, не хватит ресурсов. Но всё может быть, вдруг...

PSV>>Ну почему же, у меня язык не поворачивается назвать "бегемот", как раз "бегемотик", и иконка в тему. Имхо, и "буржуи" вполне адекватны.

K>Кто как. Один из примеров.
М-да ..., идиотская тяга к животным в названиях у них прослеживается давно. Но, имхо, главное не встрять с вопросами расовой проблемы, типа не назвать каким-нибудь NegroEdit (типа как Sublime, где темная тема по умолчанию)

K>Ну не знаю, тут дело, мне кажется не в модальных диалогах, а просто в общем удобстве. Если удобно, понятно и не перегружено — зашибись. А только текстовые установки — это тоже не очень хорошо для первичного освоения. Нет вспомогательных инструментов как то: выбор файлов, цветов, дат и тд; нельзя управлять связанными данными и многое другое. Текстовые установки просто проще для разработчика.

K>JSON или XML разницы нет. Просто когда я начинал json был не так распространен, а корпоративным был xml.
Соглашусь. Кстати, для JEdit есть всякие плагины/макросы, где делают быстрый выбор/открытые файлов и пр. по мотивам Sublime/TextMate, и, в основном, через модальные окна — удобно, и вписывается в архитектуру редактора.
А XML и сейчас никуда не делся. Хоть и JSON легче воспринимается, но в том же jedit есть универсальный парсер для XML/HTML, который неплохо помогает при вводе, учитывает схемы и пр., фактически на уровне взрослых IDE, чего нет при JSON. И в целом, его система SideKick — для своих парсеров и всего связанного с ними функционала — весьма приятна, некий маленький Эклипс, но полегче и попроще.

K>Поставил сейчас — попробовал. С настройками из коробки, он отказался открывать 170 мб лог и потом завис когда я открыл файл с очень длинной строкой (9мб). Это я думаю проблемы java. Я понимаю что для маленьких файлов он работает шустро, но я бы, как пользователь, хотел решение что работает для всех сценариев (понятно что в разумных пределах).

Я jedit "мучал" уже давненько, перед использованием, и не помню уровень "экстрима". Но тогда я заметил, что с большими файлами он работает по-шустрее, чем вим/эмакс и редакторы поверх scintilla, типа NP++, Scite. А недостатки у него есть, и как раз длинные строки это его болезнь. Он также раздражающе тормозит в режиме виртуального wrap, когда строки переносятся на экране, поэтому я его в таком режиме не гоняю, что досадно. Но это не проблемы Java, такова его реализация (хотя, скорее всего, некоторые стандартные классы Java сыграли своё кривое дело). А в остальной обычной работе он вполне нормальный, но не без грехов, к сожалению.

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

А сам механизм множественного выделения, имхо, лучше делать по мотивам sublime, но добавить ручное переключение вида выделений, как в jedit, и плюс возможность, как в нём же, делать выделения и через клавиатуру, не только мышь + Ctrl. И, вообще-то, нужно всё-таки подумать по поводу того, разрешить ли "курсорам" бегать везде, или нет.
И функции мыши в jedit вроде неплохи, не только для выделений (лично я их мало использую).

А так, меня JEdit привлёк как лучшая альтернатива для вим/эмакс, не всегда удобно/возможно их использовать. Идеология и функционал jedit похожи на эмакс (местами он и удобнее, но по масштабам функционала, конечно, не дотягивает до эмакс), хорошо проработан интерфейс (несмотря на обманчивую убогость, которая многим кажется с первого взгляда), позволяет реально обходиться без мыши, но не всегда это удобно в нём. Но и ряда вещей ему не хватает, есть и проблемы. Идеального ничего нет, "своей мечты" так и не нашёл.

K>У меня регулярки сейчас используются только для поиска так называемых меток (асинхронно). Правила разбора / движок свой (работает в основном синхронно). Руглярные выражения были в 10 раз медленней, даже на тех же сценариях (пробовал boost). Хотя скорее всего придется вводить и их поддержку, потому как мои правила все же сильно ограниченны и не позволяют покрыть все случаи.

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

K>Здесь у меня другое отношение. В HE у плагина те же права, что и встроенного функционала. Он может расширять функционал там где считает нужным, чтоб органически вписаться в существующую организацию. Может добавить пункт в меню редактирования, или добавить свое главное меню. Расширить стандартный тудбар или добавить свой. Переписать стандартную команду.

K>Это была основная идея бесшовной интеграции, так как я планирую и сам расширять функционал далее в виде плагинов.
K>Ограничение по положению есть только у внешних инструментов и контекстной помощи.
Вроде, логика вполне адекватна. Для макросов, похоже, планируется организация меню по типу jedit, тут нужно не забыть о возможности своей группировки, т.е. о своих папках/каталогах.

PSV>>- есть виртуальное понятие команд: Action. У тебя вроде тоже есть какие-то команды. Но они у тебя не удобно показываются. Лучше CamelCase светить так: "Very Long Command", особенно в каких-то списках. Так делает Sublime. В jedit также есть возможность с ними работать в эмакс-стиле, т.е. как с лисп-идентификаторами: very-long-command.

K>Мне уйти от текущего формата будет уже тяжело, потому как так записаны шоткаты в пользовательских схемах. Да и большой проблемы в формате не вижу. Поиск будет работать и так и так. Может только если делать какие command bars.
Да-да, удобный всякий command-bar очень важный элемент, там нужно очень комфортное быстрое восприятие.

K>А запустить jEdit после падения я так и не смог... Он постоянно загружает файл на котором упал и виснет. Даже с полным uninstall и re-install. (нашел таки потом его перспективу — удалил — загрузился, хотя осадочек остался ).

Да, jedit не без грехов. А его "перспектива" настраивается, где искать, чего открывать и т.д. (в т.ч и через другие плагины, и, вообще, без плагинов из коробки он от блокнота не далеко ушёл).

K>У меня там тоже было много конфигураций по выделению/отображению левой границы. Кое что настраивается xml флагами, кое что зависит от того какие области отключены, тогда информация с отключенных областей переносится на панель номеров строк.

Ага, реально много чего, я пока не уяснил всего. А этот индикатор положений парных элементов в jedit реальная полезняшка, причём эта большая типа скобка "[" никому не мешает, и гармонично смотрится с выделением элементов через рамки (особено, если элемент не скобка, а большой, даже не на одну строку, например, парный XML-тэг).

PSV>>>>- Пробелы, концы строк, табы можно выделять через точечки, но не по средине строки, а внизу, как обычные точки, только дать им другие цвета, как это делает jedit. Тогда эти символы будут не бросаться в глаза, при этом можно включить их постоянный вывод и смотреть на них не только при выделении текста.

K>>>Ну их можно и так включить View->Editor->White Space + Trailing White Space (поискать в Options), и задать для них то цвет что хочешь (или увеличить прозрачность). Только надо обратить внимание на установки Contrast Ratio (options -> search "contrast"), они могут не позволить не контрастные сочетания.
PSV>>Понятно. Только вот эти параграфы, или как эти символы обзываются для конца строк а-ля Word (это очень распространено), как-то громоздки. В jedit светится точечка в конце строк, обычно оранжевая по умолчанию, она и в глаза не бросается, и заметна, когда специально посмотришь.
K>Ну тут можно возразить, что тогда просто пробел тяжело отличить от конца строки. У меня так показывает если нет смешанных терминаторов строк (те все CRLF или LF и тд). Если терминаторы разные, то будет показываться конкретные значения для каждой строки (как Notepad++). Тоже гда то настраивается.
Ясно. Могу ещё "поприставать" — удобна гибкая настройка, например, отображать только концевые пробелы, светить только табуляцию, или когда в исходнике есть помесь и табов и пробелов, то светить все ведущие начальные символы (чтобы различать, где пробелы, а где табы) и все табы (чтобы видеть, что внутри строк натыкали).
Но это, имхо, опять для эмаксеров/вимоводов. И имхо, у тебя тоже наверняка чего-то такое есть, я со всем ещё не разобрался.

K>Попробуй Edit->Selection->Expand/Shrink с множественным повтором. Тебе понравится .

Ага, неплохо. Как раз тогда режимы Selection — Reset/Restore работают "в тему".

PSV>Кстати, вроде в виме очень крутое какое-то дерево для undo, но как с ним работать, я быстро не разобрался, а потом забил.

K>Есть и в e-texteditor — его киллер фича. Но если даже ты не разобрался — кому оно надо.
+1. В виме, конечно, без поллитра во многом не разберешься. А так, я только сейчас в процессе "разбора полётов" заметил, что в JEdit нет истории undo, и в sublime вроде тоже. А вот "Paste Previous", "Paste Deleted" — реально используемые вещи.

PSV>>>>В jedit-е есть классная штука: замена текста на результат работы макро-кода. Удобно, иногда избавляет от написания макроса или внешнего скрипта/утилиты.

K>>>Думаю это усложнение. Можно написать стандартный скрипт для всех.
PSV>>Можно и скрипт. Но, например, можно задать какую-то регулярку, чего-то понаходить и конвертнуть в нижний регистр, указав в поиске для замены выражение "_0.toLowerCase()". Быстро, просто, удобно.
K>Да, но думается мне это не для всех С таким же успехом, можно и в command bar написать : findAll("dodo").toLowerCase(). Или чего-нибудь подобное. Усложнять диалог поиска, я думаю идея плохая. Он и так уже слишком сложен.
Ну, если планируется хороший "commnad bar" или быстрая консоль, то это в любом случае здорово, и для такого поиска тоже.

K>Ну сверни все аттрибуты в тегах — это языко-специфично. не будет. Но есть Collapse to Definition, Collapse Comments, Collapse all same blocks... Посмотрите контекстное меню, Outlining. Зависит от синтаксиса.

Ага, соглашусь. В принципе, тут и явные уровни фолдинга можно игнорировать. Они помогают, когда правила для фолдинга составлены удобно, или, например, когда есть структурное оформление кода — на отступах (как питон), или символы "{{{" — "}}}" (фактически, стандарт в виме/эмаксе/jedit). Вот в jedit пишут CHANGES.txt с фолдингом для последнего случая: клацнул сверни до 1-го уровня — получил список всех версий, клацнул 2-й уровень — раскрыл чуть подробнее: небольшой комментарий к версии плюс разделы "Bug Fixes", "API Changes" и пр., далее ещё вложения и т.п. Для таких случаев не нужны языково-специфичные настройки и вполне универсальный инструмент эти уровни фолдинга, причём удобнее, чем какой-то CodeBrowser в виде дерева, как во многих IDE.

Кстати, удобна такая штука: можно прямо в файле в начале или в конце писать подсказки для редактора по поводу всяких настроек, как в том же примере с CHANGES.txt. Весьма распространено во многих редакторах. Имхо, в HE тоже есть, вероятно.

K>Идея навеяна CodeBubles. Я хочу уйти от понятия файла а перейти к представлениям которые отражают задачу. Такой себе составной документ из разных кусков кода этого или других документов отобранных по заданным пользователям тегам. С поддержкой редактирования конечно. Например чтобы определение и имлементация функции были в одном месте, или функции для работы с текстом, в независимости от реального расположения обрабатывались вместе.

K>Это + множественные выделения у меня приоритетные задачи на следующие версии.
У меня тоже летали подобные мысли. К этому ещё нужно добавить, как бы, некие форматы, или шаблоны ввода. Ну, например, вводим мы список полей в SQL-таблице вида:
create table SOME_TABLE(
    filed1        domain1,
    field_outher  domain2, 
    filed3        domain3,
    ...
);

Здесь, когда мы вводим сам список полей внутри скобок, нужно постоянное форматирование отступов (т.е. поддержка двух столбцов как в некой виртуальной таблице, когда само всё расширяется, двигается и т.д.), нужно tab-ом прыгать между элементами (как в сниппетах TextMate), автодополнение из определенного списка элементов (т.е. нужен список доменов) и пр. Думаю, что идея понятна.

К тому же, нужна некоторая синхронизация между кодом. Например, вот в sublime можно делать настройки редактора в виде текстовых файлов, когда свои опции переопределяются в отдельных файлах, т.е. я делаю небольшой фрагмент JSON с десятком параметров. Но, когда я устанавливаю курсор на параметр, было бы классно, если бы в соседнем буфере, скажем справа, синхронно открывался файл общих исходных настроек, где курсор был бы спозиционирован на такой же параметр, где видно его первичное значение, которое я изменяю, и есть рядом комментарий-описание, возможно какое-то визуальное выделение нужной области текста. Причём это лучше воспринимается, чем какой-нибудь хинт, как-то удобнее, когда видишь информацию в синтаксисе оригинала, и в исходном окружении.

Но как это всё реализовать удобно, и универсально, я даже не думал. Реально интересно увидеть твои попытки в этом направлении.
Тут важно не увлечься, и ликвидировать работу с файлами как класс. Так иногда делают некоторые концептуальные семантические редакторы и подобные вещи. Пытаются код хранить в своих базах и т.п. Лучше родных для нас файлов пока ничего нет.

И с такими планами можно до уровня MPS от jetbrains добраться, причём удобнее, хоть это система другого вида и для других задач

K>ну по умолчанию у всех есть JS + Vbscript. А так есть движки для Perl, PHP, Lua.

Да я о том, реально ли кому-то нужна некая неуниверсальность программного кода. Имхо, если все скрипты/макросы у всех будут только в JS, то только всем проще будет, будет лучше переносимость, широкая кодобаза и т.д.
По своему опыту. Я находил нужные мне макросы для jedit на питоне, но чем возиться с прикручиванием питона (есть спецплагины), мне проще переписать на обычный, стандартный, BeanShell (это типа JavaScript в jedit).
Но, похоже, всё решает маркетинг...

K>Ну да, для ошибок это не очень подходит. Тут лучше список. Но для показа количества совпадений слова в документе, измененных зон, вложенных синтаксисов или наличие туду — подходит нормально. Можно использовать как индикатор ошибок в логе, создав стиль подсвечивающий сообщение об ошибке и вывести его на Overview Bar.

По JEdit я заметил, что такой Overview Bar хорошо уживается рядом с MiniMap, когда в этом MiniMap-е заметны подчёркивания и выделения, как-то гармонично друг друга дополняют. Если бы был ещё и хинт для мыши в minimap, когда навёл и вылезло окошко с увеличенной инфой — кайфа ещё было бы больше, и прокручивать меньше нужно было бы.
Кстати, этот minimap фактически позволяет убрать скроллбар справа.

K>Там работы в принципе не много. У меня уже все разделено и подготовлено. Единственно могут быть проблемы с производительностью, если показывать большой документ. Но вроде там всего пару экранов вводиться так что может будет нормально.

Кстати, да, в jedit бывают из-за minimap-а подтормаживания. Обычно я его отключаю.

PSV>>>>Virtual Space

K>>>Если хочется писать где хочешь, а не только в границах строки.
PSV>>А можно в двух словах подробнее, или скриншот, если есть.
K>Скриншот тут сильно не поможет, но я нашел пару описаний в интернете, чтоб заново не писать:
Блин, я забыл, что это дело так мудрённо обзывают. Тут как раз все редакторы можно разделить на две группы: "дельфийцы" — курсор при прокрутке не прыгает всегда к концу строки (типа включенный Virtual Space) и есть обрезание концевых пробелов по ходу дела, а не при записи, и "а-ля VS" — курсор прыгает нервно туда-сюда и пробелы не рубим (и таких большинство, включая вим/эмакс по умолчанию).

K>Да я посмотрел — идея в принципе интересная. Записал себе. Хотя не знаю как она приживется в GUI редакторе. Сначала думал: как же это они делают в большом документе. А потом понял, что это только для видимой области. В этом случае, твое предложение по переходу по функциям кажется мне не очень полезным — сколько будет функций за раз видно на экране? ну и у меня уже есть достаточно удобная навигация по меткам (функциям) с помощью Navigation Bar: Alt+M -> набрать часть имени функции -> Enter.

Не-не-не, Navigation Bar — это для другого. Такие плагины — для быстрого перемещения в пределах видимой области. По поводу функций, я имел в виду следующее. Этот плагин работает, как бы, только вперед: подсвечивает элементы для перехода от курсора до конца экрана. Можно подумать, как сделать перемещение в любую сторону (и нужно ли оно). Если все подсвечивать, весь экран — как-то много шума. Можно попробовать подробно выделять все элементы внутри текущей синтаксической области (функции), а остальные видимые функции на экране — выделять только начало (даже другим цветом, к примеру), и когда ты прыгнул на другую функцию — сразу начинать выделять элементы внутри этой функции (вне её можно/нужно убрать подсветку). Как-то так.

K>Хотя не знаю как она приживется в GUI редакторе.

Отлично. Такие вещи могут "подсадить" как всякий minimap. Если ты не гоняешь вим/эмакс, то можно пощупать плагины Vimperator/Pentadactyl или KeySnail (с подплагином HoK) для FireFox. Там похожая работа со ссылками в броузере (по мотивам этих плагинов и делают перемещения в виме). Реально мышка не нужна.
Здесь нужно учесть ряд нюансов, например, различать/нет регистр для меток, в каком регистре их выводить, из каких букв их формировать и пр. Нужно удобно запрашивать ввод данных, в вим/эмакс есть стандартные мини-буферы для всех случаев, в jedit подобные запросы делают через строку статуса.

Кстати, в этих плагинах для FireFox есть хорошие варианты для реализации всяких command-bar. В Vimperator-е удобно сделано для ввода таких команд как "translate -conv -langpair=ru|en текст для перевода", т.е. когда есть параметры внутри команды (как в командной строке OS). В KeySnail, как эмуляция эмакс, удобно сделан автокомплит, когда можно указывать несколько слов/букв через пробел. Я бы ещё добавил такую технику: в автокомплите, когда выбрал нужный элемент, скажем, имя буфера — т.е. открытой вкладки в FireFox — если нажали Enter, то выполняем ту команду, для которой запускали автокомплит, например, переключились на вкладку, если Ctrl+Enter — выполнили команду, но автокомплит не закрыли, если Shift+Enter — выполнили команду, не закрыли автокомплит и выделили следующий элемент в списке, Ctrl+Shift+Enter — выполнили и выделили пред. элемент (всё это вроде есть из коробки, а вот ->), Alt+Enter — открываем список суб-команд, например, для вкладок это: Close, Move left и т.д., Alt-BackSpace — вернулись назад из суб-меню. Причём, например, в jedit клавиши Alt+Enter и Alt-BackSpace часто связаны со всякими уровнями, например, откр./закрыть фолд.

С таких "мелочей" начинается удобная работа в инструментальной среде, с которой потом слезать крайне не охотно.

PSV>>Кстати, об автодополнении. У тебя хороший механизм с хинтами, в какой-то степени, киллер-фича редактора. Но некоторым нравится, например, как работает автокомплит в sublime, кто-то любит жать Esc/Shift-Esc для подстановки, кому-то нужно, чтобы при наборе автоматом добавлялись окончания как выделенный текст и т.д. Плюс настраиваемая игра с регистром: чувствительность при наборе, всегда ли преобразовывать как в источнике, всякий smart-поиск и т.п.

K>smart-поиск я еще приделаю: поиск по акронимам, нечеткий поиск.
K>Case я уже сейчас отслеживаю, и вставляю так как было набрано или как определено в свойствах (если позволено для синтаксиса).
K>Подстановка in-place — мне не нравиться — это от бедности GUI функционала.
Про Case я заметил, и в целом, система у тебя приятная. Но, я бы не сказал, что всякие альтернативные режимы от бедности в GUI. В том же эмакс тоже есть всякие хинты. Меня, например, немного как-то раздражали всякие постоянные хинты, когда я набирал текст, хотелось их отключить. Видимо, к ним нужно немного привыкнуть, или стараться не обращать внимание, когда они не нужны (имхо, скорее всего, можно быстро привыкнуть).
Конечно, тебе распыляться на всё нет смысла, прежде всего, необходимо ориентироваться на тех, кто хочет видеть перед собой маленькую VS.

PSV>>И я не совсем въехал о всех источниках, откуда берутся данные. Но я особо не разбирался, просто скажу, что неплохо иметь возможность указывать вручную (не только в XML-описании грамматики) список элементов для каждого синтаксиса (например, список своих функций). Также удобно дополнять слова из соседних открытых буферов, но не из всех, а по определенным правилам. Но для этого нужна более удобная организация работы с буферами (как в том же jedit, или вим/эмакс).

K>Про пользовательские списки у меня уже в планах есть, но пока не приоритетно. Дополнение из других буферов... Это все не точно, и может принести больше проблем чем пользы. Лучше уж тогда прикрутить ctags или разбирать инклуды для синтаксиса. Но можно будет посмотреть.
Чтобы дополнять из соседних буферов всё-таки нужна удобная система для работы с буферами. В JEdit есть понятие "Buffer Sets": Global (все открытые), View (только из текущего окна, можно запускать несколько отдельных окон), EditPane (те, которые видны в текущей панели). Например, удобно и просто рядом открыть 1-2 необходимых буфера и данные дополнять и оттуда, особенно когда нет спецпарсеров или всяких ctags для каких-то документов, текстов, или своих DSL и пр. Да и для работы со многими языками часто так выкручиваются, многим полноценный автокомплит и не нужен (который может быть и не всегда верным, чего-то не то показывать, тормозным, ctags на каждый чих перезапускать — тоже не фонтан).

PSV>>И неплохо иметь автокоррекцию по пробелу, например, набрал "if", жмёшь пробел и получи "if (|)", т.е. добавили скобки и курсор прыгнул во внутрь. Причём список элементов для коррекции должен быть настраиваемый по синтаксисам.

K>Ну это CodeTemplates, они зависимы от синтаксиса. А чтоб сработало на пробел, надо его установить как шоткат для Edit.ExpandTemplate. Я помню я там делал специальный хак, чтоб оно потом не ело пробелы, если был набран не имя шаблона. Но я думаю, вариант с Code Hint + Enter если есть шаблон интуитивнее и более стабилен.
PSV>>И коррекция помогает набирать всякие мудрёные символы из юникода, кому нужно (я не пользовался).
K>ну автокоррекция есть, можно добавить что хочешь. Или как темплейт.

Понял. Я хочу лишь подчеркнуть, что для коррекций через пробел вида "if" -> "if (|)" хинт лишний раз можно и не светить, они, как бы, естественные для нужного языка и типа даже незаметные. Не помешала бы коррекция и без пробелов, вида "var1;=SomeVal" — здесь ";" можно автоматом заменить на ":", чтобы получить паскалевское ":=". Или некоторым удобна коррекция для ввода юникода в таком виде: набираешь ``"a`` и тут же сразу это заменяется на ``ä``, а если нужно, скажем, ввести ``'a`` вместо запланированного (по настройкам) ``á``, то вводишь ``' a`` и получаешь ``'a``.

K>Ну у меня много чего есть, в плане автоматических отступов или положения табов, но конкретно уменьшения отступа по : для с++ нет. Есть уменьшение отступа по закрытию scope ( } ). О расширенном варианте с : я конечно думал, но решил пока не делать (в планах есть) — мне нужно универсальный движок, с поддержкой любы синтаксисов, а сделать его быстро не получиться. Но скорее всего буду делать базируясь на правилах описанных в регулярных выражениях.

Да, у тебя много чего есть приятного, поэтому и предлагаю лишний раз глянуть на правила в JEdit, Sublime/TextMate, там есть тоже неплохие идеи (имхо, ты сам обо всём в курсе).
Кстати, замечаю такую тенденцию: многие пишут себе макросы/скрипты в таком стиле — при нажатии, например, на "Ctrl+Enter" мы смотрим, где находимся: если мы внутри JavaDoc — в новой строке добавляем "*" с отступами согдасно пред. строке, или делаем автоинкремент в списках вида "a)... b)...", "1. ... 2. ..." и т.д., и прочие префиксы/окончания. Можно и во внутрь строки посмотреть, например, для строки вида "var1 = value1" делаем новую строку "var2 = value2".
Фактически, такие трюки вырождаются в стандартные функции редактора, с настройкой по синтаксисам.

PSV>>- в диалогах не хватает хотя бы каких-то хинтов, которые чуть больше подскажут по опции. Документация сейчас неполная, да и мало кто ее читает. Например, "Easy Line Copy" — я, к примеру, настраиваю у себя копировать всю строку, если нет выделения, но это та же опция или нет, не понятно. Т.е. пользователи могут просто не заметить какие-то киллер-фичи.

PSV>>Кстати, в sublime, где вся настройка в текстовых файлах, приятно, когда рядом с параметром есть комментарий к нему.
K>Плохо искал. Символ вопроса (?) в системном меню диалога и клик на интересующий контрол или Ctrl+F1.
Ага, это я уже отвык от "стандартов windows". Поэтому и undo-истории не заметил.

K>Я думаю проще все же написать скрипт. Все варианты и комбинации все равно не учтешь. Плюс проблема прикрепления нескольких комманд. События в HippoEDIT — это артефакт Надо бы их убрать, но у меня пока что на них кое что завязано.

Через скрипт, конечно, гибче и мощнее. Тут вопрос в твоих пользователях, захотят ли они "программировать". Хотя та же VS вроде тоже "скриптуется", да и нужно это далеко не всем.

K>Да, у меня уже есть в идеях, от одного фаната емакс. Там же отображением стилем для bold/italic и тд. Но интересно, что будет если цвет совпадает с цветом фона ну и у меня еще поправляется контрастность для цвета текста, так что может быть точного совпадения.

Можно рамочкой выделять, но только в нужных местах.
А всякая "контрастность" и "цветастость" у тебя действительно мощные, быстро и не разберешься во всём.

K>Нет Редактор, это редактор. А органайзер — это органайзер Те кому нужен органайзер — купят специализированный продукт. А другие будут пользоваться бесплатным емакс.

В твоем случае, имхо, так и есть. Могу лишь просто скромно подчеркнуть, что работа в org-mode, как с текстом, реально удобнее многих органайзеров (плюс шире функционал), для тех, кто понимает.

K>Фиг его знает. Фич много уже сделано за все время. Про Virtual Space я уже тебе написал.

K>Можешь глянуть новое, что появилось в 1.50:
K>- [...]
Спасибо, посмотрю по возможности.

K>Не поверишь Отпишись в личку: можно будет поговорить/переписываться по skype или email. Так возможно будет быстрее.

K>А то как то здесь наши обсуждения как оффтопик выходят.

Ну почему оффтоп, как раз обсуждаем "нормальный редактор для C++, который существует" (и не только для C++)

Да, конечно, такие отзывы здесь не к месту. Это меня немного "зацепило"...
Меня сейчас прижимает работа, кроме програмляния нужно разбираться и с кучей инфы. Необходимо искать время, чтобы поглубже покопать редактор. Если будут у меня вопросы, предложения и пр. буду уже обращаться по конкретным "адресам и явкам".

А так, буду рад, если удалось дать реально что-то полезное для твоей копилки. Нужно/не нужно, стоит/не стоит — решать только тебе.

Спасибо.
Re[15]: Нормальный редактор для C++ - существует ли?
От: Kefir http://www.hippoedit.com
Дата: 03.04.12 20:30
Оценка:
Здравствуйте, PSV100, Вы писали:

Лирика:
Любой продукт можно вылизывать до бесконечности: добавлять маленькие рющечки/фишечки и тд. В любом направлении копать не перекопать. Но ресурсы то ограничены. Тем более HippoEDIT все таки не OpenSource (и не Freeware). Так что, как бы это не печально, делать надо те фичи, которые заставят продукт купить или привлечь аудиторию (как то мини-мап какой нибудь). Сдается мне, что все эти имакс/вим фишки, товарищь обнаружит когда поработает с редактором пару месяцев, те тогда когда он его уже типа купил Те — это waste (с маркетинговой точки зрения или модного нынче lean process). Еще: эти все мелкие удобства, на самом деле требуют много работы, которую никто не видит (те маркетиговая ценность их мала).
C другой стороны, как ты заметил, с редактора я не живу (это не основная моя область деятельности). Хотелось бы конечно, но из-за особенностей области или моей лени заниматься продвижением, это как то не выходит. Совсем.
Те, занимаюсь я им для удовольствия (хотя часто приходится дело то, что не очень нравится). Поэтому, приоритеты я ставлю на то, что мне надо самому, или то что соответствует моему стилю работы.
На данный момент, я пока ничего глобального добавлять не буду: надо выпустить 1.50 а там посмотрим. Интересные идеи я себе записал, потом пережую

Ну несмотря на все вышесказанное, во всех этих фишечках я все равно закапываюсь, потому что хочется все сделать по уму и безукоризнено. Хотя в душе понимаю — waste

K>>У меня регулярки сейчас используются только для поиска так называемых меток (асинхронно). Правила разбора / движок свой (работает в основном синхронно). Руглярные выражения были в 10 раз медленней, даже на тех же сценариях (пробовал boost). Хотя скорее всего придется вводить и их поддержку, потому как мои правила все же сильно ограниченны и не позволяют покрыть все случаи.

PSV>Кстати, для регулярок можно попробовать гугловский проект Re2, вроде его хвалят по скорости. Но лично я его не юзал.
Я смотрел — для правил он бы подошел (там достаточно ограниченные возможности), но он к сожалению поддерживает только utf-8, а мне надо utf-16.

K>>Ограничение по положению есть только у внешних инструментов и контекстной помощи.

PSV>Вроде, логика вполне адекватна. Для макросов, похоже, планируется организация меню по типу jedit, тут нужно не забыть о возможности своей группировки, т.е. о своих папках/каталогах.

K>>У меня там тоже было много конфигураций по выделению/отображению левой границы. Кое что настраивается xml флагами, кое что зависит от того какие области отключены, тогда информация с отключенных областей переносится на панель номеров строк.

PSV>Ага, реально много чего, я пока не уяснил всего. А этот индикатор положений парных элементов в jedit реальная полезняшка, причём эта большая типа скобка "[" никому не мешает, и гармонично смотрится с выделением элементов через рамки (особено, если элемент не скобка, а большой, даже не на одну строку, например, парный XML-тэг).
Это в HippoEDIT тоже есть — я писал. Просто не так явно видно (можно настроить — другой цвет/фон). Обрати внимание на яркость фолдинга, напротив текущей области, там где бы ты ожидал скобку jedit.

PSV>Ясно. Могу ещё "поприставать" — удобна гибкая настройка, например, отображать только концевые пробелы, светить только табуляцию, или когда в исходнике есть помесь и табов и пробелов, то светить все ведущие начальные символы (чтобы различать, где пробелы, а где табы) и все табы (чтобы видеть, что внутри строк натыкали).

PSV>Но это, имхо, опять для эмаксеров/вимоводов. И имхо, у тебя тоже наверняка чего-то такое есть, я со всем ещё не разобрался.
У меня пока показывает только все невидимые символы, или ничего. Плюс замыкающие (trailing) пробелы. Добавлять остальное пока не собираюсь — интереса нет. Приспичит, сделаю как плагин. А вообще видеть это кому то нафиг не над, имхо. Конвертировать в один формат при открытии/сохранении это возможно.

K>>Ну сверни все аттрибуты в тегах — это языко-специфично. не будет. Но есть Collapse to Definition, Collapse Comments, Collapse all same blocks... Посмотрите контекстное меню, Outlining. Зависит от синтаксиса.

PSV>Ага, соглашусь. В принципе, тут и явные уровни фолдинга можно игнорировать. Они помогают, когда правила для фолдинга составлены удобно, или, например, когда есть структурное оформление кода — на отступах (как питон), или символы "{{{" — "}}}" (фактически, стандарт в виме/эмаксе/jedit). Вот в jedit пишут CHANGES.txt с фолдингом для последнего случая: клацнул сверни до 1-го уровня — получил список всех версий, клацнул 2-й уровень — раскрыл чуть подробнее: небольшой комментарий к версии плюс разделы "Bug Fixes", "API Changes" и пр., далее ещё вложения и т.п. Для таких случаев не нужны языково-специфичные настройки и вполне универсальный инструмент эти уровни фолдинга, причём удобнее, чем какой-то CodeBrowser в виде дерева, как во многих IDE.
Да, в HippoEDIT есть. Я уже упоминал. Как в питоне фолдинг пока не поддерживается, но user defined регионы/блоки есть.

PSV>Кстати, удобна такая штука: можно прямо в файле в начале или в конце писать подсказки для редактора по поводу всяких настроек, как в том же примере с CHANGES.txt. Весьма распространено во многих редакторах. Имхо, в HE тоже есть, вероятно.

Есть. Я пищу либо в файл сателит, либо в дополнительный файловый поток. Чтоб текст не засорять.

PSV>У меня тоже летали подобные мысли. К этому ещё нужно добавить, как бы, некие форматы, или шаблоны ввода. Ну, например, вводим мы список полей в SQL-таблице вида:

PSV>
PSV>create table SOME_TABLE(
PSV>    filed1        domain1,
PSV>    field_outher  domain2, 
PSV>    filed3        domain3,
PSV>    ...
PSV>);
PSV>

PSV>Здесь, когда мы вводим сам список полей внутри скобок, нужно постоянное форматирование отступов (т.е. поддержка двух столбцов как в некой виртуальной таблице, когда само всё расширяется, двигается и т.д.), нужно tab-ом прыгать между элементами (как в сниппетах TextMate), автодополнение из определенного списка элементов (т.е. нужен список доменов) и пр. Думаю, что идея понятна.
В HE это можно сделать вложением синтаксисов. Внутри каждого синтаксиса свои правила на все. У меня так везде сделано.
По поводу само расширяется — двигается. Посмотри Elastic Tabstop.

PSV>Но как это всё реализовать удобно, и универсально, я даже не думал. Реально интересно увидеть твои попытки в этом направлении.

PSV>Тут важно не увлечься, и ликвидировать работу с файлами как класс. Так иногда делают некоторые концептуальные семантические редакторы и подобные вещи. Пытаются код хранить в своих базах и т.п. Лучше родных для нас файлов пока ничего нет.
Файлы все равно будут конечно. Представь, что ты выделил в разных файлах произвольные области (по одной), присвоил им тег (или набор тегов), как букмарк. Например "Settings". А потом создаешь Settings view: как будто документ состоящий из кусочков ты выделял до этого. С view можно будет работать как с нормальным документом (редактирование, поиск, замена, сохранение), но данные будут меняться, сохраняться в оригинальных документах.
Как то так — по простому.

PSV>Да я о том, реально ли кому-то нужна некая неуниверсальность программного кода. Имхо, если все скрипты/макросы у всех будут только в JS, то только всем проще будет, будет лучше переносимость, широкая кодобаза и т.д.

PSV>По своему опыту. Я находил нужные мне макросы для jedit на питоне, но чем возиться с прикручиванием питона (есть спецплагины), мне проще переписать на обычный, стандартный, BeanShell (это типа JavaScript в jedit).
PSV>Но, похоже, всё решает маркетинг...
У меня можно смешивать куски на разных языках. Те я напишу платформу на JS а использовать можно будет (вызывать) в VB.

PSV>Кстати, этот minimap фактически позволяет убрать скроллбар справа.

Без, в принципе можно, если наложить ползунок на Overview bar. Мини-мап он, как я писал, не на весь документ. Но там будут другие проблемы, как то сплиттер, ползунок закрывающий данные и тд. Посмотри если не видел Инфо-Скроллер

PSV>Не-не-не, Navigation Bar — это для другого. Такие плагины — для быстрого перемещения в пределах видимой области. По поводу функций, я имел в виду следующее. Этот плагин работает, как бы, только вперед: подсвечивает элементы для перехода от курсора до конца экрана. Можно подумать, как сделать перемещение в любую сторону (и нужно ли оно). Если все подсвечивать, весь экран — как-то много шума. Можно попробовать подробно выделять все элементы внутри текущей синтаксической области (функции), а остальные видимые функции на экране — выделять только начало (даже другим цветом, к примеру), и когда ты прыгнул на другую функцию — сразу начинать выделять элементы внутри этой функции (вне её можно/нужно убрать подсветку). Как-то так.

Ну может быть. Текущую область видимости (плюс вложенные) и все последующие открытия областей видимости.

PSV>Чтобы дополнять из соседних буферов всё-таки нужна удобная система для работы с буферами. В JEdit есть понятие "Buffer Sets": Global (все открытые), View (только из текущего окна, можно запускать несколько отдельных окон), EditPane (те, которые видны в текущей панели). Например, удобно и просто рядом открыть 1-2 необходимых буфера и данные дополнять и оттуда, особенно когда нет спецпарсеров или всяких ctags для каких-то документов, текстов, или своих DSL и пр. Да и для работы со многими языками часто так выкручиваются, многим полноценный автокомплит и не нужен (который может быть и не всегда верным, чего-то не то показывать, тормозным, ctags на каждый чих перезапускать — тоже не фонтан).


PSV>Понял. Я хочу лишь подчеркнуть, что для коррекций через пробел вида "if" -> "if (|)" хинт лишний раз можно и не светить, они, как бы, естественные для нужного языка и типа даже незаметные. Не помешала бы коррекция и без пробелов, вида "var1;=SomeVal" — здесь ";" можно автоматом заменить на ":", чтобы получить паскалевское ":=". Или некоторым удобна коррекция для ввода юникода в таком виде: набираешь ``"a`` и тут же сразу это заменяется на ``ä``, а если нужно, скажем, ввести ``'a`` вместо запланированного (по настройкам) ``á``, то вводишь ``' a`` и получаешь ``'a``.

Это все — языково специфично и без триггера не прозрачно. Я сделал, копипаст "var1;=SomeVal" — что делать. Или просто вставил ; перед =. Конечно, что то сделать можно, но это все будут частные случаи, которые требуют знаний специфики языка. Поэтому пусть те, кто ее знают — пишут плагин или скрипт. Я предоставлю фреймворк. Может сделаю как пример, для синтаксиса который я использую сам.

K>>Ну у меня много чего есть, в плане автоматических отступов или положения табов, но конкретно уменьшения отступа по : для с++ нет. Есть уменьшение отступа по закрытию scope ( } ). О расширенном варианте с : я конечно думал, но решил пока не делать (в планах есть) — мне нужно универсальный движок, с поддержкой любы синтаксисов, а сделать его быстро не получиться. Но скорее всего буду делать базируясь на правилах описанных в регулярных выражениях.

PSV>Да, у тебя много чего есть приятного, поэтому и предлагаю лишний раз глянуть на правила в JEdit, Sublime/TextMate, там есть тоже неплохие идеи (имхо, ты сам обо всём в курсе).
PSV>Кстати, замечаю такую тенденцию: многие пишут себе макросы/скрипты в таком стиле — при нажатии, например, на "Ctrl+Enter" мы смотрим, где находимся: если мы внутри JavaDoc — в новой строке добавляем "*" с отступами согдасно пред. строке, или делаем автоинкремент в списках вида "a)... b)...", "1. ... 2. ..." и т.д., и прочие префиксы/окончания. Можно и во внутрь строки посмотреть, например, для строки вида "var1 = value1" делаем новую строку "var2 = value2".
PSV>Фактически, такие трюки вырождаются в стандартные функции редактора, с настройкой по синтаксисам.
Можно

K>>Да, у меня уже есть в идеях, от одного фаната емакс. Там же отображением стилем для bold/italic и тд. Но интересно, что будет если цвет совпадает с цветом фона ну и у меня еще поправляется контрастность для цвета текста, так что может быть точного совпадения.

PSV>Можно рамочкой выделять, но только в нужных местах.
Да, в принципе — идея.

PSV>Спасибо.

Тебе Спасибо
Re[16]: Нормальный редактор для C++ - существует ли?
От: PSV100  
Дата: 05.04.12 18:01
Оценка:
Здравствуйте, Kefir, Вы писали:

K>Лирика:

K>Любой продукт можно вылизывать до бесконечности: [...]

Это всё понятно. Воспринимаю как крик души...
(а я тут новый "недостаток" заметил: в настройках "Caret Shapes" до полноты картины не хватает "рамочки", как в JEdit. Даже боюсь теперь и предлагать ).

А вообще-то, тебе в жизни повезло: ты можешь заниматься любимым хобби-проектом, который реально полезный и тебе самому, при этом и даёт ещё какую-то материальную отдачу. Другие, к примеру, чтобы совсем не отупеть, чтобы нудную и достающею основную работу как-то разбавить чем-то для души, вынуждены, например, заниматься "хаскельством"

Но недостатки тоже есть: наличие пользователей-клиентов (многие из которых ещё и "достали") вынуждает работать над проектом больше, чем есть возможность и желание.

K> Ну несмотря на все вышесказанное, во всех этих фишечках я все равно закапываюсь, потому что хочется все сделать по уму и безукоризнено. Хотя в душе понимаю — waste


Кстати, да, видно, что работа проделывается не абы как. Например, вывод сообщений в статус-баре: выделили жёлтым и затухание до бледного жёлтого. Мелочи прорабатываешь, очень приятно.

K>>>У меня там тоже было много конфигураций по выделению/отображению левой границы. Кое что настраивается xml флагами, кое что зависит от того какие области отключены, тогда информация с отключенных областей переносится на панель номеров строк.

PSV>>Ага, реально много чего, я пока не уяснил всего. А этот индикатор положений парных элементов в jedit реальная полезняшка, причём эта большая типа скобка "[" никому не мешает, и гармонично смотрится с выделением элементов через рамки (особено, если элемент не скобка, а большой, даже не на одну строку, например, парный XML-тэг).
K>Это в HippoEDIT тоже есть — я писал. Просто не так явно видно (можно настроить — другой цвет/фон). Обрати внимание на яркость фолдинга, напротив текущей области, там где бы ты ожидал скобку jedit.

Я так пока и не понял, что в той области слева от текста может быть выведено. Поклацал всякие настройки, но не заметил:
— некоего аналога скобки jedit, или выделения цветом для этого;
— выделения текущей синтаксической области, например, функции, как это делает Эклипс, к примеру.

Вроде ты говоришь, что всё есть, но я не пойму как. Фолдинг не выделяется, как-то включил только то, что вся его полоска может быть ярче при наведении мыши. Есть только выделение цветом признака измененности строк, он становится бледнее после сохранения, нет обозначения разными цветами для отдельных операций (добавлено, модифицировано, а здесь удалено). Есть прикольные значки для операторов выхода, как return, continue, для вылетов по эксцепшинам — прикольно, что значки красные.
В общем, возможно, что я чего-то не досматриваю.

Кстати, посмотри на сбрасывание флага измененности строки после undo — режим undo не доступен (нет и истории, соответственно), а индикатор горит. Похоже, всё-таки баг.

PSV>>Кстати, удобна такая штука: можно прямо в файле в начале или в конце писать подсказки для редактора по поводу всяких настроек, как в том же примере с CHANGES.txt. Весьма распространено во многих редакторах. Имхо, в HE тоже есть, вероятно.

K>Есть. Я пищу либо в файл сателит, либо в дополнительный файловый поток. Чтоб текст не засорять.
Да, засорять исходники чем-то для IDE в большинстве случаев неприятно. Писать в сам файл удобно тогда, когда проще, например, передать сам один файл, без всяких внешних настроек, например, в проекте. Или когда нет работы с проектом, и т.п.

А что это за фишка такая в NTFS: Alt. File Stream, чё-то раньше не обращал внимание. Куда копнуть? (скорее, я опять туплю в чём-то, от усталости)

K>В HE это можно сделать вложением синтаксисов. Внутри каждого синтаксиса свои правила на все. У меня так везде сделано.

K>По поводу само расширяется — двигается. Посмотри Elastic Tabstop.
Это не совсем то, что я хотел сказать, точнее, я не так выразил идею. Вложенные синтаксисы и в JEdit есть, и эти резиновые табы вроде прикручивают туда же.

Тут нужен такой эффект: вот после того, как сработал сниппет а-ля TextMate/Sublime, я чего-то поделал, а потом хотелось бы вернуться курсором в той район, где раньше был ввод через сниппет, чего-то клацнуть, и этот сниппет опять заработал, но уже на имеющихся данных, т.е., например, я могу редактировать имя функции/метода, клацнул таб — перелетел на первый параметр, его правлю и т.д. При этом все изменения автоматом корректируются и в JavaDoc для этого метода, т.е. то, что было настроено для некоего сниппета для ввода нового метода. В сниппетах и резиновые табы очень полезны будут. Как-то так. Надеюсь, что более-менее понятно, о чём говорю.
Конечно, такой функционал — это уже для спецпарсеров с семантикой, удел настоящих IDE, с рефакторингом и пр. Но можно попробовать оценить, реально или нет для универсального парсера, с настройками для всяких синтаксических сниппетов, добиться похожего функционала.

А в идеале, нужна одна единая система для парсеров — и для прорисовки, и для IDE-функций. Но похоже, что даже во всяких Эклипсах это не так: один разбор текста для рисования, и есть другой разбор — для всякого AST и функционала поверх него. Отсюда начинается и расход памяти, и тормоза на молотилку часто одного и того же в разных системах.

K>Файлы все равно будут конечно. Представь, что ты выделил в разных файлах произвольные области (по одной), присвоил им тег (или набор тегов), как букмарк. Например "Settings". А потом создаешь Settings view: как будто документ состоящий из кусочков ты выделял до этого. С view можно будет работать как с нормальным документом (редактирование, поиск, замена, сохранение), но данные будут меняться, сохраняться в оригинальных документах.

K>Как то так — по простому.
Идея хорошая. Имхо, главное, как раз чтобы было по простому.

PSV>>Кстати, этот minimap фактически позволяет убрать скроллбар справа.

K>Без, в принципе можно, если наложить ползунок на Overview bar. Мини-мап он, как я писал, не на весь документ. Но там будут другие проблемы, как то сплиттер, ползунок закрывающий данные и тд. Посмотри если не видел Инфо-Скроллер
Инфо-Скроллер я видел, и нечто подобное я и имел в виду. Я не совсем понял, что значит мини-мап не на весь документ.
Вот если посмотреть в Sublime, то можно заметить, что скроллбар фактически дублируется ползунком в мини-мапе.
Одним словом, можно объединить мини-мап, Overview Bar, скроллбар в один мега-пупер контрол, который заставит облизываться даже пользователей Sublime. А кнопки вверх/вниз в скроллбаре фактически не нужны.

P.S. Сорри, не удержался, но уже проще обсудить небольшие вопросики здесь по месту, где проблемы выявлены.
Re[5]: Нормальный редактор для C++ - существует ли?
От: Denys V. Украина http://ua.linkedin.com/in/dvalchuk
Дата: 08.04.12 19:35
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Ха, а CEDIT прожевал Boost нормально, но при этом стал тормознее Нетбинса. Интересненько... )))


попробуйте emacs + clang здесь
видео

здесь

тут прикрутили clang к vim: здесь

а тут активно крутят к Sublime здесь

рано вы хороните "продвинутые редакторы"

Лично мне нравится vim/emacs/Sublime за возможность гибко настроить под себя.
Я когда то настраивал студию — создавал визарды, аддоны... как вы думаете — куда все это делось? Люди со скриптами для vim/emacs живут десятилетиями, допиливают, совершенствуют, меняют работу, платформы, языки — а их "IDE" продолжает работать... По моему — это огромный плюс!
И не нужно забывать о том что все их фичи (практически все) успешно работают без GUI.
Конечно же есть и недостатки:
VIM
1. высокий порог вхождения (пробовал cream мод — убивает многие базовые фичи редактора — потому бесполезен) — но побеждаем — я им довольно таки долго пользовался как редактором для скриптовых языков.
2. лично мне не понравился его язык для рассширений.
EMACS
1. высокий порог вхождения (планирую начать с ErgoEmacs — cудя по документации он не убивает фичи, а только добавляет привычные шоткаты)
Sublime Text 2
1. Стремная лицензия — не цена — я готов платить за хороший редактор — но не готов платить за редактор, мои скрипты к которому в один прекрассный день перестанут работать, а сделать с этим ничего нельзя будет. Для кого то это может быть и не недостаток... Но я боюсь Если с лицензией будут хотя бы исходники поставляться — тогда можно подумать о покупке...
С уважением Denys Valchuk

IMHO чем больше мнений тем оптимальней выбор варианта... :)
Re[14]: Нормальный редактор для C++ - существует ли?
От: jazzer Россия Skype: enerjazzer
Дата: 08.04.12 19:54
Оценка:
Здравствуйте, Kefir, Вы писали:

K>Да жаль, но как я уже писал — здесь сделать что-то, что подходит всем будет очень сложно. Лучше найти какое нибудь специализированное решение — "с++ code beautifier" и подсоединить его как внешний инструмент или скрипт. Точно такое уже есть, и точно оно будет мощнее чем решение в HippoEDIT.


+1
Я юзаю AStyle для этой цели, зову прямо из редактора (NEdit), чтоб перефроматировал выделенный текст
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[17]: Нормальный редактор для C++ - существует ли?
От: Kefir http://www.hippoedit.com
Дата: 08.04.12 22:46
Оценка:
Здравствуйте, PSV100, Вы писали:

PSV>Это всё понятно. Воспринимаю как крик души...

PSV>(а я тут новый "недостаток" заметил: в настройках "Caret Shapes" до полноты картины не хватает "рамочки", как в JEdit. Даже боюсь теперь и предлагать ).
Ну ты то все равно не будешь пользоваться, так что твой реквест не считается Я посмотрел, мне чтобы добавить рамочку, придется кое что менять (использую CreateSolidCared? надо будет переходить на CreateCaret). Так что пока — фиг с ней .

PSV>А вообще-то, тебе в жизни повезло: ты можешь заниматься любимым хобби-проектом, который реально полезный и тебе самому, при этом и даёт ещё какую-то материальную отдачу. Другие, к примеру, чтобы совсем не отупеть, чтобы нудную и достающею основную работу как-то разбавить чем-то для души, вынуждены, например, заниматься "хаскельством"

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

PSV>Я так пока и не понял, что в той области слева от текста может быть выведено. Поклацал всякие настройки, но не заметил:

PSV>- некоего аналога скобки jedit, или выделения цветом для этого;
PSV>- выделения текущей синтаксической области, например, функции, как это делает Эклипс, к примеру.
Вот сделал скриншот — надеюсь теперь будет понятней. Просто для стиля Outlining (Highlighted) надо поставить цвет поярче.


Там вообще много что можно сконфигурировать, играясь цветами стилей (например убрать рамочку для Current Line frame etc).

PSV>Вроде ты говоришь, что всё есть, но я не пойму как. Фолдинг не выделяется, как-то включил только то, что вся его полоска может быть ярче при наведении мыши. Есть только выделение цветом признака измененности строк, он становится бледнее после сохранения, нет обозначения разными цветами для отдельных операций (добавлено, модифицировано, а здесь удалено).

Удаление я пока не показываю. Я не делаю diff а запоминаю как атрибут строки была ли она модифицирована/сохранена и манипулирую этими данными после undo/redo.

PSV>Кстати, посмотри на сбрасывание флага измененности строки после undo — режим undo не доступен (нет и истории, соответственно), а индикатор горит. Похоже, всё-таки баг.

Да, наверное, я потом тоже как то заметил.

PSV>>>Кстати, удобна такая штука: можно прямо в файле в начале или в конце писать подсказки для редактора по поводу всяких настроек, как в том же примере с CHANGES.txt. Весьма распространено во многих редакторах. Имхо, в HE тоже есть, вероятно.

K>>Есть. Я пищу либо в файл сателит, либо в дополнительный файловый поток. Чтоб текст не засорять.
PSV>Да, засорять исходники чем-то для IDE в большинстве случаев неприятно. Писать в сам файл удобно тогда, когда проще, например, передать сам один файл, без всяких внешних настроек, например, в проекте. Или когда нет работы с проектом, и т.п.
Ну да, если файлы сателиты, то надо копировать вместе с файлом. Но если копируется каталогами, то не проблема. Зато решается проблема с различными форматами этих магических записей в файл в зависимости от синтаксиса...
А с файловыми потоками этой проблемы вообще нет. Все копируется вместе с файлом (конечно если с NTFS на NTFS).

PSV>А что это за фишка такая в NTFS: Alt. File Stream, чё-то раньше не обращал внимание. Куда копнуть? (скорее, я опять туплю в чём-то, от усталости)

File Streams и еще тут кое что. Там ничего сложного, тоже чтение/запись в файл но с кое какой магией в именах.

PSV>Тут нужен такой эффект: вот после того, как сработал сниппет а-ля TextMate/Sublime, я чего-то поделал, а потом хотелось бы вернуться курсором в той район, где раньше был ввод через сниппет, чего-то клацнуть, и этот сниппет опять заработал, но уже на имеющихся данных, т.е., например, я могу редактировать имя функции/метода, клацнул таб — перелетел на первый параметр, его правлю и т.д. При этом все изменения автоматом корректируются и в JavaDoc для этого метода, т.е. то, что было настроено для некоего сниппета для ввода нового метода. В сниппетах и резиновые табы очень полезны будут. Как-то так. Надеюсь, что более-менее понятно, о чём говорю.

PSV>Конечно, такой функционал — это уже для спецпарсеров с семантикой, удел настоящих IDE, с рефакторингом и пр. Но можно попробовать оценить, реально или нет для универсального парсера, с настройками для всяких синтаксических сниппетов, добиться похожего функционала.
Понятно, типа работа по форме/шаблону. Думается мне — тут работы будет дофига, а будет ли что то юзабельное в конце концов — не ясно.
Можно будет глянуть, когда я добавлю множественное выделение/редактирование. Может быть надо будет просто не сбрасывать/запоминать шаблоны после вставки... Хотя их все надо будет пересчитывать, плюс что делать если пользователь кликнет где нибудь мимо шаблона. Те надо будет еще какие то защищенные области вводить.

PSV>А в идеале, нужна одна единая система для парсеров — и для прорисовки, и для IDE-функций. Но похоже, что даже во всяких Эклипсах это не так: один разбор текста для рисования, и есть другой разбор — для всякого AST и функционала поверх него. Отсюда начинается и расход памяти, и тормоза на молотилку часто одного и того же в разных системах.

Оно то да, да только все упирается в производительность. В HippoEDIT тоже разбор раздельный. Потому как рисование синхронное и некоторые данные, как то где строки/комментарии а где кож мне надо сразу тоже синхронно. И я не могу допустить чтобы парсер "тормозил". А есть "не обязательные" данные, которые могут рассчитываться дольше, и делаются в параллельных потоках, а потом накладываются. При совмещении парсеров — мои синхронные работы будут выполняться по самому длительному сценарию, а это не допустимо. Так что раздельные парсеры, хоть и сложнее, но более гибче.

PSV>>>Кстати, этот minimap фактически позволяет убрать скроллбар справа.

K>>Без, в принципе можно, если наложить ползунок на Overview bar. Мини-мап он, как я писал, не на весь документ. Но там будут другие проблемы, как то сплиттер, ползунок закрывающий данные и тд. Посмотри если не видел Инфо-Скроллер
PSV>Инфо-Скроллер я видел, и нечто подобное я и имел в виду. Я не совсем понял, что значит мини-мап не на весь документ.
PSV>Вот если посмотреть в Sublime, то можно заметить, что скроллбар фактически дублируется ползунком в мини-мапе.
PSV>Одним словом, можно объединить мини-мап, Overview Bar, скроллбар в один мега-пупер контрол, который заставит облизываться даже пользователей Sublime. А кнопки вверх/вниз в скроллбаре фактически не нужны.
Да действительно, был не прав. Скролит по всему документу. Просто мини изображение только по части документа (попробуй реально большой документ). А overview bar — по всему документу. Те больше соответствует инфо скроллеру.
Скролл бар позволяет скролить постранично/построчно с помощью мыши. Если это убрать, народ работающий с мышью будет возмущаться.
Так что если делать, совместить не сильно получится, только для небольших документов как то можно. Но пока желания нет . По крайней мере не в 1.50
Re[10]: Нормальный редактор для C++ - существует ли?
От: Brutalix  
Дата: 08.04.12 23:13
Оценка:
Здравствуйте, Kswapd, Вы писали:

K>Я вышел на Emacs немного странным путём — через увлечение лиспом; показалось забавным поработать в редакторе, расширяемом скриптами на лиспе. Потом только вкурил, насколько красива и последовательна архитектура Emacs, и насколько неограниченны возможности расширения и адаптации под свои задачи. Emacs, по сути, виртуальная машина, в которой работает собственная OS.



Ага. Если б туда еще текстовый редактор приличный добавили б, так цены б ему не было

K>Мне кажется, работать в IDE, которую можно освоить за несколько дней, как-то скучновато .


== стоя в гамаке и в скафандре
Re[6]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 09.04.12 10:09
Оценка:
Здравствуйте, Denys V., Вы писали:

DV>видео


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

Не знаете где такое можно скачать и что бы просто работало, без проблем? )))

Я лично не знаю ни одного такого редактора. И знаю 3 ide (VS+VA, Netbeans, Eclipse) разной степени монструозности и тормознутости.

DV>попробуйте emacs + clang здесь

DV>здесь
DV>тут прикрутили clang к vim: здесь
DV>а тут активно крутят к Sublime здесь

Попробовал в Sublime. На проектах типа hello world работает практически идеально. Далее, если подключаем мощные библиотеки, то при переключение на файл оно тормозится на несколько секунд и потом выдаёт в консоль миллионы ошибок. При этом как ни странно автодополнение кое-как работает, но при этом тормозит больше чем Netbeans, практически как emacs+cedit — не юзабельно уже. Но самое интересно было на маленьком файлике вообще без библиотек, но зато с лямбдами — на нём оно стабильно зависало навсегда. )))

Причём всё это меня не сильно удивило. Я тут пробовал clang сам по себе — он не тянет многое до сих пор. Т.е. все вышеописанные глюки, это вина именно clang'a, а не редактора или плагина. Может быть, когда-нибудь, когда clang доделают до вменяемого состояния, это всё и заработает суперски. Но пока всё ужасно.

DV>Лично мне нравится vim/emacs/Sublime за возможность гибко настроить под себя.

DV>Я когда то настраивал студию — создавал визарды, аддоны... как вы думаете — куда все это делось? Люди со скриптами для vim/emacs живут десятилетиями, допиливают, совершенствуют, меняют работу, платформы, языки — а их "IDE" продолжает работать... По моему — это огромный плюс!
DV>И не нужно забывать о том что все их фичи (практически все) успешно работают без GUI.

Тут вроде бы уже проскакивала мысль, что Еmacs современности — это Eclipse. Если есть желание что-то сильно кастомизировать, то ничего лучше этого монстра нет. Там можно всё что угодно добавить. Просто в моём случае я как раз не хочу ничего настраивать (ну кроме цветов, папки инклудов и стиля форматирования), а хочу просто скачать продукт и работать с ним.

А vim и emacs со своим древним интерфейсом мне кажется несколько устарели. Эклипс может всё тоже что и они (ну разве что кроме работы через терминал) и плюс ещё кучу всего. Но как я уже сказал это всё не то что мне хотелось бы лично. Мне скорее ближе Nebeans или HippoEDIT)))

Что касается Sublime, то это очень инересный продукт. Он не менее удобен и лаконичен чем какой-нибудь Notepad++, всё работает из коробки и при этом расширяем почти как монстры (Eclipse, emacs). Мне нравится с ним работать. Нравится как сделаны его расширения (Питон у нас интенсивно используется для близких целей). Но пока не знаю зачем он мне может понадобиться. На место IDE ему сложно претендовать — у него навигация и т.п. слабеее даже чем HippoEDIT, я уже молчу про Netbeans. А для просто небольшого быстрого редактора кода все эти расширения и не нужны — тут даже Notepad++ перекрывает всё нужное. Так что... Хотя наверное на не windows платформах он будет точно нужен, т.к. там половины конкурентов нет.
Re[13]: Нормальный редактор для C++ - существует ли?
От: MasterZiv СССР  
Дата: 09.04.12 14:48
Оценка:
> А вот IDE — это уже заметно больше. Там и проекты и системы сборки

Билд-системы бывают в IDE разные, есть встроенные, а есть внешние.
Так что это не ключевая функциональность IDE.
Например, почти все IDE из GNU используют внешние билд-системы.

и отладчики и

Отладчик — да. Ключевая функция IDE.

> контроль версий и контроль задач и взаимодействие с командкой...


Этого в половине IDE нет даже в задумках.


Так что остаётся -- IDE это редактор с подсветкой синтаксиса,
броузинг кода, запуск сборки и отладчик.
Posted via RSDN NNTP Server 2.1 beta
Re[14]: Нормальный редактор для C++ - существует ли?
От: MasterZiv СССР  
Дата: 09.04.12 15:21
Оценка:
On 03/14/2012 10:59 AM, PSV100 wrote:

> Дополню юмор.

>
> В Эклипсе для макросов могут ещё ввести какой-нибудь визард с десяток и более
> страниц, причём возможно обязательный, который на самом деле выплюнет тебе
> заготовки для кучи файлов. При этом опять будет заявлено об "интеллектуальности"
> эклипса: мы обеспечим в этих файлах и умный автокомплит, и ошибки по ходу дела
> будем светить вместе с рекомендациями и т.д.

Эти макросы ещё будут сохраняться в КАЖДОМ ВОРКСПЕЙСЕ ОТДЕЛЬНО !
Posted via RSDN NNTP Server 2.1 beta
Re[14]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 09.04.12 18:02
Оценка:
Здравствуйте, MasterZiv, Вы писали:

MZ>Этого в половине IDE нет даже в задумках.


В тех трёх IDE, где я видел приемлемую подсветку синтаксиса, броузинг и автокомплит, от всяких дополнительных функций (типа командной работы) было деваться некуда. )))

MZ>Так что остаётся -- IDE это редактор с подсветкой синтаксиса,

MZ>броузинг кода, запуск сборки и отладчик.

Ещё система проектов обязательно для любой IDE, даже для слабой. Но как я уже сказал, в слабых и сам редактор меня не удовлетворяет... Так что по любому остаются только те монстры.
Re[15]: Нормальный редактор для C++ - существует ли?
От: MasterZiv СССР  
Дата: 09.04.12 20:30
Оценка:
> Ещё система проектов обязательно для любой IDE, даже для слабой. Но как я уже
> сказал, в слабых и сам редактор меня не удовлетворяет... Так что по любому
> остаются только те монстры.

Что значит система проектов?
Билд-система -- я сказал, а система проектов, -- это что ?
Набор файлов, который IDE считает "своими" ?
Если так, то тоже далеко не везде она есть, система прокетов.
Например, тот же самый Eclipse -- нету там системы проектов.
Есть только билд-система.
Posted via RSDN NNTP Server 2.1 beta
Re[16]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 09.04.12 21:47
Оценка:
Здравствуйте, MasterZiv, Вы писали:

MZ>Что значит система проектов?

MZ>Билд-система -- я сказал, а система проектов, -- это что ?
MZ>Набор файлов, который IDE считает "своими" ?
MZ>Если так, то тоже далеко не везде она есть, система прокетов.
MZ>Например, тот же самый Eclipse -- нету там системы проектов.
MZ>Есть только билд-система.

В Эклипсе как раз полноценная система проектов, как и пологается мегамонстру. Там есть воркспейсы. В них проекты. А папки в проектах могут быть ещё как реальные, так и виртуальные. В общем полная коллекция всего.

Да, и кстати проект — это обычно не что считает "своим". А когда какая-то часть настроек системы делается специфичной под группу файлов. И уж у мегамонстра типа Эклипса настроек под проект естественно миллион. Причём из коробки прямо. А если ещё модулей надобавлять, то....
Re[17]: Нормальный редактор для C++ - существует ли?
От: Denys V. Украина http://ua.linkedin.com/in/dvalchuk
Дата: 10.04.12 14:21
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Здравствуйте, MasterZiv, Вы писали:


MZ>>Что значит система проектов?

MZ>>Билд-система -- я сказал, а система проектов, -- это что ?
MZ>>Набор файлов, который IDE считает "своими" ?
MZ>>Если так, то тоже далеко не везде она есть, система прокетов.
MZ>>Например, тот же самый Eclipse -- нету там системы проектов.
MZ>>Есть только билд-система.

_>В Эклипсе как раз полноценная система проектов, как и пологается мегамонстру. Там есть воркспейсы. В них проекты. А папки в проектах могут быть ещё как реальные, так и виртуальные. В общем полная коллекция всего.


_>Да, и кстати проект — это обычно не что считает "своим". А когда какая-то часть настроек системы делается специфичной под группу файлов. И уж у мегамонстра типа Эклипса настроек под проект естественно миллион. Причём из коробки прямо. А если ещё модулей надобавлять, то....



Кромен настроек билда — какие из этих "миллиона" настроек вы считаете важными?
вот к примеру я пользую на данный момент Netbeans для java проектов и MSVC2010 для С++... Все что я настраиваю в проекте относится к билду.
А в случае с java — там вообще папка с pom.xml считается "своим" проектом — все что нетбинс своего создает это файлы с с моими кастомными правилами запуска. Аля такие то аргументы коммандной строки, такая то директория текущая и тд... Это я даже в свн не добавляю естественно. Проекта как такого нет — полет нормальный. Боюсь что пользователям qmake, cmake, scons вы тоже не объясните зачем нужны эти проекты. Как правило они только мешают своей ограниченностью. делаете к примеру svn mv для файла — и все — проект накрылся — почему? Если я к примеру всего лишь поменял .h на .hpp — и это самый простой и безобидный пример
С уважением Denys Valchuk

IMHO чем больше мнений тем оптимальней выбор варианта... :)
Re[17]: Нормальный редактор для C++ - существует ли?
От: MasterZiv СССР  
Дата: 10.04.12 16:53
Оценка:
> В Эклипсе как раз полноценная система проектов, как и пологается мегамонстру.

Ага. Фиг там !
Нет там проектов.
Там проект -- это поддерево каталогов в файловой системе.

> Да, и кстати проект — это обычно не что считает "своим". А когда какая-то часть

> настроек системы делается специфичной под группу файлов. И уж у мегамонстра типа
> Эклипса настроек под проект естественно миллион. Причём из коробки прямо. А если
> ещё модулей надобавлять, то....

Да уж, чего-чего, а настроек в эклипсе -- как у дурака фантиков.
Posted via RSDN NNTP Server 2.1 beta
Re[18]: Нормальный редактор для C++ - существует ли?
От: PSV100  
Дата: 10.04.12 17:43
Оценка:
Здравствуйте, Kefir, Вы писали:

PSV>>Это всё понятно. Воспринимаю как крик души...

PSV>>(а я тут новый "недостаток" заметил: в настройках "Caret Shapes" до полноты картины не хватает "рамочки", как в JEdit. Даже боюсь теперь и предлагать ).
K>Ну ты то все равно не будешь пользоваться, так что твой реквест не считается Я посмотрел, мне чтобы добавить рамочку, придется кое что менять (использую CreateSolidCared? надо будет переходить на CreateCaret). Так что пока — фиг с ней .

Я подам жалобу на официальный форум .

K>Вот сделал скриншот — надеюсь теперь будет понятней. Просто для стиля Outlining (Highlighted) надо поставить цвет поярче.


Спасибо, дошло, куда ещё надо смотреть.

K>Удаление я пока не показываю. Я не делаю diff а запоминаю как атрибут строки была ли она модифицирована/сохранена и манипулирую этими данными после undo/redo.


Имхо, этот diff не шибко и нужен. С одной стороны, может быть и приятно, когда там слева всё показывается (кстати, такими же цветами, как в diff-сравнивалке), но с другой, какое-то "попугайство" даже излишне.

PSV>>А что это за фишка такая в NTFS: Alt. File Stream, чё-то раньше не обращал внимание. Куда копнуть? (скорее, я опять туплю в чём-то, от усталости)

K>File Streams и еще тут кое что. Там ничего сложного, тоже чтение/запись в файл но с кое какой магией в именах.

Ага, спасибо. Я уже сам понял, что "протупил".

PSV>>Тут нужен такой эффект: вот после того, как сработал сниппет а-ля TextMate/Sublime, я чего-то поделал, а потом хотелось бы вернуться курсором в той район, где раньше был ввод через сниппет, чего-то клацнуть, и этот сниппет опять заработал, но уже на имеющихся данных, т.е., например, я могу редактировать имя функции/метода, клацнул таб — перелетел на первый параметр, его правлю и т.д. При этом все изменения автоматом корректируются и в JavaDoc для этого метода, т.е. то, что было настроено для некоего сниппета для ввода нового метода. В сниппетах и резиновые табы очень полезны будут. Как-то так. Надеюсь, что более-менее понятно, о чём говорю.

PSV>>Конечно, такой функционал — это уже для спецпарсеров с семантикой, удел настоящих IDE, с рефакторингом и пр. Но можно попробовать оценить, реально или нет для универсального парсера, с настройками для всяких синтаксических сниппетов, добиться похожего функционала.
K>Понятно, типа работа по форме/шаблону. Думается мне — тут работы будет дофига, а будет ли что то юзабельное в конце концов — не ясно.
K>Можно будет глянуть, когда я добавлю множественное выделение/редактирование. Может быть надо будет просто не сбрасывать/запоминать шаблоны после вставки... Хотя их все надо будет пересчитывать, плюс что делать если пользователь кликнет где нибудь мимо шаблона. Те надо будет еще какие то защищенные области вводить.

Да, что-то по мотивам форм/шаблонов. Я как раз и обратил на это внимание, поскольку ты намекал на то, что намечается расширение шаблонов кода по мотивам TextMate.
Я тут сам подумал немного на досуге и, откровенно говоря, даже не могу сообразить, как такой эффект можно сделать. Ведь нужно как-то вычислять эту нужную область, причём могут быть несколько кандидатов-шаблонов на срабатывание, и пользователь, после первичной работы с шаблоном, может изменить контекст (текст внутри нужной области), а затем попытаться снова работать с шаблоном. Под несколькими кандидатами я подразумеваю следующее: в идеале нужно, чтобы я стал курсором куда-то, где раньше работал шаблон, затем клацнул, например, "Ctrl+E Tab" — редактор сам "прокачал", какой здесь нужно запустить шаблон, и я поехал жать tab куда мне нужно, редактировать и т.д. Тут важно ещё корректно разрулить ситуацию, когда редактор может ошибиться, выбрать не тот шаблон для работы, или шаблон может заработать, но поверх ранее видоизмененного для него контекста, т.е. гораздо хуже, если редактор начнёт править данные не так, как нужно, вместо того, чтобы сказать: я не могу догнать, чего от меня нужно.
Скорее всего, для указания форматов внутри шаблона кода уже будет недостаточно одних переменных, способов форматирования или каких-то вычислений (всё это обязательно должно быть). Может потребоваться введение каких-то уже явных синтаксических инструкций, вида "тут ключевое слово такое-то", "здесь начало такой-то синтаксической области", "а тут такая-то Label" и т.д. Это может усложнить написание шаблонов, т.е. они будут не для каждой кухарки.

Короче говоря, маловероятны такие фантазии. Но всё-таки есть смысл, что-то покумекать над этим.

А так, тут, как для обычных Sublime-подобных сниппетов, можно добавить эти резиновые табы, на которые ты обращал внимание. Кстати, в том же JEdit эти "Elastic Tabstop" как-то слабо развиты пока, хотелось бы получше, как минимум, работа не только с явными таб-ами (т.е. и поддержка soft-tab через пробелы, сейчас там этого нет).
Также можно добавить что-то вроде указания для переменных какой использовать автокомплит: где-то из файла, это из такого-то XML, тут из jar-файла, здесь из таблиц в СУБД, и т.д. Как я понимаю, у тебя намечается создание каких-то провайдеров для автокомплита и др. Т.е. создается некий набор API (если его ещё нет), где можно будет ваять разные источники данных и т.п. На основе этого, я так понимаю, есть и идеи прикрутить ctags. Такие разные провайдеры для всяких случаев — реально очень хорошие помощники.

Кстати, так к слову, для ФАР-а есть плагин YAC, который делает хорошее автодополнение по файлам, всяким системным объектам и пр. — неплохо помогает для написания команд и bat-файлов (это кроме автокомплита в самом фаре). Это пример, где можно подсмотреть реализацию такого же провайдера для HE.

PSV>>Вот если посмотреть в Sublime, то можно заметить, что скроллбар фактически дублируется ползунком в мини-мапе.

PSV>>Одним словом, можно объединить мини-мап, Overview Bar, скроллбар в один мега-пупер контрол, который заставит облизываться даже пользователей Sublime. А кнопки вверх/вниз в скроллбаре фактически не нужны.
K>Да действительно, был не прав. Скролит по всему документу. Просто мини изображение только по части документа (попробуй реально большой документ). А overview bar — по всему документу. Те больше соответствует инфо скроллеру.
K>Скролл бар позволяет скролить постранично/построчно с помощью мыши. Если это убрать, народ работающий с мышью будет возмущаться.
K>Так что если делать, совместить не сильно получится, только для небольших документов как то можно. Но пока желания нет . По крайней мере не в 1.50

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

Я почему на это обращаю внимание, вот в JEdit все эти хрени выглядят как-то так:


Тут ещё из-за такой темы для Swing-а и жирный splitter. Конечно, даренному коню в зубы не смотрят, но как-то это "не для имиджа". Было бы лучше, если бы взять Sublime и заменить его скроллбар на что-то типа инфо-скроллера, указанного тобой ранее, где выводились бы чёрточки из overview bar. Причём в этом новом скроллбаре нужен такой же плоский и полупрозрачный индикатор, как в минимапе, что-то по мотивам всяких айфонов, чтобы это всё гармонично выглядело.
Я конечно, понимаю, что тебе в лом возиться с переделкой скроллбаров, даже на уровне OwnerDraw, в любом случае это гемор.


И раз тут уже вспомнили про интерфейс... Очень хорошо, когда есть возможность настраивать цвета не только для панели с текстом, но и для всего интерфейса редактора, всех панелей. При этом, чтобы одним махом можно было бы быстро переключиться с одной темы на другую, или запустить редактор с нужным ключом. Очень неприятно, когда включена тёмная тема в тексте, а вокруг есть светлые панели.
Я так понимаю, что тебя MFC сильно ограничивает в этом. Пока в лучшем случае, ты сможешь лишь добавить тему для интерфейса в стиле а-ля офис 2010, если есть обновление для соответствующей библиотеки.


И ещё одно замечание. Я заметил, что в диалоге настроек не все элементы имеют раздел справки (по кнопке-вопросику). Я понимаю, что перед релизом ты будешь рихтовать help. Я обращаю внимание, что есть элементы, которые ссылаются не на свой раздел, ряд контролов указывают на одно и тоже (кто-то не на своё).
Re[18]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 10.04.12 19:20
Оценка:
Здравствуйте, Denys V., Вы писали:

DV>Кромен настроек билда — какие из этих "миллиона" настроек вы считаете важными?

DV>вот к примеру я пользую на данный момент Netbeans для java проектов и MSVC2010 для С++... Все что я настраиваю в проекте относится к билду.
Ну вот касательно Netbeans'а например. У него можно заводить конфигурации различные (чем мы кстати интенсивно пользуемся). Под каждую конфигурацию можно настроить команду построения, команду очистки, команду запуска. Соответственно на тулбаре у нас выпадающий список с конфигурациями. А справа от него кнопки построить, очистить, запустить, отладить. И они действуют в соответствующие с текущим конфигом. Довольно удобно и это как раз следствие системы проектов. Хотя естественно это всё не принципиально и можно без всего этого обойтись. Но раз уж есть, то почему бы не использовать.

И ещё там можно настроить под проект каталоги для анализатора кода. Правда это мы не используем — загнали все библиотеки в общесистемные настройки.

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

DV>А в случае с java — там вообще папка с pom.xml считается "своим" проектом — все что нетбинс своего создает это файлы с с моими кастомными правилами запуска. Аля такие то аргументы коммандной строки, такая то директория текущая и тд... Это я даже в свн не добавляю естественно. Проекта как такого нет — полет нормальный. Боюсь что пользователям qmake, cmake, scons вы тоже не объясните зачем нужны эти проекты. Как правило они только мешают своей ограниченностью. делаете к примеру svn mv для файла — и все — проект накрылся — почему? Если я к примеру всего лишь поменял .h на .hpp — и это самый простой и безобидный пример

Хаха. ))) Мы как раз используем scons для всего. И как раз поэтому (ну точнее это одна из причин) я и ищу "просто мощный редактор" (см. первое сообщение в теме), а не IDE. Но к сожалению пока ни одного редактора поддерживающего подсветку, автокомплит и навигацию уровня монстро-IDE нет. Поэтому и приходится пользоваться ими, хотя нам нужен именно только редактор.
Re[18]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 10.04.12 19:21
Оценка:
Здравствуйте, MasterZiv, Вы писали:

MZ>Ага. Фиг там !

MZ>Нет там проектов.
MZ>Там проект -- это поддерево каталогов в файловой системе.

Ну может проектов и нет, но зато настроек проекта море...
Re[19]: Нормальный редактор для C++ - существует ли?
От: Kefir http://www.hippoedit.com
Дата: 10.04.12 20:15
Оценка:
Здравствуйте, PSV100, Вы писали:

PSV>Здравствуйте, Kefir, Вы писали:


K>>Ну ты то все равно не будешь пользоваться, так что твой реквест не считается Я посмотрел, мне чтобы добавить рамочку, придется кое что менять (использую CreateSolidCared? надо будет переходить на CreateCaret). Так что пока — фиг с ней .

PSV>Я подам жалобу на официальный форум .
Давай У меня еще один аргумент против появился: в этом режиме у меня не будет работать/будет некрасиво Case Caret (когда высота каретки зависит от текущего регистра).

K>>Удаление я пока не показываю. Я не делаю diff а запоминаю как атрибут строки была ли она модифицирована/сохранена и манипулирую этими данными после undo/redo.

PSV>Имхо, этот diff не шибко и нужен. С одной стороны, может быть и приятно, когда там слева всё показывается (кстати, такими же цветами, как в diff-сравнивалке), но с другой, какое-то "попугайство" даже излишне.
Да, такой diff в принципе не сильно полезен. Основная его цель показывать измененные строки — это то что пользователям действительно надо. Видеть что они поменяли в текущей сессии. У меня даже навигация по этим измененным линиям есть.

PSV>Да, что-то по мотивам форм/шаблонов. Я как раз и обратил на это внимание, поскольку ты намекал на то, что намечается расширение шаблонов кода по мотивам TextMate.

PSV>Я тут сам подумал немного на досуге и, откровенно говоря, даже не могу сообразить, как такой эффект можно сделать. Ведь нужно как-то вычислять эту нужную область, причём могут быть несколько кандидатов-шаблонов на срабатывание, и пользователь, после первичной работы с шаблоном, может изменить контекст (текст внутри нужной области), а затем попытаться снова работать с шаблоном. Под несколькими кандидатами я подразумеваю следующее: в идеале нужно, чтобы я стал курсором куда-то, где раньше работал шаблон, затем клацнул, например, "Ctrl+E Tab" — редактор сам "прокачал", какой здесь нужно запустить шаблон, и я поехал жать tab куда мне нужно, редактировать и т.д. Тут важно ещё корректно разрулить ситуацию, когда редактор может ошибиться, выбрать не тот шаблон для работы, или шаблон может заработать, но поверх ранее видоизмененного для него контекста, т.е. гораздо хуже, если редактор начнёт править данные не так, как нужно, вместо того, чтобы сказать: я не могу догнать, чего от меня нужно.
PSV>Скорее всего, для указания форматов внутри шаблона кода уже будет недостаточно одних переменных, способов форматирования или каких-то вычислений (всё это обязательно должно быть). Может потребоваться введение каких-то уже явных синтаксических инструкций, вида "тут ключевое слово такое-то", "здесь начало такой-то синтаксической области", "а тут такая-то Label" и т.д. Это может усложнить написание шаблонов, т.е. они будут не для каждой кухарки.
PSV>Короче говоря, маловероятны такие фантазии. Но всё-таки есть смысл, что-то покумекать над этим.
Я видел нечто подобно для XML комментариев C# в Visual Studio (уже давно, не знаю осталось ли еще). Там область комментариев была как бы блокирована, и показывалась в одном виде а при двойном клике переключалась в другой режим (уже текстовый) и ее можно было редактировать. Область шаблона определялась по неким тегам. Можно было бы сюда копать, но очень будет там много нюансов, так что скорее всего работы будет больше чем пользы Но посмотреть, если мне уже нечего будет делать можно будет

PSV>А так, тут, как для обычных Sublime-подобных сниппетов, можно добавить эти резиновые табы, на которые ты обращал внимание. Кстати, в том же JEdit эти "Elastic Tabstop" как-то слабо развиты пока, хотелось бы получше, как минимум, работа не только с явными таб-ами (т.е. и поддержка soft-tab через пробелы, сейчас там этого нет).

У меня вроде поддержка софт табов есть (если я тебя правильно понял). Я Elastic Tabstops в jEDIT потом заметил, когда тебе написал. Но имплементацию не проверял. Референсная версия по ссылке, что я привел. В НЕ я не делал, но у меня есть кое какие наработки по автоматическим позициям в таких случаях, базируясь на информации с верхних и нижних линий. Но пока динамически не растягивается, как в Elastic Tabstops.

PSV>Также можно добавить что-то вроде указания для переменных какой использовать автокомплит: где-то из файла, это из такого-то XML, тут из jar-файла, здесь из таблиц в СУБД, и т.д. Как я понимаю, у тебя намечается создание каких-то провайдеров для автокомплита и др. Т.е. создается некий набор API (если его ещё нет), где можно будет ваять разные источники данных и т.п. На основе этого, я так понимаю, есть и идеи прикрутить ctags. Такие разные провайдеры для всяких случаев — реально очень хорошие помощники.

Да, я буду делать как плагины, соответственно через API, единственно будет вопрос как потом внутреннюю информация с информацию от плагинов смешивать (теже метки, что сейчас для определения функций используются).

PSV>Кстати, так к слову, для ФАР-а есть плагин YAC, который делает хорошее автодополнение по файлам, всяким системным объектам и пр. — неплохо помогает для написания команд и bat-файлов (это кроме автокомплита в самом фаре). Это пример, где можно подсмотреть реализацию такого же провайдера для HE.

Ага спасибо — запишу себе. У меня уже был запланирован completion для файлов (теже инклуды вставлять), но думал самому все парсить придется.

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

PSV>Тут ещё из-за такой темы для Swing-а и жирный splitter. Конечно, даренному коню в зубы не смотрят, но как-то это "не для имиджа". Было бы лучше, если бы взять Sublime и заменить его скроллбар на что-то типа инфо-скроллера, указанного тобой ранее, где выводились бы чёрточки из overview bar. Причём в этом новом скроллбаре нужен такой же плоский и полупрозрачный индикатор, как в минимапе, что-то по мотивам всяких айфонов, чтобы это всё гармонично выглядело.
PSV>Я конечно, понимаю, что тебе в лом возиться с переделкой скроллбаров, даже на уровне OwnerDraw, в любом случае это гемор.

Я когда делал Overview Bar рассматривал вариант рисования на скрол баре, но потом отбросил. С одной стороны — сложнее, с другой стороны, при наложении ползунка (даже прозрачного) поверх информационных блоков — будет мешанина, в которой ничего не понять. И чаще всего, соответственно это будет для текущего "окна", что не очень хорошо (хотя с другой стороны все видно и так, на экране, если документ не большой, но а если большой или длинная строка без переноса?). Плюс к этому — сплит скин. Который добавляет свои проблемы, так как придется дублировать скроллер, он уменьшиться, на нем будет хуже все видно.


А если экстремальный вариант с 4-мя представлениями либо двумя наоборот (понятно, что это никто не использует но все же)?

PSV>>>- вроде для выделений есть режимы Reset/Restore, но как-то они не так работают. Посмотрите опять же на Sublime.

K>>Ну не знаю. Режимом пользуются не часто, но нареканий не было. Я гляну.
PSV>Тут надо одновременно клацать и там и здесь. Пока заметил, что Reset в sublime не всегда сразу всё сбрасывает, как-то он удобнее.
Посмотрел кстати на версию Undo/Redo selection в Sublime. Это все же не тоже самое что и Reset/Restore selection в HE. Оно и называется Soft Undo/Redo. Sublime просто сохраняет в общую историю изменений, наряду с реальными изменениями текста, изменения позиций курсора/выделений (моде еще что). И при отмене, либо пропускает все до изменения текста (если нормальное Undo) либо идет более "мелкими" шагами, включающими и изменения выделений позиций, при Soft Undo. Функция конечно крутая, это да, но работает это только потому что к одному документу привязано только одно представление (в Sublime нет ни split screen ни еще одного вида документа в другом окне — стандартный MFC функционал). А как это забабахать если представлений много и позиции/выделения у них свои — история то общая, в документе.
У меня все эти функции реализованы отдельно (позиции курсора, выделения — правда только последнее ). Перемещения каретки тоже вообще то в документе сохраняется. Че так не помню. Баг наверное, но пока не жаловались — не нашли.

PSV>И раз тут уже вспомнили про интерфейс... Очень хорошо, когда есть возможность настраивать цвета не только для панели с текстом, но и для всего интерфейса редактора, всех панелей. При этом, чтобы одним махом можно было бы быстро переключиться с одной темы на другую, или запустить редактор с нужным ключом. Очень неприятно, когда включена тёмная тема в тексте, а вокруг есть светлые панели.

PSV>Я так понимаю, что тебя MFC сильно ограничивает в этом. Пока в лучшем случае, ты сможешь лишь добавить тему для интерфейса в стиле а-ля офис 2010, если есть обновление для соответствующей библиотеки.
Инвестировать в GUI я не хочу пока. Перееду потом на VS 2011 и перейду на новый MFC, убью свою GUI библиотеку, и от новой MFC уже буду плясать. Все равно все эти екстеншены придется таскать.

PSV>И ещё одно замечание. Я заметил, что в диалоге настроек не все элементы имеют раздел справки (по кнопке-вопросику). Я понимаю, что перед релизом ты будешь рихтовать help. Я обращаю внимание, что есть элементы, которые ссылаются не на свой раздел, ряд контролов указывают на одно и тоже (кто-то не на своё).

Та с помощью там вообще завал Это как раза та неблагодарная работа, неинтересная и за которую деньги не платят. Контекстный help буду править по месту, как будут жаловаться.
Re[20]: Нормальный редактор для C++ - существует ли?
От: PSV100  
Дата: 10.04.12 22:19
Оценка:
Здравствуйте, Kefir, Вы писали:

K>Я видел нечто подобно для XML комментариев C# в Visual Studio (уже давно, не знаю осталось ли еще). Там область комментариев была как бы блокирована, и показывалась в одном виде а при двойном клике переключалась в другой режим (уже текстовый) и ее можно было редактировать. Область шаблона определялась по неким тегам. Можно было бы сюда копать, но очень будет там много нюансов, так что скорее всего работы будет больше чем пользы Но посмотреть, если мне уже нечего будет делать можно будет


Имхо, там, скорее всего, работают спецпарсеры. Я думаю, что ты идею правильно понял: сработал где-то сниппет, повводил я данные, закончил ввод, сниппет как бы отключился. Потом я ушёл в другое место и т.д., потом вернулся назад, что-то здесь подправил, т.е. уже изменил контекст, захотел кайфа — клацнул, а редактор сам догнал, какой нужно включить сниппет, и "пошла жара", или же он (редактор) отказался, вежливо.
На сколько это реально — мне тяжело сказать. В тех же вимах/эмаксах — сниппеты на уровне Sublime.

K>У меня вроде поддержка софт табов есть (если я тебя правильно понял). Я Elastic Tabstops в jEDIT потом заметил, когда тебе написал. Но имплементацию не проверял. Референсная версия по ссылке, что я привел. В НЕ я не делал, но у меня есть кое какие наработки по автоматическим позициям в таких случаях, базируясь на информации с верхних и нижних линий. Но пока динамически не растягивается, как в Elastic Tabstops.

Ну, вроде да, у тебя есть преобразование табов в пробелы, как и в JEdit. А вот эти Elastic Tabstops в JEdit сейчас работают только тогда, когда табы вводятся как есть, без преобразования в пробелы. Поэтому, лично я ими просто не могу пользоваться.
А я больше имел в виду следующее. Неплохо было бы иметь возможность для шаблонов, этих сниппетов, указывать выравнивание по столбцам, т.е. некую виртуальную таблицу, чтобы само выравнивалось, по мотивам этих резиновых табов. А если будет как в org-mode в эмаксе — там и таблицы рисуются, не только виртуальные — вообще шик.

K>Да, я буду делать как плагины, соответственно через API, единственно будет вопрос как потом внутреннюю информация с информацию от плагинов смешивать (теже метки, что сейчас для определения функций используются).


Я не совсем понял, о чём конкретно речь. Вот в JEdit наплодились исторически всякие разные плагины для кучи разных способов и источников данных в рамках автокомплита. В последнее время появилось вполне грамотное решение: можно взять небольшой жабий класс (из плагина-API), переопределить с пяток методов и получить один автокомплит, но я сам подключаю туда свои источники, используя свой код, или подключая программно другие плагины, и т.д. Причём это можно сделать из макроса, не только из бинарного плагина. И ничего сложного, для тех, кому нужно.
И в целом, в JEdit не плохо развиты такие обобщающие средства — есть относительно несложное API, можно накатать свою какую-то обработку текста, включая полноценные парсеры для разбора, и получи сразу и автокомплит, и броузер кода, и списки ошибок и прочих элементов и т.д. — наколенный Эклипс (конечно, сообщество разработчиков, хоть и мизерное, но даёт эффект, одному человеку не под силу всё).

K>Я когда делал Overview Bar рассматривал вариант рисования на скрол баре, но потом отбросил. С одной стороны — сложнее, с другой стороны, при наложении ползунка (даже прозрачного) поверх информационных блоков — будет мешанина, в которой ничего не понять. И чаще всего, соответственно это будет для текущего "окна", что не очень хорошо (хотя с другой стороны все видно и так, на экране, если документ не большой, но а если большой или длинная строка без переноса?). Плюс к этому — сплит скин. Который добавляет свои проблемы, так как придется дублировать скроллер, он уменьшиться, на нем будет хуже все видно.


Понятно. В твоём случае, имхо, если сделать минимап как в Sublime — он нормально впишется, т.к. этот Overview Bar у тебя, как бы, отдельно, не внутри текстовой панели. Скорее всего, ты сам так и планируешь.

K>Посмотрел кстати на версию Undo/Redo selection в Sublime. Это все же не тоже самое что и Reset/Restore selection в HE. Оно и называется Soft Undo/Redo. Sublime просто сохраняет в общую историю изменений, наряду с реальными изменениями текста, изменения позиций курсора/выделений (моде еще что). И при отмене, либо пропускает все до изменения текста (если нормальное Undo) либо идет более "мелкими" шагами, включающими и изменения выделений позиций, при Soft Undo. Функция конечно крутая, это да, но работает это только потому что к одному документу привязано только одно представление (в Sublime нет ни split screen ни еще одного вида документа в другом окне — стандартный MFC функционал). А как это забабахать если представлений много и позиции/выделения у них свои — история то общая, в документе.

K>У меня все эти функции реализованы отдельно (позиции курсора, выделения — правда только последнее ). Перемещения каретки тоже вообще то в документе сохраняется. Че так не помню. Баг наверное, но пока не жаловались — не нашли.
Понятно. Вот что значит, профессиональный взгляд.
Кстати, удобной работы с документами/буферами реально не хватает в том же Sublime, и в HippoEdit тоже, к сожалению. У твоих пользователей это не так востребовано, похоже.

K>Инвестировать в GUI я не хочу пока. Перееду потом на VS 2011 и перейду на новый MFC, убью свою GUI библиотеку, и от новой MFC уже буду плясать. Все равно все эти екстеншены придется таскать.

А сейчас свое расширение работает в интерфейсе, не Codejock какой-нибудь? А новая MFC уже какая-то настраиваемая, по мотивам цветовых тем как в новой студии (я сейчас этими вопросами не занимаюсь) ?

PSV>>И ещё одно замечание. Я заметил, что в диалоге настроек не все элементы имеют раздел справки (по кнопке-вопросику). Я понимаю, что перед релизом ты будешь рихтовать help. Я обращаю внимание, что есть элементы, которые ссылаются не на свой раздел, ряд контролов указывают на одно и тоже (кто-то не на своё).

K>Та с помощью там вообще завал Это как раза та неблагодарная работа, неинтересная и за которую деньги не платят. Контекстный help буду править по месту, как будут жаловаться.
Вот она халтура где
Re[21]: Нормальный редактор для C++ - существует ли?
От: PSV100  
Дата: 13.04.12 17:19
Оценка:
Здравствуйте, PSV100, Вы писали:

PSV>[...]


Дополню по поводу этих супер-сниппетов. Я немного поработал в HippoEdit, и заметил, что есть теоретические шансы что-то сделать в этом направлении. Вот картинка:



Я не разбирался подробно в правилах для синтаксиса, но эти Label и области синтаксиса у тебя отличные штуки. Система вызывает уважение. Вот сейчас курсор находится внутри метода generateParameterReifierCode и вверху показывается имя метода и его корректное определение, как полноценный заголовок синтаксической области (в моём понятии). Если я зайду курсором ниже во внутрь цикла "for", то система вычисляет новую вложенную область и корректно также показывает её заголовок, т.е. расписывает оператор for со всем содержимым в его скобках.
Так вот, можно дальше развить этот механизм, и реализовать правила для организации некоего режима для модификации/перехода по данным, по мотивам сниппетов. Назовём его условно "режим формы".

Например, для "for" уже как-то определено, что его "заголовочная область" находится внутри скобок. Пусть я нахожусь где-то внутри "for", клацнул "Ctrl-E Tab" — включился режим формы, я перелетел на начало цикла, на первое слово внутри скобок. Дальше я могу клацать tab/shift-tab и прыгать по словам внутри скобок, редактировать их, как в сниппетах. При этом, если есть одинаковые слова, например, переменные для цикла, при этом желательно учитывать, чтобы они находились не перед и не после точки (т.е. это не свойства/методы) — это как-то зависит от синтаксиса или как указали для синтаксической области, то сразу работает множественное изменение для этих одинаковых данных.
И таким же образом реализуется режим произвольной "формы ввода" — выделили любой блок (не при множественном выделении) и также внутри прыгаем по словам и можем их редактировать, включая одинаковые слова. Т.е. это нечто того режима, на который я давал когда-то ссылку как пример в IDE Lazarus-а (здесь). Для выше примера с циклом "for" можно сказать, что это частный случай этого универсального режима, только мы явно не выделяем область внутри скобок оператора for.

Дальше. Пусть я переехал курсором выше цикла for, здесь уже область самой функции. Нажимаю "Ctrl-E Tab" — включаю режим формы и курсор прыгает на название метода, табом я прыгаю по именам параметров, типам и т.д. — т.е. внутри заголовка функции. Но при этом одинаковые слова также подсвечиваются и в соседней синтаксической области — JavaDoc-комментарии (имена параметров, сама функция). Т.е. нужно указать в файле-синтаксисе, что эти две области повязаны друг с другом (в этом случае расположены последовательно, так их можно отличать от других областей в тексте, ведь комментариев много, к разным функциям, и возможны другие варианты, когда области могут быть однозначно определены на уровне синтаксиса, например, разделы interface и implementation).
А когда я в самой области JavaDoc-комментария, то, соответственно, одинаковые слова подсвечиваются и в области функции. Но в самой области javadoc я прыгаю не по каждому слову, а по каким-то внутренним содержательным областям (их нужно определять в синтаксисе внутри javadoc): сразу выделяется вся область основного описательного комментария до аннотаций, при этом если я, скажем удалил текст, то внешний вид этого места должен быть корректно перестроен, т.е. должны учитываться отступы, звёздочки в начале строки и прочие префиксы и суффиксы (тут должен сработать другой режим, о котором была речь раньше). Дальше я прыгаю на само слово-аннотацию (т.е. на "@param"), дальше на значение этой аннотации и т.д.

А механизм сниппетов будет сам по себе, но похожий в принципах управления с режимом формы и логически с ним повязан (об этом ниже). Я тут глянул документацию по Sublime и заметил, что там эти сниппеты не очень развиты. Кроме самих переменных, которые могут быть как бы виртуальными (указывать на текущий выделенный текст, результат работы внешней программы и т.д.), слабовато развиты механизмы вычислений, есть какие-то преобразования через регэкспы. В Jedit как-то помощнее, можно писать полноценный код:
private ${2:Type} ${1:field};

/**
 * Getter function for the field $1
 */ 
public $2 get${1=firstUp(s)}() {
    return $1;
}

/**
 * Setter function for the field $1
 */
public void set${1=firstUp(s)}($2 $1){
    this.$1 = $1;
}

Т.е. писать код так: ${number=code}, где в параметре s содержится текст переменной, на которую ссылается эта позиция.
Также можно писать полноценные кодо-шаблоны:
<table>
<# for(i=0; i<=5; i++){ #>
  <tr>
  <# for(j=0; j<=5; j++){ #>
    <td><#= i*j #></td>
  <# } #>
  </tr>
<# } #>
</table>

Но лично мне такая PHP-лапша не нравится. Для таких случаев удобны генераторы кода через прямое программирование, как, например, делает Cog:
// This is my C++ file.
...
/*[[[cog
import cog
fnames = ['DoSomething', 'DoAnotherThing', 'DoLastThing']
for fn in fnames:
    cog.outl("void %s();" % fn)
]]]*/
//[[[end]]]
...

Что превращается в:
// This is my C++ file.
...
/*[[[cog
import cog
fnames = ['DoSomething', 'DoAnotherThing', 'DoLastThing']
for fn in fnames:
    cog.outl("void %s();" % fn)
]]]*/
void DoSomething();
void DoAnotherThing();
void DoLastThing();
//[[[end]]]
...

Т.е. лучше полностью самому печатать через out/outl, с нужным контролем всего форматирования, например, всех пробелов. Для сниппетов нужно просто указать код для выполнения, а такое форматирование через "[[...]]]" удобно для генераторов кода в самом тексте исходника. Я писал макрос — клацнул и сразу на месте обновился код (есть ещё возможность указывать контрольные суммы для проверок на предмет обнаружения ручного вмешательства в генерированный код, на сайте Cog есть примеры).

Но это не всё. Вот код:
CREATE TABLE inventory
(
   id          INT IDENTITY(1,1)   PRIMARY KEY,        -- это первичный ключ
   product     VARCHAR(50)         UNIQUE,             -- здесь уникальность
   quantity    INT,
   price       DECIMAL(18,2)                           -- ещё комментарий
);

В типовых этих сниппетах не хватает:

— повторяемость ввода. Вот здесь как-то можно задать подшаблон для ввода строки с информацией о поле таблицы. Нужен триггер, например, enter — поехали новый ввод (новая строка). Могут потребоваться и другие способы: ввели запятую при наборе параметра функции — перескочили на ввод нового параметра (повторяем подшаблон);

— инвариантность ввода. Вот если ввели в позиции слово PRIMARY, значит следующее будет KEY (автоматом добавили). Также нужно указание разных источников автокомплита, включая и элементарные списки (типа встроенные типы SQL);

— необязательность ввода. Пусть в полях ввода при работе сниппета светятся какие-то подсказки, например, влетел я в позицию для ввода, где может быть PRIMARY KEY, здесь может выделенным текстом светится: "PRIM UNIQ CHECK...". Как только я жму буквы — начинается ввод, не хочу — нажал tab и перелетел дальше или тут же на месте "перешли" к воду новой позиции (в зависимости от текущей ситуации с форматированием текста). Дальше, например, мне предлагают ввод комментария, но перед позицией поля ввода уже светится префикс "-- ", я ввожу текст или просто сразу enter — поехали заново подшаблон на новой строке, при этом, если я не ввел комментарий — префикс "-- " убрался;

— автовыравнивание текста. Причём нужны не только столбцы (типа этих резиновых табов), но и "объединение" виртуальных ячеек, разное выравнивание (влево, вправо, по центру, по ширине разбросать), короче говоря, виртуальные таблицы;

— и др. Имхо, направление ясно.

Здесь однозначно нужно делать простое и гибкое API для реализации "режима формы" и сниппетов, которое будет доступно и для текстовых макросов/скриптов. Тогда можно найти компромисс. Что-то дать возможность по простому задать декларативно в шаблонах (например, для виртуальных таблиц: $<tr> $<td> $</td> и т.д.), но "продвинутую" часть будет проще програмлять вручную. Тогда разработчик синтаксиса для языка сможет создать и типовой наборчик крутых сниппетов (кроме обычных), но и остальные, если захотят, тоже повозятся.
И этот же API нужен и для режима формы ввода для синтаксической области. Например, при редактировании заголовка функции, как в примере выше, можно программно корректировать сразу и область JavaDoc, скажем, вписывать там новые "@param ...". И это всё в рамках имеющегося парсера в редакторе, не на основе глобального AST для языка, которое в взрослых IDE.

Этот функционал можно связать с быстрыми переходами по мотивам вимператора, о котором говорили раньше. Например, при работе в форме ввода в такой синтаксической области CREATE TABLE (...) я чего-то клацнул, подсветились элементы внутри, ввёл пару букв — перелетел и сразу продолжаем форму ввода. Или при обычной работе я клацнул и включил режим быстрого перехода — перелетел в нужную синтаксическую область (можно подсвечивать только их начало) — и сразу поехал режим формы.

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

Вроде всё. Обязательно запиши себе, хотя бы из-за чувства уважения: у меня мозги плавились, пока писал. Потом выбросишь .

А вот тот бред, по поводу того, что такой функционал реализовать только через сниппеты — можно выбросить. Я думал так: пусть мы находимся в том цикле "for" — клацнули "включить режим формы", редактор пытается подобрать шаблон по поводу "for", на основе их содержимого, как-то его запустить, с учётом того, что теперь позиции тех же переменных могут не соответствовать тому, что указано в шаблоне, но и т.д. Когда только как бы одна универсальная форма ввода для соответствующей синтаксической области — это вполне реально. И эти формы ввода вполне гармонично должны работать с независимыми сниппетами.


И небольшое замечание. Всё-таки несколько задёрганный индикатор текущей строки в редакторе, когда он прыгает вверх-вниз при прокрутке экрана (при его крайнем положении вверху/внизу и прокрутка через клавиатуру) — как-то портит солидность. Имхо, может быть, есть смысл как-то подправить цикл обработки сообщений, что ли. Но это не страшно.
Re[21]: Нормальный редактор для C++ - существует ли?
От: Kefir http://www.hippoedit.com
Дата: 14.04.12 19:17
Оценка:
Здравствуйте, PSV100, Вы писали:

PSV>Имхо, там, скорее всего, работают спецпарсеры. Я думаю, что ты идею правильно понял: сработал где-то сниппет, повводил я данные, закончил ввод, сниппет как бы отключился. Потом я ушёл в другое место и т.д., потом вернулся назад, что-то здесь подправил, т.е. уже изменил контекст, захотел кайфа — клацнул, а редактор сам догнал, какой нужно включить сниппет, и "пошла жара", или же он (редактор) отказался, вежливо.

PSV>На сколько это реально — мне тяжело сказать. В тех же вимах/эмаксах — сниппеты на уровне Sublime.
Если этого нет в emacs то либо это очень сложно и много языковых нюансов, либо нафиг никому не надо, либо решаеться другими путями.
Я вообще не уверен что сильное расширение движка сниплетов необходимо. Да, в HE еще многих необходимых вещей не хватает, как то tabstops или наборы значений на выбор и множественное изменение. Но встраивать зачатки программирования? Нафиг? Если все это можно сделать через скриптинг, и гораздо более еффективно. Зачем еще один велосипед с перекывающимся функционалом? Может скриптинг для кого то будет сложнее в освоении, но любым инструментом надо учиться пользоваться правильно. И мне, как разработчику меньше гемороя.

K>>У меня вроде поддержка софт табов есть (если я тебя правильно понял). Я Elastic Tabstops в jEDIT потом заметил, когда тебе написал. Но имплементацию не проверял. Референсная версия по ссылке, что я привел. В НЕ я не делал, но у меня есть кое какие наработки по автоматическим позициям в таких случаях, базируясь на информации с верхних и нижних линий. Но пока динамически не растягивается, как в Elastic Tabstops.

PSV>Ну, вроде да, у тебя есть преобразование табов в пробелы, как и в JEdit. А вот эти Elastic Tabstops в JEdit сейчас работают только тогда, когда табы вводятся как есть, без преобразования в пробелы. Поэтому, лично я ими просто не могу пользоваться.
PSV>А я больше имел в виду следующее. Неплохо было бы иметь возможность для шаблонов, этих сниппетов, указывать выравнивание по столбцам, т.е. некую виртуальную таблицу, чтобы само выравнивалось, по мотивам этих резиновых табов. А если будет как в org-mode в эмаксе — там и таблицы рисуются, не только виртуальные — вообще шик.
Было бы круто Если бы у меня на все хватало времени

K>>Да, я буду делать как плагины, соответственно через API, единственно будет вопрос как потом внутреннюю информация с информацию от плагинов смешивать (теже метки, что сейчас для определения функций используются).

PSV>Я не совсем понял, о чём конкретно речь. Вот в JEdit наплодились исторически всякие разные плагины для кучи разных способов и источников данных в рамках автокомплита. В последнее время появилось вполне грамотное решение: можно взять небольшой жабий класс (из плагина-API), переопределить с пяток методов и получить один автокомплит, но я сам подключаю туда свои источники, используя свой код, или подключая программно другие плагины, и т.д. Причём это можно сделать из макроса, не только из бинарного плагина. И ничего сложного, для тех, кому нужно.
PSV>И в целом, в JEdit не плохо развиты такие обобщающие средства — есть относительно несложное API, можно накатать свою какую-то обработку текста, включая полноценные парсеры для разбора, и получи сразу и автокомплит, и броузер кода, и списки ошибок и прочих элементов и т.д. — наколенный Эклипс (конечно, сообщество разработчиков, хоть и мизерное, но даёт эффект, одному человеку не под силу всё).
Возможно информация собираемая редактором и предоставляемая плагином будет дублироваться. Надо заводить правила как разруливать конфликты. Но конечно все решаемо. У меня тоже практически все можно сделать через скриптинг. Без бинарных плагинов. Поэтому я и упоминал "скриптовые плагины". Для AutoComplete пока еще API не добавил.

PSV>Понятно. В твоём случае, имхо, если сделать минимап как в Sublime — он нормально впишется, т.к. этот Overview Bar у тебя, как бы, отдельно, не внутри текстовой панели. Скорее всего, ты сам так и планируешь.

Как я я писал, я его пока не планирую Но да, надо будет как то расширить OverviewBar дополнительной областью.

PSV>Кстати, удобной работы с документами/буферами реально не хватает в том же Sublime, и в HippoEdit тоже, к сожалению. У твоих пользователей это не так востребовано, похоже.

Да, у меня никто не спрашивал. А какие конкретно проблемы решаються этой самой удобной работой с буферами. Пока я только от тебя видел пример с областью в которой собирается autocomplete.

K>>Инвестировать в GUI я не хочу пока. Перееду потом на VS 2011 и перейду на новый MFC, убью свою GUI библиотеку, и от новой MFC уже буду плясать. Все равно все эти екстеншены придется таскать.

PSV>А сейчас свое расширение работает в интерфейсе, не Codejock какой-нибудь? А новая MFC уже какая-то настраиваемая, по мотивам цветовых тем как в новой студии (я сейчас этими вопросами не занимаюсь) ?
Нет, это у меня надстройка над стандартным MFC, тоже на базе одной свободной имплементации с codeproject. Но правда, говно из говна. Я там где надо подточил,кое что переписал, но все равно менять там что-нибудь еще тот геморой.
Да, вроде новая MFC достаточно продвинута. MS просто купила готовое расширение своего старого MFC у BCGSoft и подрихтовала чуток. Но я думаю мне будет достаточно, либо вообще уходить с MFC и все переписывать на кросс платформ.
Re[22]: Нормальный редактор для C++ - существует ли?
От: Kefir http://www.hippoedit.com
Дата: 14.04.12 21:23
Оценка:
Здравствуйте, PSV100, Вы писали:

сказать что я все понял — будет неправдой Ну думаю основную мысль я ухватил. Себе записал, буду разбираться, когда займусь усовершенствованием code templates / они же snippets.
Основные вещи что я вынес для себя:
— да, наверное использовать вызовы скриптов из snippets для расширения не плохая идея. Уже было у меня в туду, но теперь еще определенней.
— EasyMotion можно добавить — можно найти не одно применение, и если сделать удобно, будет неплохо. Да и в принципе там работы не много, и логика понятна как мне, так скорее всего и пользователю будет.
— Synchronos edit — неплохо, я уже его давно заметил, когда еще появилось у CodeGear. Это потом его только похоже в SyncEdit перетащили. Не удивительно, и то и то дельфийцы. Тоже хотел добавить — нравится и думаю будет полезно, но опять же упирается в множественное выделение которого еще не сделал.
— неплохо бы добавить такие in-text формы... В принципе у меня можно какие угодно диалоги из скриптов создавать (модальные/немодальные), а это будет как альтернатива, твой режим формы. Раскрытый шаблон, где поля ввода это placeholders в тексте.
— навороченные сниппеты — ну их нафиг. Сделаю необходимое, остальное как скриптовые расширение пусть пользователи пишут если им надо. Работы будет до черта, куча неопределенных сценариев, написать эти сниппеты для всех синтаксисов — у меня ни времени, ни знаний по специфике синтаксиса не хватит. Идея конечно интересная, но сделать что то работающее, для одного человека — это целый релиз работы.

PSV>Я не разбирался подробно в правилах для синтаксиса, но эти Label и области синтаксиса у тебя отличные штуки. Система вызывает уважение. Вот сейчас курсор находится внутри метода generateParameterReifierCode и вверху показывается имя метода и его корректное определение, как полноценный заголовок синтаксической области (в моём понятии). Если я зайду курсором ниже во внутрь цикла "for", то система вычисляет новую вложенную область и корректно также показывает её заголовок, т.е. расписывает оператор for со всем содержимым в его скобках.

PSV>Так вот, можно дальше развить этот механизм, и реализовать правила для организации некоего режима для модификации/перехода по данным, по мотивам сниппетов. Назовём его условно "режим формы".
У меня просто есть регулярное выражение (label), которое привязывается к scope (открывающий закрывающий тег). Много пользы для режима пользы это не принесет — надо будет писать что то свое.

PSV>Например, для "for" уже как-то определено, что его "заголовочная область" находится внутри скобок. Пусть я нахожусь где-то внутри "for", клацнул "Ctrl-E Tab" — включился режим формы, я перелетел на начало цикла, на первое слово внутри скобок. Дальше я могу клацать tab/shift-tab и прыгать по словам внутри скобок, редактировать их, как в сниппетах. При этом, если есть одинаковые слова, например, переменные для цикла, при этом желательно учитывать, чтобы они находились не перед и не после точки (т.е. это не свойства/методы) — это как-то зависит от синтаксиса или как указали для синтаксической области, то сразу работает множественное изменение для этих одинаковых данных.

PSV>И таким же образом реализуется режим произвольной "формы ввода" — выделили любой блок (не при множественном выделении) и также внутри прыгаем по словам и можем их редактировать, включая одинаковые слова. Т.е. это нечто того режима, на который я давал когда-то ссылку как пример в IDE Lazarus-а (здесь). Для выше примера с циклом "for" можно сказать, что это частный случай этого универсального режима, только мы явно не выделяем область внутри скобок оператора for.
Понравилась ссылка на фичи из Lazarus (я в прошлый раз видно пропустил) — неплохо сделали демонстрацию. По поводу шаблонов — это то что я уже написал. Не представляю как можно написать общие синтакс не зависимые правила, ну или пусть частично зависимые, не зная реально грамматики языка (а у меня ее в схемах нет). Можно конечно как то извращаться с регулярками, но думаю, все равно будет убого. Единственный реальный выход — предоставить базовые функции (множественное выделение, табы и тд), и отдать это все синтакс специфичным скриптам.

PSV>Дальше. Пусть я переехал курсором выше цикла for, здесь уже область самой функции. Нажимаю "Ctrl-E Tab" — включаю режим формы и курсор прыгает на название метода, табом я прыгаю по именам параметров, типам и т.д. — т.е. внутри заголовка функции. Но при этом одинаковые слова также подсвечиваются и в соседней синтаксической области — JavaDoc-комментарии (имена параметров, сама функция). Т.е. нужно указать в файле-синтаксисе, что эти две области повязаны друг с другом (в этом случае расположены последовательно, так их можно отличать от других областей в тексте, ведь комментариев много, к разным функциям, и возможны другие варианты, когда области могут быть однозначно определены на уровне синтаксиса, например, разделы interface и implementation).

PSV>А когда я в самой области JavaDoc-комментария, то, соответственно, одинаковые слова подсвечиваются и в области функции. Но в самой области javadoc я прыгаю не по каждому слову, а по каким-то внутренним содержательным областям (их нужно определять в синтаксисе внутри javadoc): сразу выделяется вся область основного описательного комментария до аннотаций, при этом если я, скажем удалил текст, то внешний вид этого места должен быть корректно перестроен, т.е. должны учитываться отступы, звёздочки в начале строки и прочие префиксы и суффиксы (тут должен сработать другой режим, о котором была речь раньше). Дальше я прыгаю на само слово-аннотацию (т.е. на "@param"), дальше на значение этой аннотации и т.д.
Круто Согласен. Ты мне хотя бы правила опиши, чтоб можно было для разных синтаксисов использовать, а я уже запрограммирую — сложно это. В особенности для generic редактора.

PSV>А механизм сниппетов будет сам по себе, но похожий в принципах управления с режимом формы и логически с ним повязан (об этом ниже). Я тут глянул документацию по Sublime и заметил, что там эти сниппеты не очень развиты. Кроме самих переменных, которые могут быть как бы виртуальными (указывать на текущий выделенный текст, результат работы внешней программы и т.д.), слабовато развиты механизмы вычислений, есть какие-то преобразования через регэкспы. В Jedit как-то помощнее, можно писать полноценный код:

PSV>
PSV>private ${2:Type} ${1:field};

PSV>/**
PSV> * Getter function for the field $1
PSV> */ 
PSV>public $2 get${1=firstUp(s)}() {
PSV>    return $1;
PSV>}

PSV>/**
PSV> * Setter function for the field $1
PSV> */
PSV>public void set${1=firstUp(s)}($2 $1){
PSV>    this.$1 = $1;
PSV>}
PSV>

PSV>Т.е. писать код так: ${number=code}, где в параметре s содержится текст переменной, на которую ссылается эта позиция.
PSV>Также можно писать полноценные кодо-шаблоны:
PSV>
PSV><table>
PSV><# for(i=0; i<=5; i++){ #>
PSV>  <tr>
PSV>  <# for(j=0; j<=5; j++){ #>
PSV>    <td><#= i*j #></td>
PSV>  <# } #>
PSV>  </tr>
PSV><# } #>
PSV></table>
PSV>

PSV>Но лично мне такая PHP-лапша не нравится. Для таких случаев удобны генераторы кода через прямое программирование, как, например, делает Cog:
PSV>
PSV>// This is my C++ file.
PSV>...
PSV>/*[[[cog
PSV>import cog
PSV>fnames = ['DoSomething', 'DoAnotherThing', 'DoLastThing']
PSV>for fn in fnames:
PSV>    cog.outl("void %s();" % fn)
PSV>]]]*/
PSV>//[[[end]]]
PSV>...
PSV>

PSV>Что превращается в:
PSV>
PSV>// This is my C++ file.
PSV>...
PSV>/*[[[cog
PSV>import cog
PSV>fnames = ['DoSomething', 'DoAnotherThing', 'DoLastThing']
PSV>for fn in fnames:
PSV>    cog.outl("void %s();" % fn)
PSV>]]]*/
PSV>void DoSomething();
PSV>void DoAnotherThing();
PSV>void DoLastThing();
PSV>//[[[end]]]
PSV>...
PSV>

PSV>Т.е. лучше полностью самому печатать через out/outl, с нужным контролем всего форматирования, например, всех пробелов. Для сниппетов нужно просто указать код для выполнения, а такое форматирование через "[[...]]]" удобно для генераторов кода в самом тексте исходника. Я писал макрос — клацнул и сразу на месте обновился код (есть ещё возможность указывать контрольные суммы для проверок на предмет обнаружения ручного вмешательства в генерированный код, на сайте Cog есть примеры).

Зачем оно все надо, если есть полноценный скриптинг.

PSV>Но это не всё. Вот код:

PSV>
PSV>CREATE TABLE inventory
PSV>(
PSV>   id          INT IDENTITY(1,1)   PRIMARY KEY,        -- это первичный ключ
PSV>   product     VARCHAR(50)         UNIQUE,             -- здесь уникальность
PSV>   quantity    INT,
PSV>   price       DECIMAL(18,2)                           -- ещё комментарий
PSV>);
PSV>

PSV>В типовых этих сниппетах не хватает:

PSV>- повторяемость ввода. Вот здесь как-то можно задать подшаблон для ввода строки с информацией о поле таблицы. Нужен триггер, например, enter — поехали новый ввод (новая строка). Могут потребоваться и другие способы: ввели запятую при наборе параметра функции — перескочили на ввод нового параметра (повторяем подшаблон);


PSV>- инвариантность ввода. Вот если ввели в позиции слово PRIMARY, значит следующее будет KEY (автоматом добавили). Также нужно указание разных источников автокомплита, включая и элементарные списки (типа встроенные типы SQL);


PSV>- необязательность ввода. Пусть в полях ввода при работе сниппета светятся какие-то подсказки, например, влетел я в позицию для ввода, где может быть PRIMARY KEY, здесь может выделенным текстом светится: "PRIM UNIQ CHECK...". Как только я жму буквы — начинается ввод, не хочу — нажал tab и перелетел дальше или тут же на месте "перешли" к воду новой позиции (в зависимости от текущей ситуации с форматированием текста). Дальше, например, мне предлагают ввод комментария, но перед позицией поля ввода уже светится префикс "-- ", я ввожу текст или просто сразу enter — поехали заново подшаблон на новой строке, при этом, если я не ввел комментарий — префикс "-- " убрался;


PSV>- автовыравнивание текста. Причём нужны не только столбцы (типа этих резиновых табов), но и "объединение" виртуальных ячеек, разное выравнивание (влево, вправо, по центру, по ширине разбросать), короче говоря, виртуальные таблицы;


PSV>- и др. Имхо, направление ясно.


PSV>Здесь однозначно нужно делать простое и гибкое API для реализации "режима формы" и сниппетов, которое будет доступно и для текстовых макросов/скриптов. Тогда можно найти компромисс. Что-то дать возможность по простому задать декларативно в шаблонах (например, для виртуальных таблиц: $<tr> $<td> $</td> и т.д.), но "продвинутую" часть будет проще програмлять вручную. Тогда разработчик синтаксиса для языка сможет создать и типовой наборчик крутых сниппетов (кроме обычных), но и остальные, если захотят, тоже повозятся.

PSV>И этот же API нужен и для режима формы ввода для синтаксической области. Например, при редактировании заголовка функции, как в примере выше, можно программно корректировать сразу и область JavaDoc, скажем, вписывать там новые "@param ...". И это всё в рамках имеющегося парсера в редакторе, не на основе глобального AST для языка, которое в взрослых IDE.

PSV>Этот функционал можно связать с быстрыми переходами по мотивам вимператора, о котором говорили раньше. Например, при работе в форме ввода в такой синтаксической области CREATE TABLE (...) я чего-то клацнул, подсветились элементы внутри, ввёл пару букв — перелетел и сразу продолжаем форму ввода. Или при обычной работе я клацнул и включил режим быстрого перехода — перелетел в нужную синтаксическую область (можно подсвечивать только их начало) — и сразу поехал режим формы.


PSV>Также, если будет такой функционал, то упростится реализация таких плагинов, как для работы с Zen Coding (имхо, очень вероятно, что тебя уже просили о нём подумать).

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

PSV>Вроде всё. Обязательно запиши себе, хотя бы из-за чувства уважения: у меня мозги плавились, пока писал. Потом выбросишь .

Сделал. Говорю тебе — не дай идее умереть, лучше тебя ее никто не воплотит. Я тебе предоставлю платформу .

PSV>А вот тот бред, по поводу того, что такой функционал реализовать только через сниппеты — можно выбросить. Я думал так: пусть мы находимся в том цикле "for" — клацнули "включить режим формы", редактор пытается подобрать шаблон по поводу "for", на основе их содержимого, как-то его запустить, с учётом того, что теперь позиции тех же переменных могут не соответствовать тому, что указано в шаблоне, но и т.д. Когда только как бы одна универсальная форма ввода для соответствующей синтаксической области — это вполне реально. И эти формы ввода вполне гармонично должны работать с независимыми сниппетами.

Да, в принципе это может быть реально.. Регуляркой выделить placeholders, по правилу определить их соответствие (или по подобию) и перейти в режим формы. Это в принципе мы уже обсуждали, о так сказать постоянных snippets.

PSV>И небольшое замечание. Всё-таки несколько задёрганный индикатор текущей строки в редакторе, когда он прыгает вверх-вниз при прокрутке экрана (при его крайнем положении вверху/внизу и прокрутка через клавиатуру) — как-то портит солидность. Имхо, может быть, есть смысл как-то подправить цикл обработки сообщений, что ли. Но это не страшно.

Я, если честно, не понял в чем дело. Вышли мне пример сценарий (или видео), тогда скорее всего поправлю. Я уже много из твоих замечаний поправил, но пока версию не обновил — кое что доделываю. Так что могу успеть поправить в ней же.
Re: Нормальный редактор для C++ - существует ли?
От: MasterZiv СССР  
Дата: 17.04.12 12:17
Оценка:
Кто знает что про Netbeans, проблема запустить его, окоянного, под Unity
(видимо, проблема именно в этом).

Короче, Netbeans 7.1.1, Ubuntu 11.10, Unity -- запускаешь netbeans, --
и всё висит, нетбинс не появляется. Сначала показывается его заставочка,
потом пропадает, и -- всё.
Есть лекарства ?
Posted via RSDN NNTP Server 2.1 beta
Re[22]: Нормальный редактор для C++ - существует ли?
От: PSV100  
Дата: 17.04.12 21:58
Оценка:
Здравствуйте, Kefir, Вы писали:

K> [...]


Рад, если удалось свои сумбурные мысли как-то более-менее наконец-то донести попонятней. Да, нужен хороший API для реализаций всяких навороченных режимов редактирования. В тех же эмаксах и вимах есть немало умненьких помогалок, добавлялок, удалялок и пр., реализованных энтузиастами специально для конкретных языков через ручной скриптинг, это особенно приятно, если они соседствуют с мощными функциями полноценной IDE (правда на практике такое счастье в основном для таких языков как Лисп, Хаскель, Эрланг и др.). А универсальные сниппеты везде сделаны по мотивам TextMate, где-то есть свои нюансы, какие-то небольшие плюшки (в принципе, полезно на них глянуть, хотя бы в рамках документации/описания). В некоторых IDE, где есть мощный семантический анализ, могут предоставить дополнительные переменные вида "имя текущего класса", "тип возвращаемого значения из функции" и т.д.

Почему меня, собственно, "пробило" по поводу этих сниппетов/форм ввода. Я иногда, на досуге, обдумываю, как можно сделать удобный для себя гипотетический редактор (который, может быть, когда-то появится в реале). В том числе кумекаю и над интерфейсом в редакторе. Я оцениваю варианты, чем можно заменить, например, в Sublime его такие панели, как для режима поиска. И до меня "дошло", что как раз вместо GUI-панели можно задействовать те же текстовые буферы, где "включить" спец-режим формы ввода для задания условия для поиска. И тогда можно, фактически, реализовать концепцию, например, эмакса: везде одна и та же работа с текстом, везде можно использовать типовые функции для операций с текстом (быстрый поиск, быстрый переход как тот же EasyMotion, чего-то выделить и скопировать и т.д.). Это мощная техника, удачные принципы, очень удобно для работы.
Также по таким мотивам можно реализовать какие-то всплывающие быстрые немодальные диалоги в редакторе при наборе текста около позиции курсора, как окна для автокомплита, но где можно осуществить ввод каких-то данных перед какой-то операцией по генерации кода, какого-то рефакторинга и т.п. (в тяжёлых случаях запросить специальный ввод "yes"). И т.п.
Тогда для кроссплатформенного интерфейса для редактора останется потребность лишь в системном меню и стандартном скроллбаре (ну может какие-то ещё обязательные элементы для Мак-платформы, что-то и в линухе). Остальные элементы — тулбары с кнопками (скорее всего, их можно ликвидировать полностью или заменить "кастомными" для редактора элементами, т.е. нестандартными в системе тулбарами), разделители текстовых панелей, переключение буферов, информационный вывод — это вполне могут быть "фирменные" свои элементы, одинаковые везде, и несложные. Остальной функционал: какие-то таблицы, деревья, ссылки на элементы и картинки (типа какой-то wiki-view) и пр. — всё через стандартный текстовый буфер, со специфичным включенным mode — как в эмаксе.

PSV>>Кстати, удобной работы с документами/буферами реально не хватает в том же Sublime, и в HippoEdit тоже, к сожалению. У твоих пользователей это не так востребовано, похоже.

K>Да, у меня никто не спрашивал. А какие конкретно проблемы решаються этой самой удобной работой с буферами. Пока я только от тебя видел пример с областью в которой собирается autocomplete.
Да, это иногда удобно для автокомплита. Могу также кроме этого вспомнить из личной практики:

— классическое сравнение двух файлов (версий текста), в большинстве случаев это выполняется в режиме включенного diff-а (больше наворотов, чем в JEdit, как-то и не хочется);

— удобно рядом открыть второй буфер с этим же файлом, но в другом месте в тексте, например, подсматривать как реализована функция. Или рядом открыть другой файл и что-то также подсматривать, тут и фолдинг пригодится, если он удобен для этого документа: клацнул — сверни до 2-го уровня — получи список функций, что-то нужное раскрыл, посмотрел, можно что-то виртуально вырезать (narrow-режим) — короче говоря, броузер кода "на коленке" (часто это удобнее и приятнее, чем какое-то GUI-дерево для структуры кода, или когда нет полноценного парсера для документа). Можно макрос забабахать, который будет открывать что нужно и переходить куда надо в зависимости от курсора в тексте. Можно несколько файлов открыть рядом.

Тут рядом на форуме давали ссылку на Light Table. Фактически, его многие фишки из этого Code Bubbles можно реализовать "вручную" (кстати, идея об интерактивной отладке, когда рядом видны все значения для всех элементов прямо сразу в коде и результаты работы — очень интересна, тут кложура, конечно, молодец в этих вопросах).

В виме/эмаксе абсолютно всё открывается как полноправные буферы с текстом, включая и всякие консоли, какие-то автокомплиты для команд и пр. В JEdit чуть другая концепция — там отдельно выделены dock-панели по сторонам для специальных средств, тех же консолей и пр., которые удобно управляются и клавиатурой. Они могут быть и "плавающими", есть и альтернативы, как docking в Нетбинсе, Эклипсе, только это никому особо не нужно. Есть понятие активного текстового буфера, он специально выделяется цветом слева — удобно, например, когда я в консоли, то я сразу вижу, относительно какого буфера будут даваться команды. Теоретически нужен какой-то компромисс между эмакс и JEdit: вместо GUI-панелей в JEdit нужны специализированные текстовые буферы, о которых я говорил выше.

К сожалению, возня в MDI-интерфейсе крайне не удобна, а имеющийся сплитинг в НЕ далеко не всё покрывает (почему именно MDI и пр. в НЕ — совершенно очевидно).

K>>Инвестировать в GUI я не хочу пока. Перееду потом на VS 2011 и перейду на новый MFC, убью свою GUI библиотеку, и от новой MFC уже буду плясать. Все равно все эти екстеншены придется таскать.

PSV>А сейчас свое расширение работает в интерфейсе, не Codejock какой-нибудь? А новая MFC уже какая-то настраиваемая, по мотивам цветовых тем как в новой студии (я сейчас этими вопросами не занимаюсь) ?
K>Нет, это у меня надстройка над стандартным MFC, тоже на базе одной свободной имплементации с codeproject. Но правда, говно из говна. Я там где надо подточил,кое что переписал, но все равно менять там что-нибудь еще тот геморой.
K>Да, вроде новая MFC достаточно продвинута. MS просто купила готовое расширение своего старого MFC у BCGSoft и подрихтовала чуток. Но я думаю мне будет достаточно, либо вообще уходить с MFC и все переписывать на кросс платформ.

Тут позволю себе одну рекомендацию. Вот в Sublime сделали настраиваемый интерфейс, но через какую-то мутную возню со скинами, включая то, что нужно рисовать картинки для темы редактора. В большинстве случаев многих устраивает наличие хотя бы двух тем: светлой и тёмной (например, в серых тонах). Делать какие-то свои темы всем влом. Я в JEdit использую NimROD Look &amp; Feel — это что-то вроде темы для жабского swing-а (с сайта можно скачать его маленький jar-файл, и всякие для него темы, можно запустить этот jar — там есть специальный main-класс для тестирования настроек). Это более-менее вменяемая альтернатива многим "темам" для жабы, где указав всего несколько цветов можно раскрасить интерфейс как угодно. Я, например, задаю жёлтые тона для светлой темы (под Solarized) и синии цвета под тёмную тему (тема Atom для вима). Это пример, как можно реализовать глобальную настройку редактора, не только синтаксическую раскраску.

PSV>>И небольшое замечание. Всё-таки несколько задёрганный индикатор текущей строки в редакторе, когда он прыгает вверх-вниз при прокрутке экрана (при его крайнем положении вверху/внизу и прокрутка через клавиатуру) — как-то портит солидность. Имхо, может быть, есть смысл как-то подправить цикл обработки сообщений, что ли. Но это не страшно.

K>Я, если честно, не понял в чем дело. Вышли мне пример сценарий (или видео), тогда скорее всего поправлю. Я уже много из твоих замечаний поправил, но пока версию не обновил — кое что доделываю. Так что могу успеть поправить в ней же.

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

А пока попробую объяснить. Нужно установить курсор на последнюю строку на экране, с которой начнётся прокрутка текста. Нажимаем один раз "вниз". Экран прокручивается на одну строку, при этом индикатор текущей строки как бы прокрутится вместе с текстом (в этот момент его видно, и есть ощущение, что он как бы прыгнул вверх) и затем тут же прыгнет на строку ниже, т.е. теперь это текущая строка. А если нажать "вниз" и не отпускать, т.е. прокрутить сразу на несколько строк, то на прокрутку каждой строки этот индикатор реагирует также, в результате есть ощущение, что он постоянно прыгает вверх-вниз, в глазах какая-то задёрганность. Это не всегда ярко заметно, имхо, зависит от текста, как работают парсеры, как обновляется инфа вверху по поводу всяких label, вложенных структур и т.д. В том же JEdit этот индикатор текущей строки всегда "как вкопанный", никуда не дёргается.

Всё это мелочи, на которые многие не обратят внимание.
Re[13]: Нормальный редактор для C++ - существует ли?
От: Kefir http://www.hippoedit.com
Дата: 17.04.12 21:59
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Да, а мне тут баг встретился — не хочет назначать ассоциации файлов. Ставлю галочки, нажимаю update — окно молча закрывается, но в проводнике никаких изменений... Это потому что бета или нет? )


Обновил бету — вроде все баги отписанные здесь поправил. В том числе поиск по нескольким CHM.
Re[14]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 18.04.12 08:40
Оценка:
Здравствуйте, Kefir, Вы писали:

K>Обновил бету — вроде все баги отписанные здесь поправил. В том числе поиск по нескольким CHM.


Поставил) Остальные баги/фичи пока не смотрел, а вот про хелп глянул. Всё работает, правда какой-то баг есть. То ли у меня такой chm файл, то ли ещё что... В общем при его открытие появляется ещё одна закладка с путём вида "res://C:\WINDOWS\system32\shdoclc.dll/navcancl.htm#javascript:void(0)". И не появляется она только если нужна страница уже открыта. И при этом ещё исходный файл иногда начинает выглядеть пустым (переключение закладок это исправляет).
яется
Re[15]: Нормальный редактор для C++ - существует ли?
От: Kefir http://www.hippoedit.com
Дата: 18.04.12 23:24
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Поставил) Остальные баги/фичи пока не смотрел, а вот про хелп глянул. Всё работает, правда какой-то баг есть. То ли у меня такой chm файл, то ли ещё что... В общем при его открытие появляется ещё одна закладка с путём вида "res://C:\WINDOWS\system32\shdoclc.dll/navcancl.htm#javascript:void(0)". И не появляется она только если нужна страница уже открыта. И при этом ещё исходный файл иногда начинает выглядеть пустым (переключение закладок это исправляет).


То ли у меня такой chm файл
Я думаю страница, которую ты открываешь, содержит java script, который срабатывает на onLoad. Ну или внутри embedded IE у меня по умолчанию отключено выполнение скриптов (я этого не проверял).
То что файл выглядит пустым, это скорее всего появилось окно без тайтл, и поэтому табы не обновились, но окно перекрыло открытый документ. Это наверное баг — можно поправить.
В любом случае, отошли мне chm (на supportbox hippoedit.com) и слово что искал, я проверю. С пустым фреймом скорее всего можно поправить без проблем, а с java script пока не знаю.
Re[23]: Нормальный редактор для C++ - существует ли?
От: Kefir http://www.hippoedit.com
Дата: 18.04.12 23:51
Оценка:
Здравствуйте, PSV100, Вы писали:

с "прыганьем" курсора при скролле, я вроде понял. Это у меня скорее всего оптимизация прорисовки, что обновляет позицию каретки только на idle, чтобы уменьшить количество обновлений при скролле. Можно будет это отключить для маленьких документов но оставить для терминальной сессии или больших документов. Поправлю. Версию я уже обновил, но чувствую я, что придется скоро заново обновлять. Бывает падает при выходе.
Для скринкастов вроде инструментов полно, тот же Snagit или Camtasia. Но уже не надо.

С "буферами" я вроде понял, имелось в виду больше взаимное расположение окон документов и их привязка друг к другу (типа синхронный скрол, хотя это только для diff что есть особый случай). Типа группы или варианты расположения как в Sublime. А так mdi + новый вид в новом окне + новый вид в сплиттере у меня уже есть. Может не привычно/не удобно, но "Вам шашечки или ехать"

Light Table я смотрел — да вариант гуи мне понравился. Этакий минимализм, аля гугл или Windows 8 Metro. Но эта тенденция меня пугает — раз богатый пользовательский интерфейс придумывали, значит это было кому то нужно? А то что происходит сейчас это все дань моде. Хотя конечно все базируется на здравых идеях, но скорее всего этого минимализма для программистских задач будет мало, и он всех требований не покроет, либо все будет как в emacs на клавиатуре, и с годом на освоение. Там в комментах подобное мнение тоже есть — хорошо для мини сценария, но будет ли это так же работоспособно/удобно в большом проекте. Другой пример — серая VS2011 с минималистким дизайном — народ тоже не доволен.
В общем, ко всему надо подходить с умом Может если писать что то новое, вариант Light Table не плох и там со временем можно будет решить все проблемы, но переделать существующий проект под его стиль — неблагодарный труд.
А идеи спереть/переработать — это да
Re[14]: Нормальный редактор для C++ - существует ли?
От: MasterZiv СССР  
Дата: 19.04.12 07:52
Оценка:
On 04/18/2012 01:59 AM, Kefir wrote:

> Обновил бету <http://forum.hippoedit.com/beta-version-test/alpha-1-50/&gt; — вроде


А это тольно Windows ? На GNU перенести нереально ?
Posted via RSDN NNTP Server 2.1 beta
Re[15]: Нормальный редактор для C++ - существует ли?
От: Kefir http://www.hippoedit.com
Дата: 19.04.12 08:43
Оценка:
Здравствуйте, MasterZiv, Вы писали:

MZ>А это тольно Windows ? На GNU перенести нереально ?


Да, только Windows. Перенести конечно возможно, но не реально
Работы много, и она, скорее всего не отобьется.
Re[16]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 19.04.12 09:07
Оценка:
Здравствуйте, Kefir, Вы писали:

K>В любом случае, отошли мне chm (на supportbox hippoedit.com) и слово что искал, я проверю. С пустым фреймом скорее всего можно поправить без проблем, а с java script пока не знаю.


Собственно вот https://sourceforge.net/projects/wxwindows/files/2.9.3/wxWidgets-docs-chm-2.9.3.zip/download он. )
Re[17]: Нормальный редактор для C++ - существует ли?
От: Kefir http://www.hippoedit.com
Дата: 19.04.12 09:55
Оценка:
Здравствуйте, alex_public, Вы писали:

K>>В любом случае, отошли мне chm (на supportbox hippoedit.com) и слово что искал, я проверю. С пустым фреймом скорее всего можно поправить без проблем, а с java script пока не знаю.

_>Собственно вот https://sourceforge.net/projects/wxwindows/files/2.9.3/wxWidgets-docs-chm-2.9.3.zip/download он. )

а слово? Что искать?
Re[16]: Нормальный редактор для C++ - существует ли?
От: MasterZiv СССР  
Дата: 19.04.12 10:36
Оценка:
> Да, только Windows. Перенести конечно возможно, но не реально
> Работы много, и она, скорее всего не отобьется.

Ну... как сказать, есть андроид...
Posted via RSDN NNTP Server 2.1 beta
Re[18]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 19.04.12 11:21
Оценка:
Здравствуйте, Kefir, Вы писали:

K>а слово? Что искать?


У меня на любом выскакивает проблема) Ну взять любой класс из библиотечки. wxString, wxWindow )
Re[24]: Нормальный редактор для C++ - существует ли?
От: PSV100  
Дата: 19.04.12 13:59
Оценка:
Здравствуйте, Kefir, Вы писали:

K>с "прыганьем" курсора при скролле, я вроде понял. Это у меня скорее всего оптимизация прорисовки, что обновляет позицию каретки только на idle, чтобы уменьшить количество обновлений при скролле. Можно будет это отключить для маленьких документов но оставить для терминальной сессии или больших документов.


Как-то этот курсор в ряде редакторов абсолютно "не прыгающий". В том же JEdit он какой-то всегда "вкопанный", как-будто сам по себе, без текста. Имхо, у каждого свои компромиссы между отрисовками, парсингом, обработка событий и т.д.
Если проблема "геморна", то можно смело "забить", ведь никто не обращал твоё внимание на это.

K>Для скринкастов вроде инструментов полно, тот же Snagit или Camtasia. Но уже не надо.


Ага, спасибо. Я уже сам попробовал парочку вариантов, но ничего и не получится: нет как бы сплошной беспрерывной записи видео (как ни старайся в настройках) и дёргание курсора незаметно.

K>Версию я уже обновил, но чувствую я, что придется скоро заново обновлять. Бывает падает при выходе.


А бывает и при входе. Я как-то пытался на одном компе с win7 запустить редактор, но не получилось: процесс немного висит и затем молча без сообщений и без окошек вылетает. Брандмауэр в винде этот процесс не валит (якобы, что он лезет в инет без спроса), запуск от "администратора" не помогает, антивирус вроде тоже не причём.
Версия не последняя, предыдущая. Последнюю сейчас проверить не могу, нет этого компа под рукой.


И ещё проблемы в обновленной версии — как-то кривовато работает режим при вводе длинных строк, когда делается wrap по границе окна (wrap по конкретному столбцу не пробовал): слово иногда (!) может обрезаться внутри, т.е. не перенестись целым словом на новую строку, нажимаешь следующую букву, может не одну, тогда всё переносится как надо. Вроде иногда переносится слово рановато, т.е. в конце виртуальной строки оно могло бы ещё влезть (но это может показалось).

И рекомендация: может есть смысл установить шрифт Consolas по умолчанию, вроде сейчас так многие делают, та же студия (если я не ошибаюсь).

K>В общем, ко всему надо подходить с умом Может если писать что то новое, вариант Light Table не плох и там со временем можно будет решить все проблемы, но переделать существующий проект под его стиль — неблагодарный труд.

K>А идеи спереть/переработать — это да

Да конечно нет смысла всё переделывать в имеющемся проекте, да и ненужно это конкретным пользователям (хотя многие просто не пробовали иное). А этот Light Table всего лишь концепт, сделанный вэб-дизайнером на вэб-технологиях. А эти всякие Bubbles-окошки, на мой взгляд, какие-то неудобные, особенно если в них только мышкой тыкать.
Кстати, вот в JEdit, в отличие от эмакса и вима, сел и поехал. Привыкать год ненужно. И мышкой, и клавой (без мыши) работать вполне удобно (но всё-таки, иногда проще мышкой тыкать), и всякие тулбары с кнопками не нужны, я даже не включаю традиционные tab-ы для переключения буферов, эти здоровые "combobox-ы" вверху буфера удобнее их (хотя можно сделать ещё удобнее).
Re[17]: Нормальный редактор для C++ - существует ли?
От: Kefir http://www.hippoedit.com
Дата: 19.04.12 20:01
Оценка:
Здравствуйте, MasterZiv, Вы писали:

>> Да, только Windows. Перенести конечно возможно, но не реально

>> Работы много, и она, скорее всего не отобьется.

MZ>Ну... как сказать, есть андроид...


Честно говоря я не понял, причем здесь андроид...
Портировать под андроид??
Re[19]: Нормальный редактор для C++ - существует ли?
От: Kefir http://www.hippoedit.com
Дата: 19.04.12 20:08
Оценка:
Здравствуйте, alex_public, Вы писали:

_>У меня на любом выскакивает проблема) Ну взять любой класс из библиотечки. wxString, wxWindow )


Проблема, скорее всего из-за скрипта подсветки слова поиска. У меня, в принципе, видимых проблем не заметно: да, поле пути стоит javascript:void(0), но страница правильная. Слово поиска — не подсвечено.
Скорее всего скрипт падает, и в зависимости от настроек IE, у наст разное поведение. Пустого фрейма тоже нет, но я предполагаю как он мог получиться — как писал: поправлю.
Со скриптом тоже гляну — пример есть.
Re[25]: Нормальный редактор для C++ - существует ли?
От: Kefir http://www.hippoedit.com
Дата: 19.04.12 20:22
Оценка:
Здравствуйте, PSV100, Вы писали:

PSV>Если проблема "геморна", то можно смело "забить", ведь никто не обращал твоё внимание на это.

Поправим

PSV>Версия не последняя, предыдущая. Последнюю сейчас проверить не могу, нет этого компа под рукой.

Да. Оно все таки бета. Все выловлю со временем. Просто не успеваю да и новые вещи добавляю, а они приносят новые баги

PSV>И ещё проблемы в обновленной версии — как-то кривовато работает режим при вводе длинных строк, когда делается wrap по границе окна (wrap по конкретному столбцу не пробовал): слово иногда (!) может обрезаться внутри, т.е. не перенестись целым словом на новую строку, нажимаешь следующую букву, может не одну, тогда всё переносится как надо. Вроде иногда переносится слово рановато, т.е. в конце виртуальной строки оно могло бы ещё влезть (но это может показалось).

Это я в этой версии обновил алгоритм wrap, для лучшей поддержки не пропорциональных фонтов. Тоже русский товарищ жаловался. Я долго забивал, а то переделал (только для небольших документов, для больших работает оптимизированный, старый вариант). Так что может что то работать не так. Скинь пример.
Еще там же было одно изменение, что строка должна начинаться только с буквы (точнее слова), а не пробела или знака препинания, а то выглядит не кошерно. Тоже замечание от того же товарища. Так что может это оно? Если конечно не получается — то режет где попало.

PSV>И рекомендация: может есть смысл установить шрифт Consolas по умолчанию, вроде сейчас так многие делают, та же студия (если я не ошибаюсь).

Он только с Vista (или XP? не помню), а у меня поддерживается все с Windows 98. C версии 1.50 только с Win 2000. Придется делать default в зависимости от версии. Но сделать можно конечно.

K>>В общем, ко всему надо подходить с умом Может если писать что то новое, вариант Light Table не плох и там со временем можно будет решить все проблемы, но переделать существующий проект под его стиль — неблагодарный труд.

K>>А идеи спереть/переработать — это да

PSV>Кстати, вот в JEdit, в отличие от эмакса и вима, сел и поехал. Привыкать год ненужно. И мышкой, и клавой (без мыши) работать вполне удобно (но всё-таки, иногда проще мышкой тыкать), и всякие тулбары с кнопками не нужны, я даже не включаю традиционные tab-ы для переключения буферов, эти здоровые "combobox-ы" вверху буфера удобнее их (хотя можно сделать ещё удобнее).

А если надо видеть все файлы сразу (табы тоже несут информационную нагрузку: изменен, блокирован, UAC) или переключиться в один клик? combo — вопрос спорный.
Тулбары с кнопками удобны для редких, но все же используемых функций и для более простого освоения интерфейса.
Re[20]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 19.04.12 21:38
Оценка:
Здравствуйте, Kefir, Вы писали:

K>Проблема, скорее всего из-за скрипта подсветки слова поиска. У меня, в принципе, видимых проблем не заметно: да, поле пути стоит javascript:void(0), но страница правильная. Слово поиска — не подсвечено.

K>Скорее всего скрипт падает, и в зависимости от настроек IE, у наст разное поведение. Пустого фрейма тоже нет, но я предполагаю как он мог получиться — как писал: поправлю.
K>Со скриптом тоже гляну — пример есть.

Да, может быть ещё разница потому что у меня на этой машине старый IE. Просто сам chm (вне редактора) открывается нормально и другие chm (в редакторе уже) открываются тоже нормально. Т.е. это как бы единственное такое исключение.
Re[18]: Нормальный редактор для C++ - существует ли?
От: MasterZiv СССР  
Дата: 20.04.12 09:50
Оценка:
> Честно говоря я не понял, причем здесь андроид...
> Портировать под андроид??

Ну, например.
Или просто под linux, он сейчаст тоеж популярнее стал.
Posted via RSDN NNTP Server 2.1 beta
Re[19]: Нормальный редактор для C++ - существует ли?
От: MasterZiv СССР  
Дата: 20.04.12 09:52
Оценка:
> Ну, например.
> Или просто под linux, он сейчаст тоеж популярнее стал.

Sorry, или ещё вот под iThings. Ну не линукс, но тоже
не винда.
Posted via RSDN NNTP Server 2.1 beta
Re[19]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 20.04.12 15:41
Оценка:
Здравствуйте, MasterZiv, Вы писали:

MZ>Ну, например.

MZ>Или просто под linux, он сейчаст тоеж популярнее стал.

Кстати огромная разница. Допустим наш софт переносится на нормальный linux и на osx простой перекомпиляцией. А под андроид фиг такое выйдет — надо обязательно переделывать интерфейс, да ещё и на этой кривой яве. Кстати, под iOS (iphone, ipad) тоже теоретически перекомпиляции достаточно, но на практике "взрослый" интерфейс там выглядит не так удобно, так что лучше тоже переделать.

В общем мне странно когда смешивают такие разные вещи. Windows, Linux, OS X — это одно, а Android и iOS — это совсем другое и проблемы для переноса принципиально разные.
Re[26]: Нормальный редактор для C++ - существует ли?
От: PSV100  
Дата: 20.04.12 17:06
Оценка:
Здравствуйте, Kefir, Вы писали:

PSV>>И рекомендация: может есть смысл установить шрифт Consolas по умолчанию, вроде сейчас так многие делают, та же студия (если я не ошибаюсь).

K>Он только с Vista (или XP? не помню), а у меня поддерживается все с Windows 98. C версии 1.50 только с Win 2000. Придется делать default в зависимости от версии. Но сделать можно конечно.

Да, скорее всего, Consolas начался с Vista, я помню, что на один комп с XP я его кидал вручную, забирал от win7. Но он в любом случае может быть на машине, та же студия его ставит при своей инсталяции (вроде бы).
Я почему обратил на это внимание. Я когда первый раз запустил редактор заметил, что отрисовка слегка неважнецкая (но в целом, нормальна), особенно на фоне софта, запущенного рядом. Я сразу сообразил, что нужно смотреть настройки шрифта (кстати, а настройки шрифта по умолчанию не на поверхности лежат, нужно чуть покопаться), но кто-то может не подумать из тех, кто скачал редактор "на посмотреть", может чуть испортить себе впечатление. Тут ещё и про высоту шрифта по умолчанию надо подумать, например, лично мне с Consolas на своей машине приятнее работать в 11, а не в 10 размере.

А вообще-то, уже пора свой фирменный шрифт в поставке вместе с редактором предоставлять, как делают некоторые редакторы под маком, например, Espresso (если я не ошибаюсь)

PSV>>Кстати, вот в JEdit, в отличие от эмакса и вима, сел и поехал. Привыкать год ненужно. И мышкой, и клавой (без мыши) работать вполне удобно (но всё-таки, иногда проще мышкой тыкать), и всякие тулбары с кнопками не нужны, я даже не включаю традиционные tab-ы для переключения буферов, эти здоровые "combobox-ы" вверху буфера удобнее их (хотя можно сделать ещё удобнее).

K>А если надо видеть все файлы сразу (табы тоже несут информационную нагрузку: изменен, блокирован, UAC) или переключиться в один клик? combo — вопрос спорный.
K>Тулбары с кнопками удобны для редких, но все же используемых функций и для более простого освоения интерфейса.

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

А эти табы для переключения буферов какие-то неудобные для меня, и не только в редакторах, а и в инет-броузерах всяких. Они становятся не информативными и слишком маленькими, когда их много, или появляется неудобная их прокрутка, или в два и более этажа их пытаются лепить. Они как-то непрактично смотрятся, если они не вверху окна, а где-то внутри, как заголовок буфера при сплите.
Плюсы "combo" в JEdit: рядом с именем файла виден его путь, откуда файл, удобно работать клавиатурой (клацнул — раскрыл список, или жмёшь вверх/вниз/pageUp/Down и пр. или ввёл пару букв и через быстрый поиск переключился куда надо), и мышкой нормально: клацнул в любом месте (не только на кнопку справа) — раскрыл список и выбрал (но не в один клик получается). Причём список буферов удобный: рядом пути, есть индикация об измененности буфера (и не только в списке). Недостаток: в combo нет рядом имён других файлов. Хотя я к этому привык и как-то вполне нормально.
В качестве альтернативы можно сделать как-то так: вместо tab-ов, в их классическом виде, можно сделать их аналог, в виде по мотивам твоей Hierarchy bar, где активная "tab" будет содержать и путь к файлу (поэтому она может быть длинной), а остальные рядом без пути, только имя файла, и остальные табы не нужно лепить все, только то, что нормально влезет, пусть даже несколько штук, в случае чего лучше дорисовать какие-нибудь "...", т.е. дать понять, что на экране не всё видно. Когда на активном табе нажали мышкой, или только навели курсор, раскрывается список с файлами (как в JEdit, т.е. с путями рядом и пр.) и можно выбрать мышкой. Т.е. такой себе симбиоз tab с combo.

Одним словом, у меня есть уже всякие разные взгляды и концепции по поводу удобного редактора, как раз в спартанском стиле по мотивам ранее указанного Light Table, с мощными автокомплитами, "режимами форм и сниппетов", "EasyMotion" для многих случаев и т.д., причём это всё не только для самой текстовой панели. Но это отдельная философия.

Я тут специально глянул на "глубину" проработки возможности работы через клаву. Есть "недочёты", но думаю, что их "ликвидация" нафиг не нужна большинству твоих пользователей. Например, в том же JEdit как-то поудобнее возможности в File Explorer: в списке с файлами нажал влево — наверх по каталогу, "/" — в корень дерева, "-" — каталог текущего буфера и пр. клавиши, как-то лучше взаимодействие между частями — дерево каталогов и список файлов (хотя я, имхо, просто привык к тому, что есть в JEdit). Или, например, я через Ctrl-Tab переключился на Bookmarks, но сам курсор туда не попал, т.е. сам контрол-список не установил в себя фокус ввода. Аналогично и File Explorer не получает в себя куда-то фокус ввода. Или я из этого списка закладок не могу уйти без возможности активировать закладку, т.е. просто что-то нажать и без действий вернуться в панель с текстом.

Кстати, заметил баг. Через Ctrl-Tab не получается переключиться на какой-нибудь Tool Window, если этот Window является как бы активным в своей области. Т.е., например, если внизу открыть Bookmarks и Find Result, то на Find я переключусь только тогда, если активным будет Bookmarks. А если, например, слева открыт будет только File Explorer, то на него фиг переключишься. Также глючит и окошко "Windows...".

А вообще-то, я раньше говорил о плагинах для FireFox по мотивам вима и эмакса. Рекомендую их попробовать. Осваиваются легко, для реальной работы из всего арсенала нужно с пяток функций и нужно запомнить несколько шорткатов, в общем, не напрягают никак. Они помогают понять сущность вима и эмакса (после этих плагинов становится понятно как там работать), реально дают удобство. После них для каждого софта хочешь найти свой "вимператор". Эти плагины помогут понять и прочувствовать, как лучше сделать какой-нибудь автокомплит, запускалку команд, "EasyMotion" и т.д., если у тебя планируется что-то из этого (а может и самому что-то захочется, без просьб пользователей). Это:

Pentadactyl — альтернативная ветка "вимператора" — всё по мотивам вима. Может полностью переделать интерфейс фокса, где внизу будет строка как статус-бар, куда выводится и инфа про открытую страницу, и информационные сообщения, можно свои кнопки добавить для кликанья мышью, и там же будет мощная комстрока. Есть и мощный автокомплит, и вывод многострочной инфы. Несложно расширять. Я, например, сделал себе быстрый перевод, выделенного текста на странице или через ручной ввод, всё намного удобней, чем типовые расширения для этого во многих броузерах;

KeySnail — это по мотивам эмакса. Этот плагин не переделывает интерфейс фокса, а дополняет его: есть и комстрока с автокомплитом, похожая на то, что есть в Pentadactyl, но со своими особенностями, показывается она только по требованию. Есть и разные функции в эмакс-стиле для редактирования текста в полях ввода. Для "EasyMotion" есть отдельный суб-плагин HoK (который приятнее, чем в Pentadactyl, имхо) и что-то ещё, а также и другие полезные плагины, например, для быстрого управления закладками и пр. По умолчанию в нём раскладка клавиш как в эмаксе, но можно легко сделать любую (из коробки вроде есть и привычная "виндовская").
Одним словом, это отличный пример, как можно GUI-редактор дополнить "эмаксовыми штучками".

Вот в них можно заметить ряд "мелочных полезностей", ну, например, автокомплит не закрывается, если я клацнул где-то мышью мимо его окна, я могу при наборе команды где-то что-то выделить мышей и скопировать текст, вставить его в комстроку, или переключиться на другую вкладку, затем вернуться и продолжить ввод, и пр.
Или вот этот "EasyMotion" используется не только для манипулирования ссылками на странице, но и над всеми элементами, включая и переход м/д полями ввода и пр.

Я ещё пользуюсь удобной запускалкой программ: TypeAndRun (а также там есть и всякие функции по управлению компом, калькулятор и пр.).
Это командная строка, открываемая по центру экрана (по умолчанию), где быстро вводишь команду и выполняешь. Там есть и история ввода, и хинт с инфой над строкой, и автокомплит с выпадающим списком и пр. Вот такая строка может отлично вписаться в твой редактор, где можно организовать переключение между буферами, открытие файлов, ввод команд, т.е. функции по мотивам Sublime.
При этом можно усовершенствовать, например, так: при переключении м/д буферами используется быстрый поиск, когда я ввожу буквы, а когда нажал пробел, то начинается ввод суб-команды, например в списке автокомплита уже содержатся возможные команды (close, close outhers, move left и т.д.), а вверху в хинте — имя выбранного буфера. Т.е. я ввожу: "ad c" — две буквы чтобы выбрать буфер, пробел — начинаем субкоманду, набрал "с" — выбрал close и жму enter.
Или организовать ввод команды так: набираем буквы — вводим команду с автокомплитом, если начинаем ввод с цифры — будем повторять действие — ввели 12 и нажали пробел — закрыли комстроку и ввели 12 пробелов. Также повторения можно указать и после ввода команды через пробел, даже если есть субкоманды/параметры.

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

Ну и чтобы два раза не вставать, могу сказать, что ещё гармонично дополняет все выше приведенные средства:

VistaSwitcher — удобная переключалка между окнами в системе вместо стандартной по alt-tab (через клаву и мышь);

AnVir — управление процессами и пр., удобен также тем, что в трее возле часов можно вывести иконки-индикаторы по загрузке процессоров, ОЗУ, дисков и пр., а также дополняет стандартные диалоги в винде, например, для открытия/сохранения файлов, рядом функций, как история папок и пр.;

ConEmu — эмулятор консоли, используется совместно с фаром. Но у меня есть небольшие подтормаживания при скроллинге в панели фара с файлами, поэтому особо не юзаю, но вещь приятная. Есть для фара ещё и другая подобная альтернатива: ConMan — менеджер консолей, т.е. в одном окне несколько консолей, но всё в обычном текстовом режиме, без GUI-примочек. Плюс к этому добавить тот плагин YAC для фара, о котором я говорил раньше, который дополняет кроме файлов и системные DosKey-макросы — получаем удобную работу с консолью, как в линухе.

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

K>Это я в этой версии обновил алгоритм wrap, для лучшей поддержки не пропорциональных фонтов. Тоже русский товарищ жаловался. Я долго забивал, а то переделал (только для небольших документов, для больших работает оптимизированный, старый вариант). Так что может что то работать не так. Скинь пример.

K>Еще там же было одно изменение, что строка должна начинаться только с буквы (точнее слова), а не пробела или знака препинания, а то выглядит не кошерно. Тоже замечание от того же товарища. Так что может это оно? Если конечно не получается — то режет где попало.

Изменения, конечно, грамотные, и нужно отметить, что у тебя мощный базовый функционал в редакторе, разные шрифты и пр., далеко не в каждом редакторе встретишь такое. Я так понимаю, что расстановка переносов в словах, как в word-e, уже не за горами

Я специально "тест-дравил", набирал этот пост в редакторе, написал специально многовато, и по ходу дела "фоткал" баги. Поэтому отчёт:



Здесь слово "разрывается", когда я дальше начну набирать остальные буквы (или хотя бы одну букву), то слово перенесётся нормально.



Здесь тоже самое, но не в конце текста, а при вставке внутри предложения. Также потом перенесётся нормально при вводе остальных букв.



Здесь слово Result перенеслось, хотя явно влезало. Позже при вводе дальше оно прыгнет вверх как положено.



Перенеслась кавычка после "вимператор".



А здесь кавычка осталась, не перенеслась.



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



А здесь интересный эффект: при наборе текста последний символ, в данном случае это точка в конце, настолько приблизился к краю окна, что "вытеснил" курсор — он как бы есть, но за пределами окна, его не видно. Если нажать enter, то он появится в новой строке.

В общем, если ты понабираешь текст, то, наверное, сам что-то увидишь. Могу посочувствовать, ибо задача не простая, этот wrap.

P.S. Вроде тут обсуждение HippoEdit как-то офтопное получилось, но полезное:

— автор этой темы вроде подсел на HE;
— тебя уже здесь просят про реализацию под линукс и андроид. Скоро маководы подтянутся;
— я, конечно, не в курсе о всей инфраструктуре вокруг HE, но здесь уже на два ведра больше конструктива, чем в форуме, откуда нужно скачивать бету, где с 2009 г. всего четыре странички непонятно чего.
Re[20]: Нормальный редактор для C++ - существует ли?
От: Kefir http://www.hippoedit.com
Дата: 21.04.12 00:18
Оценка:
Здравствуйте, MasterZiv, Вы писали:

MZ>Sorry, или ещё вот под iThings. Ну не линукс, но тоже

MZ>не винда.

Честно говоря, я слабо представляю как можно эффективно программировать даже на ipad. Чтобы сделать удобный редактор под него, это не порт, это новое направление, со своими концептами, подходами и тд. Причем еще абсолютно пустая, придется все делать с нуля (иметься в виду, специфика написания текстового редактора для программиста).

Под linux/unix там вроде бы понятнее, но вопрос мой был не в этом. А в том, отобьются ли эти труды финансово? Сомневаюсь. Можно было бы подумать про маки, но там уже тоже конкуренция есть, и пока подтянешься, будешь опять в хвосте. HippoEDIT это все же shareware (да бесплатная для exUSSR не коммерческого использования). Заниматься портированием из чистого альтруизма у меня желания нет. Я с большим удовольствием потрачу это время на развитие редактора под Windows. Да, наверное, если бы начинал сейчас, писал бы кросс-платформенно, а переделывать сейчас — слишком много работы.
Re[21]: Нормальный редактор для C++ - существует ли?
От: Kefir http://www.hippoedit.com
Дата: 21.04.12 00:23
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Да, может быть ещё разница потому что у меня на этой машине старый IE. Просто сам chm (вне редактора) открывается нормально и другие chm (в редакторе уже) открываются тоже нормально. Т.е. это как бы единственное такое исключение.


Посмотрел, что мог поправил. Хотя протестить не вышло. Теперь если и будут левые окна, то у них будет таб и они не перекроют текущий документ.
Еще поставил броузеру Silent mode чтобы не выбрасывал popups при ошибках.
Будет в новом обновлении.

Думал сделать подсветку поискового слова, но потом передумал — это замедлит открытие, и нафиг не надо..
Re[21]: Нормальный редактор для C++ - существует ли?
От: MasterZiv СССР  
Дата: 21.04.12 18:51
Оценка:
> Честно говоря, я слабо представляю как можно эффективно программировать даже на
> ipad. Чтобы сделать удобный редактор под него, это не порт, это новое
> направление, со своими концептами, подходами и тд. Причем еще абсолютно пустая,
> придется все делать с нуля (иметься в виду, специфика написания текстового
> редактора для программиста).

На iMac ? Я его имел в виду больше.

> Windows. Да, наверное, если бы начинал сейчас, писал бы кросс-платформенно, а

> переделывать сейчас — слишком много работы.

А на чём написано ? (чисто любопытно).
Posted via RSDN NNTP Server 2.1 beta
Re[20]: Нормальный редактор для C++ - существует ли?
От: MasterZiv СССР  
Дата: 21.04.12 18:52
Оценка:
> Кстати огромная разница. Допустим наш софт переносится на нормальный linux и на
> osx простой перекомпиляцией. А под андроид фиг такое выйдет — надо обязательно
> переделывать интерфейс, да ещё и на этой кривой яве.

Вроде там можно нативные приложения заставлять работать.
Не знаю, как, но можно. Ну ладно, не важно.
Posted via RSDN NNTP Server 2.1 beta
Re[2]: Нормальный редактор для C++ - существует ли?
От: ML380 Земля  
Дата: 21.04.12 22:30
Оценка:
Здравствуйте, PSV100, Вы писали:

PSV>Можно ещё JEdit глянуть. Сейчас им мало кто пользуется, но, имхо, зря. Он на джаве, но на порядки легче и быстрее эклипсов с нетбинсами.


Пользуюсь JEdit, потому как приходится работать в разных ОС с разными компиляторами для разных платформ. Собираю системой, основанной на Jam. Первое время, как стал пользоваться, ужасно напрягало отсутствие подсветки ошибок и автодополнения. Сейчас ничего, привык вроде.
Но, вот недавно надо было поковырять проект на студии... Студия + асистикс казалась просто сказочной по сравнению с JEdit...
Очень не нравится отсутствие возможности компилировать прям из редактора с последующим даблкликом по ошибке и переходом на сторку, ее содержащую. Существует ли такой плагин?
Re[21]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 22.04.12 13:59
Оценка:
Здравствуйте, MasterZiv, Вы писали:

MZ>Вроде там можно нативные приложения заставлять работать.

MZ>Не знаю, как, но можно. Ну ладно, не важно.

Там есть ndk. Так что грубо говоря весь движок можно просто перетащить (перекомпиляцией), а вот интерфейс всё равно придётся на java переписывать. В случае многих проектов это может быть просто. Но в случае подобного редактора, где по сути всё на интерфейс завязано...
Re[22]: Нормальный редактор для C++ - существует ли?
От: Kefir http://www.hippoedit.com
Дата: 22.04.12 22:39
Оценка:
Здравствуйте, MasterZiv, Вы писали:

MZ>На iMac ? Я его имел в виду больше.

Ну там уже TextMate, BBEdit, Sublime, и думается мне куча всего на Scintilla (хотя про Mac OS я не в курсе, знаю что под Limux она точное есть, значит скорее всего и под Unix).
Ну в общем я уже ответил почему, в пред-идущем топике.

MZ>А на чём написано ? (чисто любопытно).

C++, MFC, VS2005.
Re[27]: Нормальный редактор для C++ - существует ли?
От: Kefir http://www.hippoedit.com
Дата: 22.04.12 23:32
Оценка:
Здравствуйте, PSV100, Вы писали:

PSV>А вообще-то, уже пора свой фирменный шрифт в поставке вместе с редактором предоставлять, как делают некоторые редакторы под маком, например, Espresso (если я не ошибаюсь)

Да ну нафиг . Чужой шрифт вставлять — не хорошо, а свой надо еще написать... Пока просто убрал шрифт по умолчанию из базовой схемы и определяю динамически, если есть Consolas — беру его. Нет — Courier New. Только для новых пользователей.

PSV>А эти табы для переключения буферов какие-то неудобные для меня, и не только в редакторах, а и в инет-броузерах всяких. Они становятся не информативными и слишком маленькими, когда их много, или появляется неудобная их прокрутка, или в два и более этажа их пытаются лепить. Они как-то непрактично смотрятся, если они не вверху окна, а где-то внутри, как заголовок буфера при сплите.

PSV>Плюсы "combo" в JEdit: рядом с именем файла виден его путь, откуда файл, удобно работать клавиатурой (клацнул — раскрыл список, или жмёшь вверх/вниз/pageUp/Down и пр. или ввёл пару букв и через быстрый поиск переключился куда надо), и мышкой нормально: клацнул в любом месте (не только на кнопку справа) — раскрыл список и выбрал (но не в один клик получается). Причём список буферов удобный: рядом пути, есть индикация об измененности буфера (и не только в списке). Недостаток: в combo нет рядом имён других файлов. Хотя я к этому привык и как-то вполне нормально.
PSV>В качестве альтернативы можно сделать как-то так: вместо tab-ов, в их классическом виде, можно сделать их аналог, в виде по мотивам твоей Hierarchy bar, где активная "tab" будет содержать и путь к файлу (поэтому она может быть длинной), а остальные рядом без пути, только имя файла, и остальные табы не нужно лепить все, только то, что нормально влезет, пусть даже несколько штук, в случае чего лучше дорисовать какие-нибудь "...", т.е. дать понять, что на экране не всё видно. Когда на активном табе нажали мышкой, или только навели курсор, раскрывается список с файлами (как в JEdit, т.е. с путями рядом и пр.) и можно выбрать мышкой. Т.е. такой себе симбиоз tab с combo.
Я думаю — это вопрос вкуса, и спорить об этом бессмысленно. Если бы combo были так круты, мы бы их видели, по крайней мере чаще
У меня есть нормальный Tab Switch Window (Ctrl+Tab и не отпускать Tab, думаю ты уже нашел). Она перекрывает все то что есть в combo: там и список, и индикации и быстрый поиск (если не отпускать Ctrl и набирать часть имени) и данные по выделенному файлу в Details. Screenshots вставлять не хотел — не нравиться.
Полный путь файла, при желании, можно включить для показа в заголовке главного окна. Ну и Navigation Bar иногда показывает.

PSV>Одним словом, у меня есть уже всякие разные взгляды и концепции по поводу удобного редактора, как раз в спартанском стиле по мотивам ранее указанного Light Table, с мощными автокомплитами, "режимами форм и сниппетов", "EasyMotion" для многих случаев и т.д., причём это всё не только для самой текстовой панели. Но это отдельная философия.

Несомненно

PSV>Я тут специально глянул на "глубину" проработки возможности работы через клаву. Есть "недочёты", но думаю, что их "ликвидация" нафиг не нужна большинству твоих пользователей. Например, в том же JEdit как-то поудобнее возможности в File Explorer: в списке с файлами нажал влево — наверх по каталогу, "/" — в корень дерева, "-" — каталог текущего буфера и пр. клавиши, как-то лучше взаимодействие между частями — дерево каталогов и список файлов (хотя я, имхо, просто привык к тому, что есть в JEdit).

Записал.

PSV>Или, например, я через Ctrl-Tab переключился на Bookmarks, но сам курсор туда не попал, т.е. сам контрол-список не установил в себя фокус ввода. Аналогично и File Explorer не получает в себя куда-то фокус ввода. Или я из этого списка закладок не могу уйти без возможности активировать закладку, т.е. просто что-то нажать и без действий вернуться в панель с текстом.

Это похоже баг 1.50, в 1.49 там все работало корректно.

PSV>Кстати, заметил баг. Через Ctrl-Tab не получается переключиться на какой-нибудь Tool Window, если этот Window является как бы активным в своей области. Т.е., например, если внизу открыть Bookmarks и Find Result, то на Find я переключусь только тогда, если активным будет Bookmarks. А если, например, слева открыт будет только File Explorer, то на него фиг переключишься. Также глючит и окошко "Windows...".

Тоже новый "баг" — я эту часть переделывал на плагины, так что могло поломаться — поправлю.
А так переходить между активным документом и панелями можно и шоткатам: команда View.ActiveDocument и View.FileExplorer и тд.

PSV>А вообще-то, я раньше говорил о плагинах для FireFox по мотивам вима и эмакса. Рекомендую их попробовать. Осваиваются легко, для реальной работы из всего арсенала нужно с пяток функций и нужно запомнить несколько шорткатов, в общем, не напрягают никак. Они помогают понять сущность вима и эмакса (после этих плагинов становится понятно как там работать), реально дают удобство. После них для каждого софта хочешь найти свой "вимператор". Эти плагины помогут понять и прочувствовать, как лучше сделать какой-нибудь автокомплит, запускалку команд, "EasyMotion" и т.д., если у тебя планируется что-то из этого (а может и самому что-то захочется, без просьб пользователей). Это:

Я не пользуюсь Firefox (сижу на Chrome и Opera) Но видишь, у тебя ориентация в основном на чисто клавиатурное управление, на подобие emacs/vim. А это в принципе не моя аудитория. Хотя некоторые идеи интересны и могут гармонично вписаться: как тот же EasyMotion или различные варианты командной строки. Но пока это для меня не приоритет. Все примеры записал (спасибо), но копаться глубоко пока не буду. Вернусь, когда дойдут руки до имплементации чего то подобного.

K>>Это я в этой версии обновил алгоритм wrap, для лучшей поддержки не пропорциональных фонтов. Тоже русский товарищ жаловался. Я долго забивал, а то переделал (только для небольших документов, для больших работает оптимизированный, старый вариант). Так что может что то работать не так. Скинь пример.

K>>Еще там же было одно изменение, что строка должна начинаться только с буквы (точнее слова), а не пробела или знака препинания, а то выглядит не кошерно. Тоже замечание от того же товарища. Так что может это оно? Если конечно не получается — то режет где попало.

PSV>Изменения, конечно, грамотные, и нужно отметить, что у тебя мощный базовый функционал в редакторе, разные шрифты и пр., далеко не в каждом редакторе встретишь такое. Я так понимаю, что расстановка переносов в словах, как в word-e, уже не за горами

Да, в принципе можно, Hunspell (используемый в Spell Checker) — это может. Но пока не планировал: не знаю как будет выглядеть hyphenation в исходных кодах

PSV>Я специально "тест-дравил", набирал этот пост в редакторе, написал специально многовато, и по ходу дела "фоткал" баги. Поэтому отчёт:

PSV>В общем, если ты понабираешь текст, то, наверное, сам что-то увидишь. Могу посочувствовать, ибо задача не простая, этот wrap.
Большое спасибо за тест — постараюсь все поправить. Это в принципе новая имлементация, так что проблемы могут быть. В старой wrap делался по количеству символов, что работает нормально в моно-размерном шрифте, а сейчас по реальному размеру на экране, чтоб поддерживать и пропорциональные шрифты. Хотя по правде говоря, все равно, когда то придется переделывать все на Uniscribe, для нормальной поддержки редактирования Unicode текстов.
Re[28]: Нормальный редактор для C++ - существует ли?
От: PSV100  
Дата: 23.04.12 21:55
Оценка:
Здравствуйте, Kefir, Вы писали:

PSV>>А вообще-то, уже пора свой фирменный шрифт в поставке вместе с редактором предоставлять, как делают некоторые редакторы под маком, например, Espresso (если я не ошибаюсь)

K>Да ну нафиг . Чужой шрифт вставлять — не хорошо, а свой надо еще написать... Пока просто убрал шрифт по умолчанию из базовой схемы и определяю динамически, если есть Consolas — беру его. Нет — Courier New. Только для новых пользователей.

А что старым пользователям делать? Дискриминация ?! Тебе "буржуи" ещё про "неполиткорректного бегемота" по случаю напомнят !!! (Это шутка, понятно, что имеется в виду первичные настройки редактора, когда в системе ещё нет сохраненных опций).

А шрифт свой писать — тут до пенсии работы точно хватит...

K>Я думаю — это вопрос вкуса, и спорить об этом бессмысленно. Если бы combo были так круты, мы бы их видели, по крайней мере чаще


Эти combo мы бы увидели чаще, если бы их в своё время взяли бы на вооружение инет-браузеро-строители. А весь тот "поток сознания" из прошлого поста задумывался не для каких-то споров, а фактически, просто нужно было о чём-то писать для тест-драйва редактора, одним словом, хоть какие-то полезные (надеюсь) мысли из себя выдавил (и заодно от основной работы отвлёкся, где мозги немного уже кипят).

K>У меня есть нормальный Tab Switch Window (Ctrl+Tab и не отпускать Tab, думаю ты уже нашел). Она перекрывает все то что есть в combo: там и список, и индикации и быстрый поиск (если не отпускать Ctrl и набирать часть имени) и данные по выделенному файлу в Details. Screenshots вставлять не хотел — не нравиться.


Ну вот, это хороший пример, что в редакторе не только всё на мышекликанье рассчитано, значит, пользователи чего-то хотят (особенно, после Оперы и прочих броузеров). А в прошлый раз я так, к слову, привёл пример, где через комстроку, по подобию TypeAndRun, можно заменить/дополнить функционал Ctrl-Tab, "Windows...", "Commands Hint" и пр. Откровенно говоря, у меня от "Commands Hint" уже глаза разбегаются, а ведь он намечается расширяться, и макросы туда же нужно вставлять. Если есть комстрока, то я, например, могу набрать "tab" и редактор сможет вывалить все команды, которые он нашёл (и не только по первым буквам), вместо общего списка сразу всех команд, которые частично хоть и становятся недоступными (затеняются) при наборе букв, но всё-равно окно информационно перегружено.

А так да, я с тобой согласен с тем, что нужно позволять эффективно работать и мышью (и кое-какие мысли есть по этому поводу, т.е. как эффективно соединять клаву и мышь в редакторе, но идеи пока сумбурные). Но есть ещё один момент: мне кажется, что мышь, как таковая, относительно скоро уже может отойти на второй план. Развитие планшетов и им подобных однозначно повлияет и на передел типовых интерфейсов, и на появление новых устройств для ввода данных и пр. Уже даже винда склонна к новым веяниям, с её metro-фантазиями. Когда устаканятся технологии по поводу жестов, то они (жесты и прочие техники управления) станут типовыми для всех платформ, как мышь в своё время. Кроме сенсорных экранов появятся и отдельные клавиатуры с нормальными и, дай бог, удобными всякими multitouch-ами, т.е. заменители сенсоров. В этих новых интерфейсах заметно, что кликать принято на относительно большие элементы (кроме всяких "шевелений" туда-сюда) и немало рассчитано на непосредственный ввод букв (ибо сенсорная клава позволяет набирать текст рядом с тыканием/шевелением). Это всё будет перенесено и на "обычный десктоп".
Короче говоря, имхо, уже сегодня об этом нужно подумывать, ибо не за горами дело. Metro-винда всего лишь небольшой переходной этап. И в целом, в десктоп-операционках явно прослеживается стремление к "планшетности", как минимум, скоро уже нужно будет проектировать типовое меню для своего приложения, чтобы оно "светилось" в стандартной "панели задач" операционки по её правилам, делать поддержку стандартного системного автокомплита для своей программы и т.д. Одним словом, "убунто-мания" будет стандартным явлением.

И кстати, имхо, Screenshots в Ctrl-Tab действительно не нужен. Это в Опере можно по визуальному восприятию как-то понять отличия содержательной части разных интернет-страниц, но в текстовом редакторе, когда фактически везде "текстовая картинка" — как-то не очень (ну разве что-то по разной цветовой схеме — светлая и темная, но такое сочетание рядом для глаз тяжеловато). Мне понравилась идея в Sublime: фоново показывать потенциальный новый буфер внутри активного (при переключении/открытии файлов), если отказались от открытия/переключения, то восстанавливаем исходное. Для "продвинутого" редактора я бы сделал явное подчёркивание того момента, что мы в процессе выбора файлов делаем именно "превью": как-то можно вписать картинку в картинку — т.е. этот превью оформлять как бы внутри буфера, где изображение превью будет чуть меньше, чем границы буфера, здесь можно типовые тени добавить для окошка превью и т.п. Но есть один момент: специально автокомплит сделан вверху окна, чтобы не перекрывать картинку превью.

K>Полный путь файла, при желании, можно включить для показа в заголовке главного окна. Ну и Navigation Bar иногда показывает.

Тут как раз про область заголовка окна для вывода содержательной информации, имхо, лучше уже забывать по выше описанным причинам. И сейчас заголовок окна как-то не очень привлекателен для вывода данных (особенно при Full Screen, когда его (заголовка) нет в большинстве софта), туда обычно мало смотрят (это сугубо мой личный вывод, по своему софту). А при сплошных "убунтах" заголовок окна должен будет быть компактным, чтобы он нормально вписался в какую-нибудь "панель задач" (ибо в большинстве случаев приложения всегда будут "максимизированы" и без явного заголовка, и, дай бог, чтобы хоть где-то писалось, что за окно открыто), а также нужен небольшой заголовок для системного автокомплита/переключения м/д приложениями. Придётся в какой-нибудь Navigation Bar или Statusbar писать всё по полной программе (постоянно всё обновляя, включая и вывод сообщений).

K>А так переходить между активным документом и панелями можно и шоткатам: команда View.ActiveDocument и View.FileExplorer и тд.

Могу полезняшку подсказать: можно, кроме прямого View.FileExplorer и ему подобного, сделать так, как я настроил в JEdit, например:
"Ctrl+E влево" — перешли на dock-панель слева, с которой там в последней раз работали
"Ctrl+E Ctrl-влево" — открыли/закрыли панель слева, но не переходя туда (т.е. что-то временно подсмотреть)
"Alt-Home" — установка курсора в активный буфер, где мы были в последний раз (наверное, это аналог View.ActiveDocument)
"Alt-End" — установка курсора в последнюю активную dock-панель, с любой стороны, т.е. где мы последний раз были.

Последние шорткаты "Alt-Home" и "Alt-End" гармонично соседствуют с Alt-PageUp/PageDown — переключение между сплит-буферами, а также и с Ctrl-PageUp/PageDown — переключение м/д буферами (след./пред.). В JEdit неплохи и остальные функции по поводу dock-панелей (и с буферами тоже), например, F12 — убрать/восстановить все dock-панели, сохранение/переключение состояния по мотивам перспектив в Эклипсе и пр.

K>Я не пользуюсь Firefox (сижу на Chrome и Opera) Но видишь, у тебя ориентация в основном на чисто клавиатурное управление, на подобие emacs/vim. А это в принципе не моя аудитория. Хотя некоторые идеи интересны и могут гармонично вписаться: как тот же EasyMotion или различные варианты командной строки. Но пока это для меня не приоритет. Все примеры записал (спасибо), но копаться глубоко пока не буду. Вернусь, когда дойдут руки до имплементации чего то подобного.


Ну раз "такая пьянка", могу подсказать:

Hit-a-Hint for Opera — это расширение по мотивам "EasyMotion" для Оперы;

Key Binder — пример "вимператора" для Chrome.

Они, конечно, не дотягивают до функционала и удобства тех плагинов для Firefox.
Я ничего не навязываю и не буду "задалбывать": просто такие вещи реально позволяют прочувствовать, как что-то лучше реализовать для редактора, если дело реально до чего-то дойдёт.

PSV>>Изменения, конечно, грамотные, и нужно отметить, что у тебя мощный базовый функционал в редакторе, разные шрифты и пр., далеко не в каждом редакторе встретишь такое. Я так понимаю, что расстановка переносов в словах, как в word-e, уже не за горами

K>Да, в принципе можно, Hunspell (используемый в Spell Checker) — это может. Но пока не планировал: не знаю как будет выглядеть hyphenation в исходных кодах

Ну да, переносы будут востребованы в лиспе, особенно . Вообще-то, я пошутил по этому поводу, и даже не обращал внимание на то, что во всяких опенофисах расстановкой переносов занимается тот же Hunspell. Конечно, будет приятно для многих, для всяких документов. В принципе, и для исходников может что-то сгодится, например, в рамках комментариев или строковых констант. Хотя для комментариев такие навороты будут нестандартны: редко кто из IDE таким может заниматься . Тут больше востребована некая функция "Paste and Format" — при вставке из клиппбоарда во внутрь комментария нужно сразу форматировать текст: разбивать строки по заданной правой границе, где нужно обрамлять символами комментария ("// ", "-- " и пр.), как было в уже имеющихся строках, или обрамлять текст звёздочками и т.д. Сейчас такое приходится делать макросами, но, в принципе, это фактически стандартная функция редактора.



Сорри за новую философию выше, но просто это новый тест-драйв редактора, пришлось "пописать".

По поводу проблемного wrap. Всё ранее описанное подтвердилось, ещё добавилось:

— иногда переносятся такие символы как точка, закрывающая скобка без пред. слова;

— иногда появляется горизонтальный скролл: последний символ как те же точки и скобки как бы вылазят за предела окна без переноса, причём за границу окна не вылазит полностью, а частично, символ на половину видно;

— иногда появляются несколько пробелов в конце строк по ходу набора текста, причём по какому сценарию — не могу понять.

Кроме этого:

— остался баг с контролом в окне Bookmarks (появляются вверху списка "пустые" строки), возможно, ты его ещё не исправлял;

— сразу после загрузки редактора, когда открываются файлы, с которыми работали в прошлый раз (восстанавливается сессия), иногда не обновляется Navigation Bar (там где Label светятся) — он пустой, нужно чего-то сделать, например, нажать любую клавишу для перемещения курсора, тогда всё обновится как положено;

— иногда при использовании Ctrl-Tab для переключения м/д буферами перед глазами что-то мелькает: похоже на то, что восстанавливается свёрнутое mdi-окно, распахиваясь на весь экран. Это возможно из-за того, что я баловался со всякими режимами для mdi-окон (пытаясь понять как ездить без шашечек ), какие-то окна я свернул, затем я максимизировал одно окно и интерфейс редактора вернулся в типовой режим, появились табы и пр. Если после этого клацать мышкой табы — всё как обычно, а если переключаться по Ctrl-Tab, то иногда, на некоторых буферах, на долю секунды мелькает восстановление mdi-окна, причём оно повторяется каждый раз на тех же буферах (т.е. как бы нет одноразового восстановления окна, или они как бы заново сворачиваются когда-то, но "сворачивание" не мелькает).
Re[29]: Нормальный редактор для C++ - существует ли?
От: Kefir http://www.hippoedit.com
Дата: 30.04.12 00:47
Оценка:
Здравствуйте, PSV100, Вы писали:

Прошу прощения за запоздалый ответ — закрутился :/

PSV>Ну вот, это хороший пример, что в редакторе не только всё на мышекликанье рассчитано, значит, пользователи чего-то хотят (особенно, после Оперы и прочих броузеров). А в прошлый раз я так, к слову, привёл пример, где через комстроку, по подобию TypeAndRun, можно заменить/дополнить функционал Ctrl-Tab, "Windows...", "Commands Hint" и пр. Откровенно говоря, у меня от "Commands Hint" уже глаза разбегаются, а ведь он намечается расширяться, и макросы туда же нужно вставлять. Если есть комстрока, то я, например, могу набрать "tab" и редактор сможет вывалить все команды, которые он нашёл (и не только по первым буквам), вместо общего списка сразу всех команд, которые частично хоть и становятся недоступными (затеняются) при наборе букв, но всё-равно окно информационно перегружено.

Ну он не совсем для этого делался, это больше как побочный эффект Accelerators list, который срабатывает если пользователь "задумывается" держа Ctrl или Shift. Тогда появляется список шоткатов включающих Shift или Ctrl. Тоже с фильтрацией. Но эта фича — "не пошла". Много юзабилити проблем.
Комстрока наверное здесь все же удобней. Но все же не так наглядна...

PSV>Короче говоря, имхо, уже сегодня об этом нужно подумывать, ибо не за горами дело. Metro-винда всего лишь небольшой переходной этап. И в целом, в десктоп-операционках явно прослеживается стремление к "планшетности", как минимум, скоро уже нужно будет проектировать типовое меню для своего приложения, чтобы оно "светилось" в стандартной "панели задач" операционки по её правилам, делать поддержку стандартного системного автокомплита для своей программы и т.д. Одним словом, "убунто-мания" будет стандартным явлением.

Тогда надо сразу думать о языковом вводе и пальце-жестах Клавиатура тоже когда то "уйдет".

PSV>И кстати, имхо, Screenshots в Ctrl-Tab действительно не нужен. Это в Опере можно по визуальному восприятию как-то понять отличия содержательной части разных интернет-страниц, но в текстовом редакторе, когда фактически везде "текстовая картинка" — как-то не очень (ну разве что-то по разной цветовой схеме — светлая и темная, но такое сочетание рядом для глаз тяжеловато). Мне понравилась идея в Sublime: фоново показывать потенциальный новый буфер внутри активного (при переключении/открытии файлов), если отказались от открытия/переключения, то восстанавливаем исходное. Для "продвинутого" редактора я бы сделал явное подчёркивание того момента, что мы в процессе выбора файлов делаем именно "превью": как-то можно вписать картинку в картинку — т.е. этот превью оформлять как бы внутри буфера, где изображение превью будет чуть меньше, чем границы буфера, здесь можно типовые тени добавить для окошка превью и т.п. Но есть один момент: специально автокомплит сделан вверху окна, чтобы не перекрывать картинку превью.

Да — мне тоже понравилось. Я себе записал в туду. Но там все же не совсем интуитивно сделано было — когда оно показывается вместо текущего буфера (заголовок старый), как-то это непродуманно. Все же я согласен что надо подчеркнуть что это превью.

PSV>Тут как раз про область заголовка окна для вывода содержательной информации, имхо, лучше уже забывать по выше описанным причинам. И сейчас заголовок окна как-то не очень привлекателен для вывода данных (особенно при Full Screen, когда его (заголовка) нет в большинстве софта), туда обычно мало смотрят (это сугубо мой личный вывод, по своему софту). А при сплошных "убунтах" заголовок окна должен будет быть компактным, чтобы он нормально вписался в какую-нибудь "панель задач" (ибо в большинстве случаев приложения всегда будут "максимизированы" и без явного заголовка, и, дай бог, чтобы хоть где-то писалось, что за окно открыто), а также нужен небольшой заголовок для системного автокомплита/переключения м/д приложениями. Придётся в какой-нибудь Navigation Bar или Statusbar писать всё по полной программе (постоянно всё обновляя, включая и вывод сообщений).

Ну и combo это не выход, потому как там свои проблемы. Пока что не буду заморачиваться. У меня workaround есть для тех кому надо (аж два) а там посмотрим.

K>>А так переходить между активным документом и панелями можно и шоткатам: команда View.ActiveDocument и View.FileExplorer и тд.

PSV>Могу полезняшку подсказать: можно, кроме прямого View.FileExplorer и ему подобного, сделать так, как я настроил в JEdit, например:
PSV>"Ctrl+E влево" — перешли на dock-панель слева, с которой там в последней раз работали
Тоже думаю удобней и проще запомнить переход на определнную панель...
PSV>"Ctrl+E Ctrl-влево" — открыли/закрыли панель слева, но не переходя туда (т.е. что-то временно подсмотреть)
В HE (ну и всех VS like редакторах) панели дочаться отдельно, и закрытие открытие у них отдельное. Там конечно немного не доделано, но по теории так.
PSV>"Alt-Home" — установка курсора в активный буфер, где мы были в последний раз (наверное, это аналог View.ActiveDocument)
PSV>"Alt-End" — установка курсора в последнюю активную dock-панель, с любой стороны, т.е. где мы последний раз были.
Хм.. я думаю здесь все же удобней переход на определенную панель. Так как все равно его изначально делать/помнить придется. Так что лучше все равно один использовать.

Подумаю, может и можно минимум открытие без фокуса добавить. Этого пока нет.

PSV>Последние шорткаты "Alt-Home" и "Alt-End" гармонично соседствуют с Alt-PageUp/PageDown — переключение между сплит-буферами, а также и с Ctrl-PageUp/PageDown — переключение м/д буферами (след./пред.). В JEdit неплохи и остальные функции по поводу dock-панелей (и с буферами тоже), например, F12 — убрать/восстановить все dock-панели, сохранение/переключение состояния по мотивам перспектив в Эклипсе и пр.

Шоткаты конечно для Windows не очень стандартны, но в HE тоже многое из этого есть: как то переключение между буферами Alt+Left/Right либо Expand любого окна (документа или tools) как в Eclipse, через меню или тулбар окна.

PSV>Ну да, переносы будут востребованы в лиспе, особенно . Вообще-то, я пошутил по этому поводу, и даже не обращал внимание на то, что во всяких опенофисах расстановкой переносов занимается тот же Hunspell. Конечно, будет приятно для многих, для всяких документов. В принципе, и для исходников может что-то сгодится, например, в рамках комментариев или строковых констант. Хотя для комментариев такие навороты будут нестандартны: редко кто из IDE таким может заниматься . Тут больше востребована некая функция "Paste and Format" — при вставке из клиппбоарда во внутрь комментария нужно сразу форматировать текст: разбивать строки по заданной правой границе, где нужно обрамлять символами комментария ("// ", "-- " и пр.), как было в уже имеющихся строках, или обрамлять текст звёздочками и т.д. Сейчас такое приходится делать макросами, но, в принципе, это фактически стандартная функция редактора.

Где то я видел (наверное в SlickEdit) фичу, которая врапила сама коментарии после изменения http://www.codeproject.com/KB/showcase/SlickEditToolsForVS.aspx.

PSV>По поводу проблемного wrap. Всё ранее описанное подтвердилось, ещё добавилось:

Я вроде все поправил и нашел причину, почему оно "прыгало". Это все из-за SpellChecker. Он добавлял свои стили, а они влияли на wrap.

PSV>- остался баг с контролом в окне Bookmarks (появляются вверху списка "пустые" строки), возможно, ты его ещё не исправлял;

Я это, что то так и не воспроизвел, хоть и так и сяк игрался.

PSV>- сразу после загрузки редактора, когда открываются файлы, с которыми работали в прошлый раз (восстанавливается сессия), иногда не обновляется Navigation Bar (там где Label светятся) — он пустой, нужно чего-то сделать, например, нажать любую клавишу для перемещения курсора, тогда всё обновится как положено;


PSV>- иногда при использовании Ctrl-Tab для переключения м/д буферами перед глазами что-то мелькает: похоже на то, что восстанавливается свёрнутое mdi-окно, распахиваясь на весь экран. Это возможно из-за того, что я баловался со всякими режимами для mdi-окон (пытаясь понять как ездить без шашечек ), какие-то окна я свернул, затем я максимизировал одно окно и интерфейс редактора вернулся в типовой режим, появились табы и пр. Если после этого клацать мышкой табы — всё как обычно, а если переключаться по Ctrl-Tab, то иногда, на некоторых буферах, на долю секунды мелькает восстановление mdi-окна, причём оно повторяется каждый раз на тех же буферах (т.е. как бы нет одноразового восстановления окна, или они как бы заново сворачиваются когда-то, но "сворачивание" не мелькает).

Не — не воспроизвел.

Бету обновил, что смог — пофиксил.
Re[30]: Нормальный редактор для C++ - существует ли?
От: PSV100  
Дата: 03.05.12 15:40
Оценка:
Здравствуйте, Kefir, Вы писали:

K>Ну он не совсем для этого делался, это больше как побочный эффект Accelerators list, который срабатывает если пользователь "задумывается" держа Ctrl или Shift. Тогда появляется список шоткатов включающих Shift или Ctrl. Тоже с фильтрацией. Но эта фича — "не пошла". Много юзабилити проблем.

K>Комстрока наверное здесь все же удобней. Но все же не так наглядна...

Ага, этот Accelerators list я заметил, когда "задумываешься" при нажатии. А наглядность комстроки можно улучшить. Например, в списке автокомплита сделать несколько столбцов, как в окне Commands Hint, и можно сделать настройку для комстроки, чтобы при запуске режима для ввода команд сразу показывать весь список по колонкам (плюс скроллинг, который будет "небольшим" из-за наличия столбцов). Вот в ранее указанном плагине KeySnail (эмакс для FireFox) есть такая возможность для ввода команд, только там список обычный, линейный, в один столбец, но вполне можно мышкой выбрать позицию из списка, даже большого, без ввода букв.

Я почему акцентирую внимание на наличие комстроки в редакторе. Я ничего не навязываю, но, имхо, как рекомендация, тебе без такого удобного ввода данных уже не обойтись, особенно с развитием плагино/макро-строения. И лучше эту комстроку сделать пораньше, пока всё ещё на этапе зарождения (плагины с макросами). Ведь через один интерфейс (комстрока) можно делать кучу операций, всё в одном стиле, и неплохо, если API будет несложное и доступное для простых смертных (для макросов с плагинами). Кто начнёт ваять уже сейчас всякие расширения, то он уже сможет отталкиваться от наличия комстроки, вместо изобретения своих GUI-диалогов.
А комстроки сейчас активно приживаются во многих типичных GUI-приложениях. Например, Chrome: его строка с адресом уже не только используется для ввода адреса и для поиска в инете, но и много всяких плагинов также осуществляют ввод данных через неё же. Повторюсь, что для редактора неплохо подойдут принципы из KeySnail для FireFox, или такая строка как TypeAndRun — они подходят идеологически и впишутся в имеющийся интерфейс редактора.

PSV>>Короче говоря, имхо, уже сегодня об этом нужно подумывать, ибо не за горами дело. Metro-винда всего лишь небольшой переходной этап. И в целом, в десктоп-операционках явно прослеживается стремление к "планшетности", как минимум, скоро уже нужно будет проектировать типовое меню для своего приложения, чтобы оно "светилось" в стандартной "панели задач" операционки по её правилам, делать поддержку стандартного системного автокомплита для своей программы и т.д. Одним словом, "убунто-мания" будет стандартным явлением.

K>Тогда надо сразу думать о языковом вводе и пальце-жестах Клавиатура тоже когда то "уйдет".

Имхо, как раз клавиатура "уйдёт" очень нескоро. Мне кажется, что здесь есть аналог с автомобильным рулём — были попытки его заменить, мерседес как-то сделал реальный прототип, где вместо руля были два джойстика (справа и слева от сидящего водителя, всё "под рукой") — вроде реакции быстрее, лучше манёвренность и т.п., но управляется машина как-то не так, не "по-человечески", и признали, что руль пока заменить не могут.

PSV>>И кстати, имхо, Screenshots в Ctrl-Tab действительно не нужен. Это в Опере можно по визуальному восприятию как-то понять отличия содержательной части разных интернет-страниц, но в текстовом редакторе, когда фактически везде "текстовая картинка" — как-то не очень (ну разве что-то по разной цветовой схеме — светлая и темная, но такое сочетание рядом для глаз тяжеловато). Мне понравилась идея в Sublime: фоново показывать потенциальный новый буфер внутри активного (при переключении/открытии файлов), если отказались от открытия/переключения, то восстанавливаем исходное. Для "продвинутого" редактора я бы сделал явное подчёркивание того момента, что мы в процессе выбора файлов делаем именно "превью": как-то можно вписать картинку в картинку — т.е. этот превью оформлять как бы внутри буфера, где изображение превью будет чуть меньше, чем границы буфера, здесь можно типовые тени добавить для окошка превью и т.п. Но есть один момент: специально автокомплит сделан вверху окна, чтобы не перекрывать картинку превью.

K>Да — мне тоже понравилось. Я себе записал в туду. Но там все же не совсем интуитивно сделано было — когда оно показывается вместо текущего буфера (заголовок старый), как-то это непродуманно. Все же я согласен что надо подчеркнуть что это превью.

Да, если сделать именно явное превью, будет по приятнее. Хотя в том же JEdit я привык, что явного превью тоже нет. Правда там всё-таки не превью, а реальное переключение на буфер, когда раскрыт "combo" и клавиатурой выбираешь вверх/вниз (т.е. по esc нет возврата на исходный буфер).

PSV>>Тут как раз про область заголовка окна для вывода содержательной информации, имхо, лучше уже забывать по выше описанным причинам. И сейчас заголовок окна как-то не очень привлекателен для вывода данных (особенно при Full Screen, когда его (заголовка) нет в большинстве софта), туда обычно мало смотрят (это сугубо мой личный вывод, по своему софту). А при сплошных "убунтах" заголовок окна должен будет быть компактным, чтобы он нормально вписался в какую-нибудь "панель задач" (ибо в большинстве случаев приложения всегда будут "максимизированы" и без явного заголовка, и, дай бог, чтобы хоть где-то писалось, что за окно открыто), а также нужен небольшой заголовок для системного автокомплита/переключения м/д приложениями. Придётся в какой-нибудь Navigation Bar или Statusbar писать всё по полной программе (постоянно всё обновляя, включая и вывод сообщений).

K>Ну и combo это не выход, потому как там свои проблемы. Пока что не буду заморачиваться. У меня workaround есть для тех кому надо (аж два) а там посмотрим.

Кстати, я на практике присмотрелся к идее, что основную вспомогательную информацию выводить в строке статуса, постоянно там обновляя. Так реализовано в ранее рекомендованном Pentadactyl — вим для FireFox: строка статуса и комстрока соединены в одно целое, внизу (в статусе) светится полный адрес текущей страницы (он часто длинный, поэтому требует основное там место), туда же (вместо адреса) выводятся информационные сообщения, всё обновляется или по событиям, или через паузы (есть и история сообщений, иногда она полезна). Плюс отдельный режим, когда клацнул и вывелось полное описание, какое тебе нужно, например, в редакторе можно показывать: полный путь, положение каретки, количество выделений и сколько выделено символов и т.д. (в общем, что себе настроишь). В принципе, рациональное решение, реально удобно.

PSV>>Могу полезняшку подсказать: можно, кроме прямого View.FileExplorer и ему подобного, сделать так, как я настроил в JEdit, например:

PSV>>"Ctrl+E влево" — перешли на dock-панель слева, с которой там в последней раз работали
K>Тоже думаю удобней и проще запомнить переход на определнную панель...
PSV>>"Ctrl+E Ctrl-влево" — открыли/закрыли панель слева, но не переходя туда (т.е. что-то временно подсмотреть)
K>В HE (ну и всех VS like редакторах) панели дочаться отдельно, и закрытие открытие у них отдельное. Там конечно немного не доделано, но по теории так.
PSV>>"Alt-Home" — установка курсора в активный буфер, где мы были в последний раз (наверное, это аналог View.ActiveDocument
PSV>>"Alt-End" — установка курсора в последнюю активную dock-панель, с любой стороны, т.е. где мы последний раз были.
K>Хм.. я думаю здесь все же удобней переход на определенную панель. Так как все равно его изначально делать/помнить придется. Так что лучше все равно один использовать.
K>Подумаю, может и можно минимум открытие без фокуса добавить. Этого пока нет.

Все эти выкрутасы, конечно, для тех, кто работает через клавиатуру, и оправдываются они тогда, когда и в dock-панели можно работать без мыши. Переключение на каждую конкретную dock-панель у меня тоже имеется и без него никак, например, "Ctrl+E ` B" — броузер файлов, "Ctrl+E ` S" — SQL-explorer, "Ctrl+E ` C" — консоль и пр. (символ "`" задействован на переключениях, например, "Ctrl-`" — список буферов, "Alt-`" — список окон текущего приложения, т.е. это системная переключалка в дополнение к Alt-Tab — VistaSwitcher). Но, чтобы переключиться на конкретную dock, нужно чуть пошевелить мозгами, чтобы вспомнить под какой буквой закреплена конкретная панель, или это подсмотреть на экране (нужная буква подчёркнута в заголовке dock-а). А когда жмёшь Alt-Home, Alt-End, Ctrl-E down и пр., то это происходит мгновенно "на автомате", а в большинстве случаев на практике приходится прыгать на одну и ту же панель в/из буфера, или буфер — левая панель/нижняя панель.

K>Где то я видел (наверное в SlickEdit) фичу, которая врапила сама коментарии после изменения http://www.codeproject.com/KB/showcase/SlickEditToolsForVS.aspx.


Ты осторожнее, а то пользователи просекут и начнут доставать У меня для таких дел просто макросы — выделил текст, клацнул, отврапилось и символы комментария с отступами вставились в начале. В принципе, этого достаточно. Но если стандартная синтаксическая область так настроена делать при всех изменениях — это признак "продвинутости" редактора.

PSV>>По поводу проблемного wrap. Всё ранее описанное подтвердилось, ещё добавилось:

K>Я вроде все поправил и нашел причину, почему оно "прыгало". Это все из-за SpellChecker. Он добавлял свои стили, а они влияли на wrap.
Ага, заметил, что стало лучше. Но есть моменты:

— каким-то образом иногда в конце набираемого текста появляются пробелы, что влияет иногда на wrap (слово или символ, например, "-", может рановато перенестись, но после при наборе следующего слова ранний перенос прыгнет туда, куда нужно). Скорее всего, пробелы появляются при правке где-то внутри текста, когда там всё перестраивается, но сценарий понять не могу.
Возможно причина появления пробелов такова: я при наборе текста после последнего слова ставлю пробел, готовясь к набору нового слова, но вдруг вижу место внутри набранного текста, где нужно подправить, прыгаю туда, исправляю, затем возвращаюсь на конец набираемого текста, нажимая End, но срабатывает "smart end" и курсор устанавливается именно на конец последнего слова, не на конец всего текста (т.е. не за введенный ранее концевой пробел, которого к тому же не видно по настройкам по умолчанию), я опять жму пробел и ввожу новое слово, продолжая набирать текст, где уже есть лишние концевые пробелы, иногда влияющие на wrap.

— есть переносы таких символов как точка в конце предложения, но после именно слова я не уверен, но есть точно моменты, когда точка переносится после скобки ")", т.е. скобка осталась на пред. строке, а одна точка перенеслась.
И со скобками, возможно, будет лучше, если их приравнять к таким символам как точка, запятая и т.п. Бывает, что переносится только одна скобка ")" или остается на строке одна "(".

PSV>>- остался баг с контролом в окне Bookmarks (появляются вверху списка "пустые" строки), возможно, ты его ещё не исправлял;

K>Я это, что то так и не воспроизвел, хоть и так и сяк игрался.

Вот картинка:



Здесь также видно, что последней элемент в списке виднеется на половину, и там ещё есть пару закладок, при этом вертикального сколлбара нет, т.е. такое ощущение, что содержательная часть контрола сдвинута вниз относительно своего заголовка, а скроллбар работает нормально, т.е. как бы от заголовка (при большем списке закладок он появляется как положено). Так происходит после перегрузки редактора сразу же, когда восстанавливается сессия, включая и список закладок. Но происходит это не всегда, как-то зависит от набора этих закладок (бывает и при одной штуке). Но если получился такой странный набор, то на нём глюк стабильный. Закономерность понять не могу. Глюк проявляется только после перегрузки редактора и восстановления списка закладок (повторюсь, не всегда), но если этого глюка изначально нет, то в дальнейшем всё работает как нужно.

PSV>>- сразу после загрузки редактора, когда открываются файлы, с которыми работали в прошлый раз (восстанавливается сессия), иногда не обновляется Navigation Bar (там где Label светятся) — он пустой, нужно чего-то сделать, например, нажать любую клавишу для перемещения курсора, тогда всё обновится как положено;


Ещё картинка:



Здесь нет текста в Navigation Bar, т.е. вверху пустой label. Это состояние сразу же после открытия файла, бывает такое и после восстановления файла после загрузки редактора (причём курсор может быть восстановлен в любую позицию в файле, не только в самое начало). Это происходит не всегда. Достаточно "дёрнуть" курсор клавишей, или раскрыть этот список label-ов — и всё нормально. Более того — достаточно подвести курсор мыши на Navigation Bar, вылазит хинт и тут же появляется текст внутри bar-а — т.е. баг на уровне GUI: не всегда контрол себя перерисовывает, или не всегда изменяется text у контрола.

PSV>>- иногда при использовании Ctrl-Tab для переключения м/д буферами перед глазами что-то мелькает: похоже на то, что восстанавливается свёрнутое mdi-окно, распахиваясь на весь экран. Это возможно из-за того, что я баловался со всякими режимами для mdi-окон (пытаясь понять как ездить без шашечек ), какие-то окна я свернул, затем я максимизировал одно окно и интерфейс редактора вернулся в типовой режим, появились табы и пр. Если после этого клацать мышкой табы — всё как обычно, а если переключаться по Ctrl-Tab, то иногда, на некоторых буферах, на долю секунды мелькает восстановление mdi-окна, причём оно повторяется каждый раз на тех же буферах (т.е. как бы нет одноразового восстановления окна, или они как бы заново сворачиваются когда-то, но "сворачивание" не мелькает).

K>Не — не воспроизвел.

Сценарий:
— открыть несколько буферов;
— переключиться, например, на первый буфер и нажать Minimize — этот буфер будет свёрнут как mdi-окно, остальные буферы тоже станут mdi-окнами, но не свёрнутыми;
— нажать "распахнуть" на любом буфере, кроме на первом, который свёрнут: вид редактора вернётся в привычный режим, вверху появятся tab-ы;
— если через клаву (например, через Ctrl-Tab или "Windows...") переключиться на первый буфер, то сначала мелькает восстановление mdi-окна, а затем происходит переключение на буфер. Если мышкой тыкать по tab-ам, то такого эффекта нет. Также нет и при Alt-Left/Right.
Re[21]: Нормальный редактор для C++ - существует ли?
От: Kefir http://www.hippoedit.com
Дата: 06.05.12 00:22
Оценка:
Здравствуйте, alex_public, Вы писали:

В новом билде (1.50.767) добавил поддержку конфигураций. Теперь при создании User Variables можно указать к какой конфигурации они относятся. Соответственно User Variables определения есть глобальные для workspace и для проекта.
Конфигурации потом можно переключать через выпадающий список в новом тулбаре (по умолчанию скрыт), как в VS.
Re: Нормальный редактор для C++ - существует ли?
От: MasterZiv СССР  
Дата: 10.05.12 13:01
Оценка:
On 03/06/2012 12:34 AM, alex_public wrote:

> NetBeans — тормознутый, удобный (простой интерфейс), анализ кода и рефакторинг

> хороши.

Таки взгромоздил это чудо на мою Ubuntu, в 12.04 его заправили и включили
в репозитории (из родной коробки оно не работает).
Ну, конечно, интерфейс -- ужас, летящий на крыльях ночи. Ну да фиг с ним, лишь
бы работало, и не тормозило, я уже на Эклипсе научен -- не всё хорошо, что красиво.

Буду пробовать.
Posted via RSDN NNTP Server 2.1 beta
Re[7]: Нормальный редактор для C++ - существует ли?
От: Evgeny.Panasyuk Россия  
Дата: 25.10.15 11:00
Оценка:
Здравствуйте, alex_public, Вы писали:

DV>>видео

_>Вооот, на этом видео как раз то что мне надо. И функциональность и скорость. Ну т.е. то что надо от автодополнения. Надо ещё навигацию по файлам соответствующую (хотя при таком анализе проблем быть не должно). И собственно нормальный редактор.

Для Emacs на базе Clang сейчас есть:
* Авто-дополнение (company-clang, irony-mode, emacs-ycmd, ac-clang).
* Навигация по коду — rtags, в нём же простой рефакторинг типа rename symbol.
* Фоновый анализ и подсветка ошибок в коде flycheck-clangcheck.
* Настраиваемое форматирование — clang-format.

Для Vim тоже должны быть аналоги.
Re[9]: Нормальный редактор для C++ - существует ли?
От: Evgeny.Panasyuk Россия  
Дата: 25.10.15 16:18
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Ух какая старая темка... С тех пор многое изменилось и я сейчас перешёл на QT Creator, который неожиданно сильно развился в последнее время. К примеру он позволяет удобно делать исполнение/отладку на (мне прямо всё это надо):

_>...
_>- удалённой линух машине

В Emacs кстати есть пакет TRAMP — позволяет удалённо (через ssh, telnet и т.д.) редактировать/копировать файлы, работать с shell'ом, даёт fuzzy completion, интерактивный grep, режим компиляции и т.д. и т.п. В том числе таким образом работает и отладка на удалённой машине (на которой Emacs не нужен — всё идёт например через ssh).
Короткий пример:
http://www.youtube.com/watch?v=UjPasLGWzD0

_>И при этом у него интерфейс на порядки проще всяких жирных IDE.


Я помню смотрел QT Creator лет пять назад. На тот момент из всех C++ IDE под Linux он показал себя лучше всех, по крайней мере в состоянии из коробки.
Если продолжает в том же духе — то

_>К тому же он ещё и быстрее них и местами удобнее (один из самых удобных рефакторингов для C++, что я видел).


А какие там рефакторинги есть? Например extract function/method имеется?

_>Пожалуй единственный минус там, это использование убогих систем сборки в качестве проектных файлов. Но я это легко обошёл, используя эти файлы только для поддержки работы IDE, а собственно сборку и т.п. осуществляя своими средствами (хорошо что подобная возможность есть, в отличие от CLion).


Я помню он прекрасно работал с CMake проектами — это как раз то что я использую.

_>Да, это всё было про просто использование для C++ проектов, без библиотеки Qt и визуального редактора GUI к ней.


Да, знаю что он к QT не привязан.
Re[10]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 25.10.15 18:43
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

_>>- удалённой линух машине

EP>В Emacs кстати есть пакет TRAMP — позволяет удалённо (через ssh, telnet и т.д.) редактировать/копировать файлы, работать с shell'ом, даёт fuzzy completion, интерактивный grep, режим компиляции и т.д. и т.п. В том числе таким образом работает и отладка на удалённой машине (на которой Emacs не нужен — всё идёт например через ssh).
EP>Короткий пример:
EP>http://www.youtube.com/watch?v=UjPasLGWzD0

Это немного не тот режим. Я подразумевал, что у нас все исходники находятся на машине разработчика (и компиляция там же), а при нажатие кнопки запуска происходит загрузка итогового бинарника (возможно в виде дистрибутива, если надо) на удалённую машину и запуск там под отладчиком (с отображением всего в IDE на машине разработчика). Понятно, что всю сложную работу на самом деле реализуют ssh и gdb (т.е. можно и без IDE), но удобство даёт именно IDE.

EP>Я помню смотрел QT Creator лет пять назад. На тот момент из всех C++ IDE под Linux он показал себя лучше всех, по крайней мере в состоянии из коробки.

EP>Если продолжает в том же духе — то

Ну Эклипс с Нетбинсом же кроссплатформенные.. )

_>>К тому же он ещё и быстрее них и местами удобнее (один из самых удобных рефакторингов для C++, что я видел).

EP>А какие там рефакторинги есть? Например extract function/method имеется?

Меня больше радуют всяческие мелкие удобства, а не глобальные вещи. К примеру вот редактирую я объявление функции в классе (в hpp файле) и при этом около функции возникает маленькая лампочка. Я на неё нажимаю и все изменения применяются к определению функции (в cpp файле), причём включая изменения и теле функции (переименуются используемые параметры). И таких мелких удобств там много. Их даже сразу не увидишь, т.к. они не входят в формальное меню Рефакторинг. )))

_>>Пожалуй единственный минус там, это использование убогих систем сборки в качестве проектных файлов. Но я это легко обошёл, используя эти файлы только для поддержки работы IDE, а собственно сборку и т.п. осуществляя своими средствами (хорошо что подобная возможность есть, в отличие от CLion).

EP>Я помню он прекрасно работал с CMake проектами — это как раз то что я использую.

Формально там 3 системы сборки:
1. qmake — убожество из библиотеки Qt.
2. qbs — их новая универсальная система. Теоретически она могла бы служить идеальным вариантом "файлов проекта", но на практике не всё так хорошо. Она пока глючная, плохо поддерживается даже самой IDE, да и синтаксис далёк от удобства.
3. cmake — более менее поддерживается для обычных проектов.

Это всё для проектов без библиотеки Qt (там qmake по любому). Да и даже для обычных проектов некоторые удобности среды (там даже просто отображение в дереве проекта разное получается) не работают с другими (не qmake) проектами. Это естественно всё речь о "настройках проекта", т.к. саму сборку можно производить чем угодно.
Re[11]: Нормальный редактор для C++ - существует ли?
От: Evgeny.Panasyuk Россия  
Дата: 28.10.15 16:57
Оценка:
Здравствуйте, alex_public, Вы писали:

_>>>- удалённой линух машине

EP>>В Emacs кстати есть пакет TRAMP — позволяет удалённо (через ssh, telnet и т.д.) редактировать/копировать файлы, работать с shell'ом, даёт fuzzy completion, интерактивный grep, режим компиляции и т.д. и т.п. В том числе таким образом работает и отладка на удалённой машине (на которой Emacs не нужен — всё идёт например через ssh).
EP>>Короткий пример:
EP>>http://www.youtube.com/watch?v=UjPasLGWzD0
_>Это немного не тот режим. Я подразумевал, что у нас все исходники находятся на машине разработчика (и компиляция там же), а при нажатие кнопки запуска происходит загрузка итогового бинарника (возможно в виде дистрибутива, если надо) на удалённую машину и запуск там под отладчиком (с отображением всего в IDE на машине разработчика). Понятно, что всю сложную работу на самом деле реализуют ssh и gdb (т.е. можно и без IDE), но удобство даёт именно IDE.

В этом случае должно быть достаточно gdbserver.

EP>>Я помню смотрел QT Creator лет пять назад. На тот момент из всех C++ IDE под Linux он показал себя лучше всех, по крайней мере в состоянии из коробки.

EP>>Если продолжает в том же духе — то
_>Ну Эклипс с Нетбинсом же кроссплатформенные.. )

Я сравнивал с ними в том числе. QT Creator показал себя лучше всех.

_>Это всё для проектов без библиотеки Qt (там qmake по любому).


Один из проектов как раз использует Qt — при этом сами файлы проекта на CMake.
Re: Нормальный редактор для C++ - существует ли?
От: kov_serg Россия  
Дата: 29.10.15 01:47
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Практически уверен что получу отрицательный ответ (т.к. если бы существовал положительный, то скорее всего я бы про него уже давно знал), но всё же потрачу время на написание... А вдруг?

...

_>Требования в общем то простые:

_>- простейший редактор типа Notepad++ с настройкой своих цветов для всех сущностей
...
попробуй notepad2mod из плюсов минималистичен, мгновенен. В отличие от IDEA, VS и Eclipse, HippoEdit, UtraEdit, SlikEidit, Lion и Sublime. Из минусов только под винду.
Re[8]: Нормальный редактор для C++ - существует ли?
От: Evgeny.Panasyuk Россия  
Дата: 29.10.15 13:09
Оценка:
EP>Для Emacs на базе Clang сейчас есть:
EP>* Авто-дополнение (company-clang, irony-mode, emacs-ycmd, ac-clang).
EP>* Навигация по коду — rtags, в нём же простой рефакторинг типа rename symbol.
EP>* Фоновый анализ и подсветка ошибок в коде flycheck-clangcheck.

Вот короткое выступление на эту тему + live demo:
http://www.youtube.com/watch?v=5FQwQ0QWBTU
Re[12]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 02.11.15 18:19
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

_>>Это немного не тот режим. Я подразумевал, что у нас все исходники находятся на машине разработчика (и компиляция там же), а при нажатие кнопки запуска происходит загрузка итогового бинарника (возможно в виде дистрибутива, если надо) на удалённую машину и запуск там под отладчиком (с отображением всего в IDE на машине разработчика). Понятно, что всю сложную работу на самом деле реализуют ssh и gdb (т.е. можно и без IDE), но удобство даёт именно IDE.

EP>В этом случае должно быть достаточно gdbserver.

Нуу в случае отладчиков консоль — это не удобство. ))) Так что речь именно о GUI, автоматике и т.п. )

_>>Это всё для проектов без библиотеки Qt (там qmake по любому).

EP>Один из проектов как раз использует Qt — при этом сами файлы проекта на CMake.

Возможность собрать не означает ещё использование всех возможностей IDE.
Re[13]: Нормальный редактор для C++ - существует ли?
От: Evgeny.Panasyuk Россия  
Дата: 02.11.15 21:11
Оценка:
Здравствуйте, alex_public, Вы писали:

_>>>Это немного не тот режим. Я подразумевал, что у нас все исходники находятся на машине разработчика (и компиляция там же), а при нажатие кнопки запуска происходит загрузка итогового бинарника (возможно в виде дистрибутива, если надо) на удалённую машину и запуск там под отладчиком (с отображением всего в IDE на машине разработчика). Понятно, что всю сложную работу на самом деле реализуют ssh и gdb (т.е. можно и без IDE), но удобство даёт именно IDE.

EP>>В этом случае должно быть достаточно gdbserver.
_>Нуу в случае отладчиков консоль — это не удобство. ))) Так что речь именно о GUI, автоматике и т.п. )

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


_>>>Это всё для проектов без библиотеки Qt (там qmake по любому).

EP>>Один из проектов как раз использует Qt — при этом сами файлы проекта на CMake.
_>Возможность собрать не означает ещё использование всех возможностей IDE.

В том проекте этого хватает — весь boilerplate генерируется из схемы, от "QT IDE" требуется только "редактор форм".
Re[14]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 03.11.15 00:03
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>>>В этом случае должно быть достаточно gdbserver.

_>>Нуу в случае отладчиков консоль — это не удобство. ))) Так что речь именно о GUI, автоматике и т.п. )
EP>Так я и не предлагаю отлаживать через консоль, я говорю о том как связать Emacs на одной машине и отладку на другой. В самом Emacs есть вот такой режим:

А QtCreator не ограничивается только возможностями gdb. К примеру там можно удобно глянуть на все запущенные процессы на целевой машине и т.п...

_>>Возможность собрать не означает ещё использование всех возможностей IDE.

EP>В том проекте этого хватает — весь boilerplate генерируется из схемы, от "QT IDE" требуется только "редактор форм".

Кстати, дизайнер форм есть и просто в самой библиотеке Qt. Не помню правда поддерживает ли он совсем все возможности IDE (типа автоматической генерации реакции на нажатия кнопок в наших классах), но с точки зрения создания самих форм это прямо точная копия. )))
Re[13]: Нормальный редактор для C++ - существует ли?
От: Evgeny.Panasyuk Россия  
Дата: 18.11.15 17:20
Оценка:
Здравствуйте, alex_public, Вы писали:

_>>>Это немного не тот режим. Я подразумевал, что у нас все исходники находятся на машине разработчика (и компиляция там же), а при нажатие кнопки запуска происходит загрузка итогового бинарника (возможно в виде дистрибутива, если надо) на удалённую машину и запуск там под отладчиком (с отображением всего в IDE на машине разработчика). Понятно, что всю сложную работу на самом деле реализуют ssh и gdb (т.е. можно и без IDE), но удобство даёт именно IDE.

EP>>В этом случае должно быть достаточно gdbserver.
_>Нуу в случае отладчиков консоль — это не удобство. ))) Так что речь именно о GUI, автоматике и т.п. )

Наткнулся:

http://blogs.msdn.com/b/vcblog/archive/2015/11/18/announcing-the-vs-gdb-debugger-extension.aspx
Today we are releasing the Visual Studio GDB Debugger extension preview. This will enable debugging remote Linux targets including IoT devices.

Re[14]: Нормальный редактор для C++ - существует ли?
От: alex_public  
Дата: 19.11.15 01:49
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>Наткнулся:

EP>

EP>http://blogs.msdn.com/b/vcblog/archive/2015/11/18/announcing-the-vs-gdb-debugger-extension.aspx
EP>Today we are releasing the Visual Studio GDB Debugger extension preview. This will enable debugging remote Linux targets including IoT devices.


Ну да, я про что-то подобное и говорил. Правда про IoT я что-то в тексте статьи ничего не нашёл. А для этих дел используeтся не просто gdb, а специфические инструменты типа OpenOCD.
Re: Нормальный редактор для C++ - существует ли?
От: sergey2b ЮАР  
Дата: 19.11.15 15:55
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Практически уверен что получу отрицательный ответ (т.к. если бы существовал положительный, то скорее всего я бы про него уже давно знал), но всё же потрачу время на написание... А вдруг?


отдельно от компилятора Visual Studio для разных платформ
CodeBlocks
CodeLite
Re[14]: Нормальный редактор для C++ - существует ли?
От: Skorodum Россия  
Дата: 20.11.15 12:47
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

Сначала они стали поддерживать git, теперь gdb, что дальше? Перейдут на GCC и ликус?!!!111
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.