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 буду править по месту, как будут жаловаться.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.