LINUX.ORG.RU

Emacs, Noweb мод


0

1

В чем беда:

M-x
noweb-set-doc-mode
latex-mode
M-x
noweb-set-code-mode
c++-mode
Моды применяются на весь буфер. Удобно тем, что можно применять в ``chunks" спец. команды, НО: выглядит ппц как ужасно: при редактировании chunk'а c++-mode жутко изрисовывает документацию в latex, а latex-mode коверкает код, используя (под/над)строчные символы.

Вопрос: можно ли избавиться от коллизии модов для кода и документации? (как в org-mode)
Спасибо.

Установил пакет ``app-emacs/mmm-mode" (mmm-noweb.el присутствует), почитал info. Как-то там все запутано... Буду благодарен за конкретный рецепт использования этого мода.



Последнее исправление: kermzyxer (всего исправлений: 1)

Что если так? Надо буфер в LaTeX-mode перевести.

(require 'mmm-noweb)

(add-hook 'LaTeX-mode-hook 
	  (lambda () 
	    (setq mmm-classes 'noweb)
	    (setq mmm-noweb-code-mode 'c++-mode)
	    (make-local-variable 'mmm-global-mode)
	    (setq mmm-global-mode t)))

Но у меня Emacs старый пока, поэтому не знаю, что произойдет. У меня куски кода распознает, но вот появились глюки в работе mmm с c++-mode. У меня как-то давно был написан кусок для web-правки (php+css+(x)html+js) и он как-то работал в Emacs 21, но сейчас при попытке его воскрешения из мертвых в Emacs 22 и редактирвования кусков c++ получаю ошибку (Wrong type argument: stringp, nil), с которой надо разбираться. Причем это, кажется, связано с тем как ведет себя c-mode с mmm-mode.

Zubok ★★★★★
()

Еще, кстати, есть некий noweb.el.

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

Поигрался с latex-mode-hook, noweb-mode-hook и mmm-*-hook - пока особо не помогло. Как вариант: можно использовать для редактирования noweb файлов mmm-mode без noweb-mode. Буду еще ковыряться.

kermzyxer
() автор топика
Ответ на: комментарий от kermzyxer

>Поигрался с latex-mode-hook, noweb-mode-hook и mmm-*-hook - пока особо не помогло. Как вариант: можно использовать для редактирования noweb файлов mmm-mode без noweb-mode. Буду еще ковыряться.

А что именно не помогло? Не совсем понятно. Не завелось? В modeline видишь как режим переключается при проходе буфера? MMM там появилось?

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

1) без noweb-mode
mmm-mode работает более-менее удовлетворительно только с fundamental-mode + <smth.>-mode, с latex-mode + <smth.>-mode проблемы: modeline для chunk'а ``(LaTeX[C++/l] MMM Abbrev)", начертание символов меняет, синтаксис подсвечивает плохо. Возможно, проблема решаема, надо читать документацию к mmm-mode.
2) с noweb-mode
Если включить одновременно и noweb-mode и mmm-mode, то они будут сменяться после каждого перемещения каретки. Я таки добился, чтобы они кое-как работали вместе, но все равно проблемы из 1) остаются.

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

kermzyxer
() автор топика
Ответ на: комментарий от kermzyxer

>проблемы: modeline для chunk'а ``(LaTeX[C++/l] MMM Abbrev)", начертание символов меняет, синтаксис подсвечивает плохо. Возможно, проблема решаема, надо читать документацию к mmm-mode.

Однако видно, что mmm-noweb области у тебя распознал нормально (то есть <<blah>>= и [[blah]]), но вот у меня тоже синтаксис подсветил плохо и не во всех чанках позволяет редактировать код C++ вообще. У меня такая смесь, повторюсь, работала на Emacs 21. php-mode ведь производная от c-mode, как и c++-mode. Сейчас же то старое решение тоже не работает с такими же симптомами. Мне кажется, что mmm-mode и c-mode перестали работать номрально. Разбираться надо.

Да, а вот у меня символы внутри c++ не портятся LaTeX'ом. Или у тебя портится, когда preview делаешь?

Zubok ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.