Emacs...
От: Sheridan Россия  
Дата: 09.01.16 15:06
Оценка:
Камрады, я таки пополз изучать emacs. Причём исключительно консольный, без иксов. Цель — сосредоточить всю разработку на одной машине и писать сквозь ssh. Я в курсе про rdp, vnc и прочие x11-forward, но мне они неинтересны.

Что могу сказать... Непривычно. Как будто попал обратно в 2006 год и изучаю линупс. Несколько другие приемы работы, другие шорткаты, все хоть немного но другое. Но меня радует кастомизуемость emacs, надеюсь в будущем соорудить для себя удобный мне ide и не метаться больше в этом зоопарке.
Наткнулся на https://github.com/xiaohanyu/oh-my-emacs — вроде ниче так, разбираюсь. Автокомплит, символы, подсветка плюс много чего. Но чувствую, в дальнейшем — откажусь, ибо много лишнего для меня, а лишнее я не люблю.

Собственно, есть вопросы конечно, ради этого и пишу.

1. Подскажите менеджер проектов, желательно такой, чтобы сильно кастомные cmake файлы понимал (у меня там много чего делается помимо "тут хедеры-тут сорцы-компилируй сюда"). Если не вариант — то хотя бы просто чтобы понимал что вот в этом фолдере и подфолдерах такой то набор файлов (масок) это один проект, а вот в том фолдере другой набор — другой проект.

2. Хочу разбить окно на несколько буферов, в идеале
|-----------------------------------|
|       |                           |
|       |                           |
|символы|                           |
|(тот же|                           |
| ctags)|          код              |
|-------|                           |
|       |                           |
|Файлы  |                           |
|проекта|                           |
|       |                           |
|-------|                           |
|Откр.  |                           |
| файлы |                           |
|-----------------------------------|

Как?

3. Воркспейсы к проекту. То есть открыл один проект — в нем одно расположение буферов, открыл другой проект — другое.


Буду задавать глупые вопросы, если найдется кто нибудь, сумеющий на них ответить.
Matrix has you...
Re: Emacs...
От: Artem Korneev США https://www.linkedin.com/in/artemkorneev/
Дата: 15.01.16 00:14
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>Камрады, я таки пополз изучать emacs.


А я сдался лет пять назад.
Так и не осилил допилить до того комфортного уровня. Некоторые детали поведениы emacs меня раздражали.

На тот момент неплохие конфиги выкладывал Alex Ott — он вроде и на RSDN когда-то появлялся.
С уважением, Artem Korneev.
Отредактировано 15.01.2016 0:14 Artem Korneev . Предыдущая версия .
Re: Emacs...
От: Evgeny.Panasyuk Россия  
Дата: 20.01.16 21:55
Оценка: 12 (1)
Здравствуйте, Sheridan, Вы писали:

S>Камрады, я таки пополз изучать emacs. Причём исключительно консольный, без иксов. Цель — сосредоточить всю разработку на одной машине и писать сквозь ssh.


Через SSH кстати работает мышь — нужно включить xterm-mouse-mode.

S>Я в курсе про rdp, vnc и прочие x11-forward, но мне они неинтересны.


Почему? Emacs в том числе поддерживает документы с картинками и разными шрифтами.

S>Что могу сказать... Непривычно. Как будто попал обратно в 2006 год и изучаю линупс. Несколько другие приемы работы, другие шорткаты, все хоть немного но другое.


Да, есть такое — и непривычно и неудобно. Есть различные готовые расширения дающие более привычные/удобные настройки: cua-mode, ergoemacs, spacemacs, etc.

S>Но меня радует кастомизуемость emacs,


Это самая сильная сторона. Причём фишка ещё и в том что расширения/кастомизации делать легко.
Например минут за 5-10 получилось сделать простую пошаговую отладку (step-into) для файлов CMake, на базе cmake --trace.
А для RSDN сделал rsdn-mode — кое-какая подсветка и например проставление инициалов при разбивке цитат на части. Сам редактор запускается по хоткею из Firefox через It's All Text, и автоматом включается rsdn-mode.

S>надеюсь в будущем соорудить для себя удобный мне ide и не метаться больше в этом зоопарке.


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

S>Наткнулся на https://github.com/xiaohanyu/oh-my-emacs — вроде ниче так, разбираюсь. Автокомплит, символы, подсветка плюс много чего. Но чувствую, в дальнейшем — откажусь, ибо много лишнего для меня, а лишнее я не люблю.


Из готового ещё хвалят Spacemacs, но там тоже есть дополнительные слои (так и называются — layers).

