и по той теме решил изучить (x)emacs, в связи с чем есть ряд вопросов,
на которые я не могу получить конкретных ответов -- Да/Нет ;-)
На сайтах как-то расплывчато об этом сказано...
Можно ли в emacs/xemacs (и в версиях для Windows особенно) следующее:
лёгкая настраиваемость на разные языки, шаблоны для распространенных языков (C++, Delphi, Python, PHP, ...)
синтаксическая подсветка
контекстная подсказка: т.е. автокомплит, подсказка по параметрам функций
навигация по файлам: инкрементальный поиск, букмарки, открытие файлов (a la Ctrl+F12 в Delphi) проекта, открытие файлов из #include "..."
навигация по структуре: переход к классам/переменным/полям/<что там есть в языке>.
Шаблоны кода: т.е. разворот if --> if (...) { ... }
Визуализация структур. Типа Object Inspector'а в Delphi
Поддержка отладки. Это вобще отдельная песня...
Поддержка Version Control System
Хоть какая-то поддержка рефакторинга
Насколько я понял по обзорам сайтов, всё это есть... Но почему-то об этом мало говорят, и вобще, вроде бы emacs мало используют, что заставляет сомневаться...
И вопросы по поводу отладки в C++
пошаговое выполнение программы, breakpoint'ы, заходы в процедуры и т.п.
просмотр значения переменных/объектов.
умный просмотр значения переменных/объектов ;-) -- массивов std::vector<>, строк std::string и т.п. Не просто как объектов со структурой, а именно содержательно
возможность выполннения куска кода. Например, вычисление значения на лету []func(a + func2(b)).
Я не против потратить много времени, чтобы изучить и настроить, запрограммировать редактор, "зато потом за пять минут долететь".
Возможно ли всё это в (x)emacs, нужны ли какие-то плагины?
A> и по той теме решил изучить (x)emacs, в связи с чем есть ряд вопросов, A> на которые я не могу получить конкретных ответов -- Да/Нет A> На сайтах как-то расплывчато об этом сказано...
A> Можно ли в emacs/xemacs (и в версиях для Windows особенно) следующее:
A> A> лёгкая настраиваемость на разные языки, шаблоны для распространенных языков (C++, Delphi, Python, PHP, ...)
+ (не видел только Delphi) A> синтаксическая подсветка
+ (font-lock-mode) A> контекстная подсказка: т.е. автокомплит, подсказка по параметрам функций
+ (ecb/cedet или xrefactory) A> навигация по файлам: инкрементальный поиск, букмарки, открытие файлов (a la Ctrl+F12 в Delphi) проекта, открытие файлов из #include "..."
+/- Не в курсе... пользуюсь grep. A> навигация по структуре: переход к классам/переменным/полям/<что там есть в языке>.
+ (ecb/cedet или xref) A> Шаблоны кода: т.е. разворот if --> if (...) { ... }
+ A> Визуализация структур. Типа Object Inspector'а в Delphi
+ (ecb/cedet или xref) A> Поддержка отладки. Это вобще отдельная песня...
+ (gdb но не знаю как это под win32) A> Поддержка Version Control System
+ (cvs на 5+, svn на 4-, arch 5) A> Хоть какая-то поддержка рефакторинга
+ (xref.) A>
XRefactory: http://www.xref-tech.com/xrefactory/main.html
CEdet: http://cedet.sourceforge.net/
A> Насколько я понял по обзорам сайтов, всё это есть... Но почему-то об этом мало говорят, и вобще, вроде бы emacs мало используют, что заставляет сомневаться...
Тут сложно сказать. Новые прогрммеры сидять во всяких KDeveloper или Eclipse. Те кто более 5-7 лет программит, попадаются на (X)emacs
A>И вопросы по поводу отладки в C++ A> A> пошаговое выполнение программы, breakpoint'ы, заходы в процедуры и т.п.
+ (gbd) A> просмотр значения переменных/объектов.
+ (gdb) A> умный просмотр значения переменных/объектов -- массивов std::vector<>, строк std::string и т.п. Не просто как объектов со структурой, а именно содержательно
Не очень опнял что имеется ввиду под "содержательно" .
(gdb) n
17 map<std::string, Data *> dataMap;
(gdb) n
19 dataMap["hello"] = new Data(10);
(gdb) p dataMap
$1 = {
_M_t = {<_Rb_tree_base<pair<const basic_string<char,string_char_traits<char>,
__default_alloc_template<false,0> >,Data *>,
allocator<Data *> >> = {<_Rb_tree_alloc_base<pair<const basic_string<char,string_char_traits<char>,
__default_alloc_template<false,0> >,Data *>,allocator<Data *>,>> = {_M_header = 0x804f000}, <No data fields>},
_M_node_count = 0,
_M_key_compare = {<binary_function<basic_string<char,string_char_traits<char>,__default_alloc_template<false,0> >,
basic_string<char,string_char_traits<char>,__default_alloc_template<false,0> >,bool>> = {<No data fields>}, <No data fields>}}}
Так?
A> возможность выполннения куска кода. Например, вычисление значения на лету []func(a + func2(b)).
+ (gdb) A>
A> Я не против потратить много времени, чтобы изучить и настроить, запрограммировать редактор, "зато потом за пять минут долететь".
A> Возможно ли всё это в (x)emacs, нужны ли какие-то плагины?
Емакс — это большой конструктор. . Там все- плгины . Точнее это lisp.
A>> и по той теме решил изучить (x)emacs, в связи с чем есть ряд вопросов, A>> на которые я не могу получить конкретных ответов -- Да/Нет A>> На сайтах как-то расплывчато об этом сказано...
A>> Можно ли в emacs/xemacs (и в версиях для Windows особенно) следующее:
A>> A>> лёгкая настраиваемость на разные языки, шаблоны для распространенных языков (C++, Delphi, Python, PHP, ...) A>+ (не видел только Delphi) A>> синтаксическая подсветка A>+ (font-lock-mode) A>> контекстная подсказка: т.е. автокомплит, подсказка по параметрам функций A>+ (ecb/cedet или xrefactory) A>> навигация по файлам: инкрементальный поиск, букмарки, открытие файлов (a la Ctrl+F12 в Delphi) проекта, открытие файлов из #include "..." A>+/- Не в курсе... пользуюсь grep. A>> навигация по структуре: переход к классам/переменным/полям/<что там есть в языке>. A>+ (ecb/cedet или xref)
А по подробнее про ecb/cedet можно — как их можно использовать для всего этого?
А то что-то я патался это использовать — никак не помогло.
Так и бегаю по tag-ам. А для функий использую eldoc-mode.
И желательно пример конфига в студию если таковой имеется.
Здравствуйте, poiuy, Вы писали:
P>А по подробнее про ecb/cedet можно — как их можно использовать для всего этого? P>А то что-то я патался это использовать — никак не помогло. P>Так и бегаю по tag-ам. А для функий использую eldoc-mode. P>И желательно пример конфига в студию если таковой имеется.
# навигация по файлам: инкрементальный поиск, букмарки, открытие файлов (a la Ctrl+F12 в Delphi) проекта, открытие файлов из #include "..."
# контекстная подсказка: т.е. автокомплит, подсказка по параметрам функций
http://cedet.sourceforge.net/intellisense.shtml — настрока cedet для intellesence,
но это под XEmacs не работает. По этому не скажу как это точно работает, ибо
у меня XEmacs. Но там есть скриншот, который показывает как это
должно работать . И под XEmacs это тоже вроде работает, но там semantic
сломан был. По этому сейчас не вкурсе, может быть починили. Или
использовать не XEmacs, а GNU Emacs, там все работает нормально.
И еще для того, чтоб работало: надо semantic настроить:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Semantics Support
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(unless (fboundp 'subst-char-in-string)
(defun subst-char-in-string (old-char new-char str)
"Replaces any occurance of old-char with new-char in str"
(replace-in-string str (char-to-string old-char) (char-to-string new-char))))
(unless (fboundp 'replace-regexp-in-string)
(defun replace-regexp-in-string (regx subst str)
"Replaces regx by subst in str"
(replace-in-string str regx subst)))
;;; use semantic package
(setq semantic-load-turn-everything-on t)
(setq semantic-load-turn-useful-things-on t)
(load-file "/usr/local/lib/xemacs/site-lisp/cedet/common/cedet.el")
(require 'cedet)
(require 'semantic-util)
(require 'semantic-load)
(require 'semantic-ia)
(require 'semantic-util)
(require 'semantic-load)
(semantic-load-enable-code-helpers)
;;;; use ~/.xemacs/semdb.cache for caching
(require 'semanticdb)
(global-semanticdb-minor-mode 1)
(semanticdb-load-system-caches)
;;; set directory where to store semantic files
(setq semanticdb-default-save-directory (expand-file-name "~/.xemacs/semdb.cache"))
(setq semanticdb-default-system-save-directory (expand-file-name "~/.xemacs/semdb.sys.cache"))
;; add our project to semdb
(add-to-list 'semanticdb-project-roots (expand-file-name "~/projects"))
и надо еще semanticdb натравить на /usr/include чтоб системные типы/функции комплителись
Для функций до xrefactory пользовался вот такими биндингами
Сейчас пользуюсь xrefactory. Очень советую. Умеет не только
intellisence, но и рефакторить
В общем вот с сайта:
Xrefactory features:
* Full integration with Emacs and XEmacs.
* Available on Solaris, Mac OS X, Linux and Windows systems (other platforms on demand).
* Source browsing based on our own tag implementation supporting multiple preprocessing passes and resolving scopes, accessibilities, overloading and polymorphism.
* Functions for finding forgotten symbols.
* Detection of unused variables, methods and functions.
* Browsing of class inheritance tree.
* Code completion auto-updated after each modification of source code without need for recompilation.
* Refactorings for method (function) extraction; renaming of namespaces, classes, parameters, variables, fields (structure records) and methods (functions); insertion, deletion and moving of parameters. Refactorings are safe with detection of possible conflicts.
* Capable of generating HTML documentation with fully cross referenced source code and 100% of correctly resolved symbols.
* Back mapping preprocessor solves problems introduced by macro expansions, conditional directives and file inclusions.
* Professional C++ front-end from EDG allows to accept ANSI C++ as well as GNU g++, Sun CC and Microsoft MSVC++ language dialects.
* Designed to work with the largest projects. Xrefactory can index millions of lines of code within several minutes. It is capable of updating its index by reparsing only modified files.
* Multiple projects support with project auto-detection.
* Interfacing Emacs IDE functions from the compile.el and comint.el packages.
* Full undo under Emacs and XEmacs.
Здравствуйте, aka50, Вы писали:
A>Я переписывался с автором... реально 200. A>Но там есть старая версия, она очень нормальненько себе A>работает с C/C++ и Java.
Я не очень понял ... старая версия — бесплатная?
Если да, то где ее берут?
Варианты использования:
1. Заплатить около 30уе
2. Пересобирать раз в месяц
3. Пропатчить исходники изменив дату окончания
действия лицензии на подальше. (обычным sed_inplace)
> и по той теме решил изучить (x)emacs, в связи с чем есть ряд вопросов, > на которые я не могу получить конкретных ответов -- Да/Нет > На сайтах как-то расплывчато об этом сказано... > > Можно ли в emacs/xemacs (и в версиях для Windows особенно) следующее:
Советую почитать статью "Точки Emacs". Много вопросов отпадёт.
Здравствуйте, aka50, Вы писали:
A>Варианты использования: A>1. Заплатить около 30уе A>2. Пересобирать раз в месяц A>3. Пропатчить исходники изменив дату окончания A> действия лицензии на подальше. (обычным sed_inplace)
Интересно, они действительно собрались заставить программистов платить за программу, распространяемую в исходниках?
Здравствуйте, Astaroth, Вы писали:
A>Интересно, они действительно собрались заставить программистов платить за программу, распространяемую в исходниках?
Рассчет на порядочность и наличие денег (ибо 30уе это не большие деньги для забугорья).
А прорамма действительно неплохая... и своих денег вполне стоит . Я бы даже сказал
это не стоимость, а скорее donate.
Здравствуйте, Дайвер, Вы писали:
Д>Лучший кроссплатформенный Д>IDE на сегодняшний день ето Д>Visual Slick Edit
Д>Если бесплатный, то мне Source Navigator + insight Д>нравится больше чем (x)emacs, но они не работают на Windows
А не подскажите как точно открыть файл из #include? У меня не получается. И еще при запуске ecb, он ругается на ecb-use-speedbar-instead-native-tree-buffer = 1 и предлагает выставить ее в nil.
Здравствуйте, Дайвер, Вы писали:
Д>Лучший кроссплатформенный Д>IDE на сегодняшний день ето Д>Visual Slick Edit
только плохо работает с табами и тому подобной фигней, не имеет удобной настройки подсветки синтаксиса и плохо работает с большими проектами, особенно с дублирующимися файлами
не подскажете, по ЕМаксу?
что сделать чтоб он при открытии файла /срр например/ автоматически активировал цветовую подсветку? в моем случае она появляется только если выбрать пункт меню "цветовая подсветка для этого файла" /или чтот в этом духе/, ну и соотвественно делать подобное для каждого вновь открытого файла довольно не удобно.
XRefact под Windows, на обычном интерфейсном проекте просто жутко тормозит. он построил тагов на 5,5 Мб и очень медленно в них чтото ищет /дополнение переменной может 30-40 сек. занимать/
есть какие то варианты по его ускорению? чтот отключить, чтот доустановить?
k. wrote: > XRefact под Windows, на обычном интерфейсном проекте просто жутко > тормозит. он построил тагов на 5,5 Мб и очень медленно в них чтото ищет > /дополнение переменной может 30-40 сек. занимать/ > есть какие то варианты по его ускорению? чтот отключить, чтот доустановить?
Ухх.. Извиняюсь за долгий ответ — ваше письмо попало в спамобойку,
только сейчас его заметил.
Во-первых, не включен ли у вас антивирус? У меня такая проблема возникла
когда был активен Касперский — он перехватывал обращения к файлам и все
работало ОЧЕНЬ медленно. Во-вторых, нет ли у вас очень глубоких шаблонов?
Ну и еще попробуйте создать receipt-файлы и посмотреть что получится.
Здравствуйте, Cyberax, Вы писали:
C>Во-первых, не включен ли у вас антивирус? У меня такая проблема возникла C>когда был активен Касперский — он перехватывал обращения к файлам и все C>работало ОЧЕНЬ медленно.
антивирус не то что не включен — его просто нет
C>Во-вторых, нет ли у вас очень глубоких шаблонов?
в проекте используется MFC. там может быть что угодно
C>Ну и еще попробуйте создать receipt-файлы и посмотреть что получится.
а это что? как подобное создается?
З.Ы. если сравнить с тем что создается в проектах пол пингвином, то общий размер файлов xref-a редко переваливает за 500кб. а тут, со своими 5-6мб он и тормозит