(x)emacs как универсальный редактор
От: Abulafia  
Дата: 27.01.05 04:35
Оценка:
Здравствуйте!

Я уже задавал вопрос здесь,
http://www.rsdn.ru/Forum/Message.aspx?mid=1006380&only=1
Автор: Abulafia
Дата: 27.01.05

и по той теме решил изучить (x)emacs, в связи с чем есть ряд вопросов,
на которые я не могу получить конкретных ответов -- Да/Нет ;-)
На сайтах как-то расплывчато об этом сказано...

Можно ли в emacs/xemacs (и в версиях для Windows особенно) следующее:


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

И вопросы по поводу отладки в C++

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

Возможно ли всё это в (x)emacs, нужны ли какие-то плагины?

Заранее спасибо за ответы,
Abulafia
Re: (x)emacs как универсальный редактор
От: aka50 Россия  
Дата: 27.01.05 09:06
Оценка: 14 (3)
Здравствуйте, Abulafia, Вы писали:

A>Здравствуйте!


A> Я уже задавал вопрос здесь,

A> http://www.rsdn.ru/Forum/Message.aspx?mid=1006380&only=1
Автор: Abulafia
Дата: 27.01.05

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.
  • Re[2]: (x)emacs как универсальный редактор
    От: poiuy Россия  
    Дата: 27.01.05 09:49
    Оценка:
    Здравствуйте, aka50, Вы писали:

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


    A>>Здравствуйте!


    A>> Я уже задавал вопрос здесь,

    A>> http://www.rsdn.ru/Forum/Message.aspx?mid=1006380&amp;only=1
    Автор: Abulafia
    Дата: 27.01.05

    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.
    И желательно пример конфига в студию если таковой имеется.
  • Re[2]: (x)emacs как универсальный редактор
    От: ilejn Россия  
    Дата: 27.01.05 10:42
    Оценка:
    Здравствуйте, aka50, Вы писали:

    A>+ (ecb/cedet или xrefactory)


    А это ничего, что xrefactory стоит $400?
    Re[3]: (x)emacs как универсальный редактор
    От: aka50 Россия  
    Дата: 27.01.05 10:48
    Оценка: 12 (2)
    Здравствуйте, poiuy, Вы писали:

    P>А по подробнее про ecb/cedet можно — как их можно использовать для всего этого?

    P>А то что-то я патался это использовать — никак не помогло.
    P>Так и бегаю по tag-ам. А для функий использую eldoc-mode.
    P>И желательно пример конфига в студию если таковой имеется.

    # навигация по файлам: инкрементальный поиск, букмарки, открытие файлов (a la Ctrl+F12 в Delphi) проекта, открытие файлов из #include "..."

    это через speedbar делается в ecb
    (setq ecb-use-speedbar-instead-native-tree-buffer 1)


    # навигация по структуре: переход к классам/переменным/полям/<что там есть в языке>.

    Если я правильно понял, то это что-то вроде этого
    http://ecb.sourceforge.net/screenshots/1.png
    В ECB это работает "из коробки", при рабочем semantic.

    # контекстная подсказка: т.е. автокомплит, подсказка по параметрам функций

    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 пользовался вот такими биндингами
    ;; Define func-menu
    (require 'func-menu)
    (add-hook 'find-file-hooks 'fume-add-menubar-entry)
    (define-key global-map "\C-cl" 'fume-list-functions)
    (define-key global-map "\C-cg" 'fume-prompt-function-goto)
    (define-key global-map '(shift button3) 'mouse-function-menu)


    Сейчас пользуюсь 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.


    Новая версия денег стоит из за фронтенда от EDG... но она стоит своих 200уе
    С сайта можно взять старую версию http://www.xref-tech.com/xrefactory-java/download.html.
    Она даром . И даже старая лучше cedet (ИМХО).
    Re[3]: (x)emacs как универсальный редактор
    От: aka50 Россия  
    Дата: 27.01.05 10:49
    Оценка:
    Здравствуйте, ilejn, Вы писали:

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


    A>>+ (ecb/cedet или xrefactory)


    I>А это ничего, что xrefactory стоит $400?


    Я переписывался с автором... реально 200.
    Но там есть старая версия, она очень нормальненько себе
    работает с C/C++ и Java.
    Re[4]: (x)emacs как универсальный редактор
    От: ilejn Россия  
    Дата: 27.01.05 11:28
    Оценка:
    Здравствуйте, aka50, Вы писали:

    A>Я переписывался с автором... реально 200.

    A>Но там есть старая версия, она очень нормальненько себе
    A>работает с C/C++ и Java.

    Я не очень понял ... старая версия — бесплатная?
    Если да, то где ее берут?

    На родном сайте уоминается только 2.x.x
    Re[5]: (x)emacs как универсальный редактор
    От: aka50 Россия  
    Дата: 27.01.05 11:43
    Оценка: :)
    Здравствуйте, ilejn, Вы писали:

    I>Я не очень понял ... старая версия — бесплатная?

    I>Если да, то где ее берут?

    Не совсем бесплатная. Но она есть в исходниках
    http://xref-tech.com/xrefactory/downloads/1.6.7/xref-1.6.7-any.tar.gz

    Варианты использования:
    1. Заплатить около 30уе
    2. Пересобирать раз в месяц
    3. Пропатчить исходники изменив дату окончания
    действия лицензии на подальше. (обычным sed_inplace)
    Re: (x)emacs как универсальный редактор
    От: Седьмой романтик Россия  
    Дата: 08.02.05 21:49
    Оценка:
    Abulafia писал 27 Январь 2005 07:35 что:

    > Здравствуйте!

    >
    > Я уже задавал вопрос здесь,
    > http://www.rsdn.ru/Forum/Message.aspx?mid=1006380&amp;only=1
    Автор: Abulafia
    Дата: 27.01.05

    > и по той теме решил изучить (x)emacs, в связи с чем есть ряд вопросов,
    > на которые я не могу получить конкретных ответов -- Да/Нет
    > На сайтах как-то расплывчато об этом сказано...
    >
    > Можно ли в emacs/xemacs (и в версиях для Windows особенно) следующее:

    Советую почитать статью "Точки Emacs". Много вопросов отпадёт.

    http://www.linuxrsp.ru/artic/dotemacs.html
    Posted via RSDN NNTP Server 1.9
    Re: (x)emacs как универсальный редактор
    От: Дайвер  
    Дата: 09.02.05 15:28
    Оценка:
    Лучший кроссплатформенный
    IDE на сегодняшний день ето
    Visual Slick Edit

    Если бесплатный, то мне Source Navigator + insight
    нравится больше чем (x)emacs, но они не работают на Windows
    Дайвер
    Re[6]: (x)emacs как универсальный редактор
    От: Astaroth Россия  
    Дата: 09.02.05 20:48
    Оценка:
    Здравствуйте, aka50, Вы писали:

    A>Варианты использования:

    A>1. Заплатить около 30уе
    A>2. Пересобирать раз в месяц
    A>3. Пропатчить исходники изменив дату окончания
    A> действия лицензии на подальше. (обычным sed_inplace)

    Интересно, они действительно собрались заставить программистов платить за программу, распространяемую в исходниках?
    ... << RSDN@Home 1.1.4 beta 3 rev. 279>>
    http://livejournal.com/users/breqwas
    Re[7]: (x)emacs как универсальный редактор
    От: aka50 Россия  
    Дата: 09.02.05 20:55
    Оценка:
    Здравствуйте, Astaroth, Вы писали:

    A>Интересно, они действительно собрались заставить программистов платить за программу, распространяемую в исходниках?


    Рассчет на порядочность и наличие денег (ибо 30уе это не большие деньги для забугорья).
    А прорамма действительно неплохая... и своих денег вполне стоит . Я бы даже сказал
    это не стоимость, а скорее donate.
    Re[2]: (x)emacs как универсальный редактор
    От: cencio Украина http://ua-coder.blogspot.com
    Дата: 09.02.05 21:20
    Оценка:
    Здравствуйте, Дайвер, Вы писали:

    Д>Лучший кроссплатформенный

    Д>IDE на сегодняшний день ето
    Д>Visual Slick Edit

    Д>Если бесплатный, то мне Source Navigator + insight

    Д>нравится больше чем (x)emacs, но они не работают на Windows

    Source Navigator под виндовс работает нормально.
    Re[4]: (x)emacs как универсальный редактор
    От: sc Россия  
    Дата: 27.11.05 09:07
    Оценка:
    Здравствуйте, aka50, Вы писали:

    A>

    ...открытие файлов из #include "..."

    A>это через speedbar делается в ecb
    A>
    A>(setq ecb-use-speedbar-instead-native-tree-buffer 1)A>

    А не подскажите как точно открыть файл из #include? У меня не получается. И еще при запуске ecb, он ругается на ecb-use-speedbar-instead-native-tree-buffer = 1 и предлагает выставить ее в nil.
    Re[2]: (x)emacs как универсальный редактор
    От: jazzer Россия Skype: enerjazzer
    Дата: 27.11.05 20:26
    Оценка:
    Здравствуйте, Дайвер, Вы писали:

    Д>Лучший кроссплатформенный

    Д>IDE на сегодняшний день ето
    Д>Visual Slick Edit

    только плохо работает с табами и тому подобной фигней, не имеет удобной настройки подсветки синтаксиса и плохо работает с большими проектами, особенно с дублирующимися файлами
    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[2]: (x)emacs как универсальный редактор
    От: k. Россия  
    Дата: 23.01.06 09:43
    Оценка:
    Здравствуйте, Дайвер, Вы писали:

    Д>Лучший кроссплатформенный

    Д>IDE на сегодняшний день ето
    Д>Visual Slick Edit

    относительно Слика. на 10 сусе у слика отказывается работать отладка. вываливается по таймауту. слик тоже 10-ка.
    не сталкивались с такой проблемой?
    ... << RSDN@Home 1.1.3 stable >>
    Re[2]: (x)emacs как универсальный редактор
    От: k. Россия  
    Дата: 24.01.06 08:05
    Оценка:
    не подскажете, по ЕМаксу?
    что сделать чтоб он при открытии файла /срр например/ автоматически активировал цветовую подсветку? в моем случае она появляется только если выбрать пункт меню "цветовая подсветка для этого файла" /или чтот в этом духе/, ну и соотвественно делать подобное для каждого вновь открытого файла довольно не удобно.
    ... << RSDN@Home 1.1.3 stable >>
    Re[2]: (x)emacs как универсальный редактор
    От: k. Россия  
    Дата: 02.02.06 09:44
    Оценка:
    XRefact под Windows, на обычном интерфейсном проекте просто жутко тормозит. он построил тагов на 5,5 Мб и очень медленно в них чтото ищет /дополнение переменной может 30-40 сек. занимать/
    есть какие то варианты по его ускорению? чтот отключить, чтот доустановить?
    Re[3]: (x)emacs как универсальный редактор
    От: Cyberax Марс  
    Дата: 09.02.06 16:43
    Оценка:
    k. wrote:
    > XRefact под Windows, на обычном интерфейсном проекте просто жутко
    > тормозит. он построил тагов на 5,5 Мб и очень медленно в них чтото ищет
    > /дополнение переменной может 30-40 сек. занимать/
    > есть какие то варианты по его ускорению? чтот отключить, чтот доустановить?
    Ухх.. Извиняюсь за долгий ответ — ваше письмо попало в спамобойку,
    только сейчас его заметил.

    Во-первых, не включен ли у вас антивирус? У меня такая проблема возникла
    когда был активен Касперский — он перехватывал обращения к файлам и все
    работало ОЧЕНЬ медленно. Во-вторых, нет ли у вас очень глубоких шаблонов?

    Ну и еще попробуйте создать receipt-файлы и посмотреть что получится.
    Posted via RSDN NNTP Server 2.0
    Sapienti sat!
    Re[4]: (x)emacs как универсальный редактор
    От: k. Россия  
    Дата: 10.02.06 09:18
    Оценка:
    Здравствуйте, Cyberax, Вы писали:

    C>Во-первых, не включен ли у вас антивирус? У меня такая проблема возникла

    C>когда был активен Касперский — он перехватывал обращения к файлам и все
    C>работало ОЧЕНЬ медленно.

    антивирус не то что не включен — его просто нет

    C>Во-вторых, нет ли у вас очень глубоких шаблонов?


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

    C>Ну и еще попробуйте создать receipt-файлы и посмотреть что получится.


    а это что? как подобное создается?

    З.Ы. если сравнить с тем что создается в проектах пол пингвином, то общий размер файлов xref-a редко переваливает за 500кб. а тут, со своими 5-6мб он и тормозит
    ... << RSDN@Home 1.1.3 stable >>
    Подождите ...
    Wait...
    Пока на собственное сообщение не было ответов, его можно удалить.