S>1. Подскажите менеджер проектов, желательно такой, чтобы сильно кастомные cmake файлы понимал (у меня там много чего делается помимо "тут хедеры-тут сорцы-компилируй сюда").


А что конкретно требуется?
https://www.youtube.com/watch?v=5FQwQ0QWBTU

S>Если не вариант — то хотя бы просто чтобы понимал что вот в этом фолдере и подфолдерах такой то набор файлов (масок) это один проект, а вот в том фолдере другой набор — другой проект.


Посмотри Projectile. Вот тут есть разные демо.

S>2. Хочу разбить окно на несколько буферов, в идеале

S>
S>|-----------------------------------|
S>|       |                           |
S>|       |                           |
S>|символы|                           |
S>|(тот же|                           |
S>| ctags)|          код              |
S>|-------|                           |
S>|       |                           |
S>|Файлы  |                           |
S>|проекта|                           |
S>|       |                           |
S>|-------|                           |
S>|Откр.  |                           |
S>| файлы |                           |
S>|-----------------------------------|
S>

S>Как?

Разбиение текущего окна по вертикали: C-x 3 по горизотнали: C-x 2
Настроить размеры проще всего мышью.

S>3. Воркспейсы к проекту. То есть открыл один проект — в нем одно расположение буферов, открыл другой проект — другое.


Прям из коробки можно сохранять конфигурацию окон в регистр: C-x r w букварегистра, и потом чтобы востановить C-x r j букварегистра.
Re[2]: Emacs...
От: Sheridan Россия  
Дата: 21.01.16 06:03
Оценка:
Спасибо за инфу

Я тут ковырялся-ковырялся... Похоже на то, что вся документация уже для понимающих везде. Ну установил я себя oh-my-emacs, но оно как то само по себе живёт, местами непонятно что происходит. Например, не сохраняются настройки местами, хотя явно жму save config.
В общем, вопросы появляются... Подскажи пожалуйста пару вещей
1. как в конфиге подключать расширения? Я так понял, что сначала надо указать путь где оно лежит, потом вгрузить. А вот как именно это делается, кусков конфига нигде не увидел. Точнее, они есть, но у меня так и не получалось завести. Например, пишут "укажите каталог с расширениями", а по факту расширение — это тоже каталог. Надо каждый каталог указывать?
2. Можно ли для проекта сохранять локальный конфиг, который емакс прочитает из текущей директории и автоматом вгрузит после инициализации?
Matrix has you...
Re[3]: Emacs...
От: Evgeny.Panasyuk Россия  
Дата: 21.01.16 06:57
Оценка: 22 (2)
Здравствуйте, Sheridan, Вы писали:

S>Спасибо за инфу




S>Я тут ковырялся-ковырялся... Похоже на то, что вся документация уже для понимающих везде.


Должен быть где-то материал для начинающих. Можешь вот эту видео-серию посмотреть (на русском):
http://www.youtube.com/watch?v=1Asfqt13G-0

S>Ну установил я себя oh-my-emacs, но оно как то само по себе живёт, местами непонятно что происходит. Например, не сохраняются настройки местами, хотя явно жму save config.


Тут ничего подсказать не смогу, так как не использовал oh-my-emacs.

S>1. как в конфиге подключать расширения? Я так понял, что сначала надо указать путь где оно лежит, потом вгрузить. А вот как именно это делается, кусков конфига нигде не увидел. Точнее, они есть, но у меня так и не получалось завести. Например, пишут "укажите каталог с расширениями", а по факту расширение — это тоже каталог. Надо каждый каталог указывать?


