и по той теме решил изучить (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мб он и тормозит
k. wrote: > C>Во-вторых, нет ли у вас очень глубоких шаблонов? > в проекте используется MFC. там может быть что угодно
Тогда вряд ли.
> C>Ну и еще попробуйте создать receipt-файлы и посмотреть что получится. > а это что? как подобное создается?
Это он для большого проекта заранее строит индекс. Можно
проиндексировать MFC и CRT — будет быстрее работать.
> З.Ы. если сравнить с тем что создается в проектах пол пингвином, то > общий размер файлов xref-a редко переваливает за 500кб. а тут, со своими > 5-6мб он и тормозит
Странно это. У меня на 50Мб исходников + Boost не тормозит. Попробуй
написать Marian'у, он достаточно быстро баги фиксит.
как я понимаю, для включения recipe в настройках преокта должно быть чтото типа такого:
-recipe d:/tmp/recipe
сам при выборе команды меню "Create Xref Tags" рефактор это не строит.
покопавшись в его доках нашел следующее:
cd ~/xpdf-2.02pl1
make clean
xref-recipe-make /tmp/recipe
xref -html -htmlroot=${HOME}/HTML -recipe /tmp/recipe
что явно для виндовой версии неподходит.
дальше нашел вот это /дамал ОНО/:
xref -recipe <recipe_file>
но и тут облом — не строится файл вот пример того что он мне выдает:
C:\xref>xref D:\repository\Multimodal\XN-SDK\src\general\ProtocolParser\ -recipe
d:\tmp\recipe
[Xref] active project: 'D:\repository\Multimodal\XN-SDK\src\general\ProtocolParser'
'd:\repository\Multimodal\XN-SDK\src\general\ProtocolParser\BCPSender.cpp'
![error] BCPSender.cpp:5 can't open file xmodesdk_common.h
![error] BCPSender.h:8 can't open file BCP.h
![error] BCPSender.cpp:8 can't open file ITransport2.h
![error] states.h:163 can't open file cpp/IXmodeAudioData.h
BCPSender.h:28 : error: identifier "BCP_PROTOCOL_VERSION_1_0" is undefined
int SendBCPCommand( unsigned short nCmd, unsigned short nLen, unsigned char nVersion=BCP_PROTOCOL_VERSION_1_0 );
^
states.h:140 : error: not a class or struct name
struct SM_COMMAND : public Allocator
^
states.h:167 : error: identifier "IXmodeAudioData" is undefined
IXmodeAudioData* pAudioData;
^
ну и так далее, собстно при простом прсинге те же ошибки тоже валятся, тем не менее файлы такгов создаются, тут же d:\tmp\recipe остался без изменений.
Здравствуйте, k., Вы писали:
k.>XRefact под Windows, на обычном интерфейсном проекте просто жутко тормозит. он построил тагов на 5,5 Мб и очень медленно в них чтото ищет /дополнение переменной может 30-40 сек. занимать/
Здравствуйте, k., Вы писали:
k.>не подскажете, по ЕМаксу? k.>что сделать чтоб он при открытии файла /срр например/ автоматически активировал цветовую подсветку? в моем случае она появляется только если выбрать пункт меню "цветовая подсветка для этого файла" /или чтот в этом духе/, ну и соотвественно делать подобное для каждого вновь открытого файла довольно не удобно.
Здравствуйте, aka50, Вы писали:
A>Не совсем бесплатная. Но она есть в исходниках A>http://xref-tech.com/xrefactory/downloads/1.6.7/xref-1.6.7-any.tar.gz
A>Варианты использования: A>1. Заплатить около 30уе A>2. Пересобирать раз в месяц A>3. Пропатчить исходники изменив дату окончания A> действия лицензии на подальше. (обычным sed_inplace)
А можно подробнее насчет изменения даты в исходниках?
И что такое sed_inplace?
Здравствуйте, aka50, Вы писали:
A>> Шаблоны кода: т.е. разворот if --> if (...) { ... } A>+ A>> Визуализация структур. Типа Object Inspector'а в Delphi A>+ (ecb/cedet или xref)
можно подробнее по вопросу "разворота" объяснить? ничего похожего в cedet я не нашел, буду благодарен за подсказку где искать.
Здравствуйте, kaa.python, Вы писали:
KP>Здравствуйте, aka50, Вы писали:
KP>можно подробнее по вопросу "разворота" объяснить? ничего похожего в cedet я не нашел, буду благодарен за подсказку где искать.
возникла тут проблема, поиск в нете пока что ничего не дал
подключаю данный плагин, все работает просто чудесно, но отваливается "отмена".
возникает ошибка Invalid function: (setq ad-return-value (ad-Orig-undo-more count))
есть идеи куда копать?
еще вопрос, не могли бы конфигурационным файлом емакса поделиться (мыло )? поиск по нету помогает конечно, но настройка идет медленно и со скрипом
Здравствуйте, kaa.python, Вы писали:
KP>возникла тут проблема, поиск в нете пока что ничего не дал KP>подключаю данный плагин, все работает просто чудесно, но отваливается "отмена". KP>возникает ошибка Invalid function: (setq ad-return-value (ad-Orig-undo-more count)) KP>есть идеи куда копать?
А это соблюдено?
from http://www.bloomington.in.us/~brutt/msf-abbrev.html:
...
Requirements
GNU Emacs 22 (or a emacs from CVS from 2005 or later) is required. Emacs 21.3 is known not to work.
Concerning XEmacs, although it earlier was reported that it works, I find that it does not; the low-level details of text properties are too different between the two versions that I cannot support XEmacs at this time.
Здравствуйте, aka50, Вы писали:
A>Вот точно, забыл указать что это для Emacs (я к стати съехал с него, уж больно много чего в нем не работает, а постоянно допиливать достало)
Здравствуйте, Kswapd, Вы писали:
K>Здравствуйте, aka50, Вы писали:
A>>Вот точно, забыл указать что это для Emacs (я к стати съехал с него, уж больно много чего в нем не работает, а постоянно допиливать достало)
K>А я по тем же причинам переехал на Emacs 22
Только сейчас понял как звучит предложение
Я тоже имел ввиду, что съехал на Emacs22