Начиная с Emacs 24 есть встроенное управление пакетами: M-x list-packages
Выбирай нужные пакеты и устанавливай. Можно добавить распространённый репозиторий пакетов (в начало конфига):
(require 'package)
(add-to-list 'package-archives
             '("melpa" . "http://melpa.org/packages/") t)
(package-initialize)


После установки пакетов иногда требуется добавить несколько строчек в конфиг, они указываются в документации. Например после того как установишь helm через list-packages, в конфиг достаточно добавить (как указанно в документации):
(require 'helm-config)
То есть никаких путей и прочего — он знает где искать.
Плюс, опционально добавляешь свои keybindings:
(global-set-key (kbd "M-x") 'helm-M-x)


Также в конфиге можно настроить автоматическую установку недостающих пакетов, например для случаев переноса конфига на другую машину, например.

S>2. Можно ли для проекта сохранять локальный конфиг, который емакс прочитает из текущей директории и автоматом вгрузит после инициализации?


Да, через механизм .dir-locals.el. При открытии файла Emacs ищет этот файл во всех вышестоящих директориях, и если находит то загружает из него настройки — http://www.gnu.org/software/emacs/manual/html_node/emacs/Directory-Variables.html
Re[4]: Emacs...
От: Sheridan Россия  
Дата: 25.01.16 09:52
Оценка:
Спасибо за подсказки, вроде как получается уже.
Теперь думаю, как дебаггер прикрутить (с++)
Что посоветуешь?
Matrix has you...
Re[5]: Emacs...
От: Evgeny.Panasyuk Россия  
Дата: 25.01.16 10:09
Оценка: 10 (1)
Здравствуйте, Sheridan, Вы писали:

S>Теперь думаю, как дебаггер прикрутить (с++)

S>Что посоветуешь?

Там есть несколько вариантов: один полегче "gud-gdb", другой потяжелее "gdb".
Тот который потяжелее мне показался сыроватым. Но, справедливости ради, внешне выглядит неплохо:
  Скрытый текст


А тот который gud — поприятнее — считай тонкая обёртка над gdb, плюс кое-какая интеграция. Причём в отличие от "тяжёлого" он работает и через TRAMP (Emacs запущенный на одной машине соединяется с другой через SSH (на которой может и не быть Emacs), удалённо запускает gdb и взаимодействует с ним).
Re[6]: Emacs...
От: Sheridan Россия  
Дата: 25.01.16 10:47
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

S>>Теперь думаю, как дебаггер прикрутить (с++)

S>>Что посоветуешь?

EP>Там есть несколько вариантов: один полегче "gud-gdb", другой потяжелее "gdb".

EP>Тот который потяжелее мне показался сыроватым. Но, справедливости ради, внешне выглядит неплохо:
Покурю, спасибо.

EP>А тот который gud — поприятнее — считай тонкая обёртка над gdb, плюс кое-какая интеграция. Причём в отличие от "тяжёлого" он работает и через TRAMP (Emacs запущенный на одной машине соединяется с другой через SSH (на которой может и не быть Emacs), удалённо запускает gdb и взаимодействует с ним).

Да я без гуёв в емаксе сижу, тупо в консоли. Так что мне проще сначала ssh, а потом уже в ём емакс
Matrix has you...
Re[7]: Emacs...
От: Evgeny.Panasyuk Россия  
Дата: 25.01.16 11:25
Оценка: +1
Здравствуйте, Sheridan, Вы писали:

S>Да я без гуёв в емаксе сижу, тупо в консоли. Так что мне проще сначала ssh, а потом уже в ём емакс


Кстати, я в Putty ставлю xterm-256color (Connection->Data->Terminal-type string, либо просто меняешь переменную окружения TERM) — даёт больше цветов в Emacs.
И учти, через SSH не все комбинации клавиш работают — может придётся что-то переназначить. Это особенность самого терминала SSH, а не Emacs.
Re[6]: Emacs...
От: Evgeny.Panasyuk Россия  
Дата: 28.01.16 07:29
Оценка:
EP>Там есть несколько вариантов: один полегче "gud-gdb", другой потяжелее "gdb".

Для lldb использую вот это: gud.el.
Re: Emacs...
От: uncommon Ниоткуда  
Дата: 28.01.16 07:49
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>Камрады, я таки пополз изучать emacs.


Опа! Самый большой линуксоид кывта не может Emacs! Чем ты редактировал скриптики до этого? Vim-ом? Ну тогда попробуй Spacemacs.

И вообще, книжки можно почитать, например, вот эту для начинающих: https://www.masteringemacs.org/ (ищи на любимом торреттреккере). Не надо пытаться сразу превратить Emacs в монстра IDE. Осваивай его как простой редактор. Когда прийдёт понимание, расширять Emacs будет проще простого.
Re[2]: Emacs...
От: Sheridan Россия  
Дата: 28.01.16 08:16
Оценка:
Здравствуйте, uncommon, Вы писали:

S>>Камрады, я таки пополз изучать emacs.

U>Опа! Самый большой линуксоид кывта не может Emacs! Чем ты редактировал скриптики до этого? Vim-ом?
mcedit'ом

U>Ну тогда попробуй Spacemacs.

Нее, консоль и только консоль.

U>И вообще, книжки можно почитать, например, вот эту для начинающих: https://www.masteringemacs.org/ (ищи на любимом торреттреккере). Не надо пытаться сразу превратить Emacs в монстра IDE. Осваивай его как простой редактор. Когда прийдёт понимание, расширять Emacs будет проще простого.

Как редактор уже освоил. Теперь именно ide. Сейчас пытаюсь разобраться с автокомплитом, скрещиваю semantic, ede, cedet, yasnippet, auto-complete и auto-complete-clang...
Хочу, чтобы оно внутрь макросов золазило и менюшки рисовало по . и -> а так же по tab пыталось закомплитить тоже с менюшкой.
Пока еще не совсем понятно как этого достичь, курю базу...
Matrix has you...
Re[3]: Emacs...
От: Evgeny.Panasyuk Россия  
Дата: 28.01.16 08:58
Оценка: 8 (1)
Здравствуйте, Sheridan, Вы писали:

U>>Ну тогда попробуй Spacemacs.

S>Нее, консоль и только консоль.

Spacemacs работает в том числе и в терминале.

S>Как редактор уже освоил. Теперь именно ide. Сейчас пытаюсь разобраться с автокомплитом, скрещиваю semantic, ede, cedet, yasnippet, auto-complete и auto-complete-clang...


Для автодополнения C++ я пока остановился на company, у него есть поддержка clang.
Для навигации либо global (gtags), либо rtags. rtags точнее (так как использует clang), но медленнее.
Для заготовок — yasnippet.
Подсветка ошибок — flycheck.
Переформатирование кода — clang-format.
Навигация по проекту — projectile.
Работа с git — magit.
Re: Emacs...
От: Dziman США http://github.com/Dziman
Дата: 28.01.16 16:46
Оценка: 10 (1) +1
Здравствуйте, Sheridan, Вы писали:

S> Буду задавать глупые вопросы, если найдется кто нибудь, сумеющий на них ответить.

Меня последнее время периодически накрывает попробовать использовать emacs Сейчас один из этих периодов и я нарыл неплохой модуль, который будет особенно полезен новичкам: https://github.com/justbur/emacs-which-key
avalon 1.0rc3 build 430, zlib 1.2.5
Re[4]: Emacs...
От: Sheridan Россия  
Дата: 29.01.16 06:48
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>Для навигации ... либо rtags.

странная штука, наполовину автоматизированная. Запусти ему демона, напиши ему как каждый файл в проекте компилировать... >_<
Matrix has you...
Re[5]: Emacs...
От: Evgeny.Panasyuk Россия  
Дата: 29.01.16 09:21
Оценка: 6 (1)
Здравствуйте, Sheridan, Вы писали:

EP>>Для навигации ... либо rtags.

S>странная штука, наполовину автоматизированная. Запусти ему демона, напиши ему как каждый файл в проекте компилировать... >_<

Это нужно любой точной утилите автодополнения/навигации, так как в C++ есть препроцессор, и фактический исходный код зависит от опций компиляции.
Но про каждый файл вручную ему не нужно говорить, он например понимает compile_commands.json производимый CMake'ом. Инструкция тут.
Re[6]: Emacs...
От: Sheridan Россия  
Дата: 29.01.16 10:22
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>Но про каждый файл вручную ему не нужно говорить, он например понимает compile_commands.json производимый CMake'ом. Инструкция тут.

О, спасибо! Только для cmake нужно еще set(CMAKE_GENERATOR "Ninja") сделать.
Matrix has you...
Re[7]: Emacs...
От: Evgeny.Panasyuk Россия  
Дата: 29.01.16 10:33
Оценка:
Здравствуйте, Sheridan, Вы писали:

EP>>Но про каждый файл вручную ему не нужно говорить, он например понимает compile_commands.json производимый CMake'ом. Инструкция тут.

S>О, спасибо! Только для cmake нужно еще set(CMAKE_GENERATOR "Ninja") сделать.

Не нужно, там достаточно -DCMAKE_EXPORT_COMPILE_COMMANDS=1 (при запуске cmake, либо выбрать через UI ccmake) и тогда cmake сгенирирует compile_commands.json.
Отредактировано 29.01.2016 10:35 Evgeny.Panasyuk . Предыдущая версия .
Re[8]: Emacs...
От: Sheridan Россия  
Дата: 29.01.16 10:46
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

S>>О, спасибо! Только для cmake нужно еще set(CMAKE_GENERATOR "Ninja") сделать.

EP>Не нужно, там достаточно -DCMAKE_EXPORT_COMPILE_COMMANDS=1 (при запуске cmake, либо выбрать через UI ccmake) и тогда cmake сгенирирует compile_commands.json.
А вот и нет, нифига оно не генерирует. Минут 15 не мог понять в чем дело, накручивал хвосты гуглу
Matrix has you...
Re[9]: Emacs...
От: Evgeny.Panasyuk Россия  
Дата: 29.01.16 11:02
Оценка:
Здравствуйте, Sheridan, Вы писали:

S>А вот и нет, нифига оно не генерирует. Минут 15 не мог понять в чем дело, накручивал хвосты гуглу


У меня работала (это опция самого CMake, попробуй поставить её через ccmake). Может у тебя CMake старый.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.