LINUX.ORG.RU
 
atoku

Статья "Emacs с удобствами".


0

0

Новая статья о Emacs. По сути, продолжение статьи "Точки Emacs" (которая со времени первой публикации очень сильно изменилась). Кроме общих приколов содержится информация о компиляции в Emacs, о ECB, которая превращает Emacs в более полную интегрированную среду разработки программ (и не только программ) и о взаимодействии Emacs с CVS. Кажется это первый более-менее подробный материал о ECB на русском. Есть скриншоты с примерами. Проводится идеология экономии пальцевых усилий в работе и предлагается возможное подспорье.

Всякая конструктивная критика яростно ;) приветсвуется. Благодаря ЛОРу первая статья была радикально переработана и улучшена за что всем огромное спасибо.

>>> Сама статья "Emacs с удобствами"


[#] Ответ на: Re: Статья "Emacs с удобствами". от LX 03.06.2004 18:01:08  

Re: Re: Статья "Emacs с удобствами".

>Очень бы хотелось увидеть подобную статью, про то, как прикрутить GDB >к Emacs Имеется ввиду расстановка breakpoints, watch ну и подобные >вещи.

А ты в меню tools Debuger не находил?

gdb давно прекручен.

anonymous ()
[#] Ответ на: Re: Статья "Emacs с удобствами". от anonymous 04.06.2004 17:54:24  
lg

Re: Re: Статья "Emacs с удобствами".

Вот новая версия:

(defun my-complex-replace (b e)
  "Complex replace."
  (interactive "r")

  (let (ost nst nrepls)
    (unwind-protect
        (progn
          (narrow-to-region b e)
          (setq ost (buffer-substring (point-min) (point-max)))
          (message "Press `C-M-c'(or whatever) when you finished.")
          (recursive-edit)
          (setq nst (buffer-substring (point-min) (point-max)))
          (delete-region (point-min) (point-max))
          (insert ost))
      (widen))

    (save-excursion
      (goto-char (point-min))
      (setq nrepls 0)
      (while (search-forward ost nil t)
        (setq nrepls (1+ nrepls))
        (replace-match nst))
      (unless (zerop nrepls)
        (message "Total %d replaces." nrepls))
      )
    ))

но чтобы был виден текст во время модификации это немного сложнее и
различно для GNU Emacs и XEmacs .. нужно использовать overlay(GNU 
Emacs) или extent(XEmacs) .. к тому же если еще сказать что нельзя 
выходить за рамки региона то тут надо пользовать 
atomic-extents(XEmacs) ..   не знаю как обстоят дела с этим в GNU 
Emacs

** ()
[#] Ответ на: Re: Re: Статья "Emacs с удобствами". от lg 04.06.2004 18:26:49  

Re: Re: Re: Статья "Emacs с удобствами".

> Вот новая версия:

Отлично. Спасибо. Уже можно использовать. Только курсор почему-то ставится в левый верхний угол окна и я не вижу строк которые выше. Рецепт про поля из статьи поможет?

> но чтобы был виден текст во время модификации это немного сложнее и различно для GNU Emacs и XEmacs ..

Мне для GNU Emacs. Но если даже тебе это сложно то и на том спасибо.

> если еще сказать что нельзя выходить за рамки региона

А вот это совсем не нужно.

anonymous ()
[#] Ответ на: Re: Re: Re: Re: Статья от awn 04.06.2004 17:36:13  
hbee

Re: Re: Re: Re: Re: Статья

>M-x folding-mode

Спасибо, нашёл через google.

** ()
[#] Ответ на: Re: Re: Re: Re: Статья от awn 04.06.2004 17:36:13  
hbee

Re: Re: Re: Re: Re: Статья

А как насчёт цветного diff'а с автофолдингом одинаковых частей, наподобие vimdiff? :)

** ()
[#] Ответ на: Re: Re: Re: Re: Re: Статья от hbee 04.06.2004 19:19:36  

Re: Re: Re: Re: Re: Re: Статья

> А как насчёт цветного diff'а с автофолдингом одинаковых частей, наподобие vimdiff? :)

Не до конца понятно, что именно имелось в виду...

Если нужен режим облегчающий правку или просто прыжки по уже готовому diff'у -- то diff-mode

Если же "визуальный" front-end к diff'у -- то ediff (ediff (он же ediff-files), ediff-buffers, ediff-directories, и т.д. и т.п.)

* ()
[#] Ответ на: Re: Статья от anonymous 04.06.2004 14:52:05  
Dselect

мсье знает толк в извращениях

> Имакс замечательная среда разработки. Единственный конкурент для него под Вынь - это MultiEdit.

Не, это VS + vim с OLE extension.

*** ()
[#] Ответ на: Re: Статья от anonymous 04.06.2004 14:52:05  
eXOR

Re: Re: Статья

> Просто похоже процент настоящих программеров в форуме стремится к
> нулю. Имакс замечательная среда разработки. Единственный конкурент для
> него под Вынь - это MultiEdit. Кто знает что это такое - меня поймет.
1. Уровень програмиста не определяется используемым редактором (помнишь чем Левша блоху подковал? А знаешь что были времена, когда писали в ed - они типа были отстоем и дурачьем?)
2. MultiEdit ИМХО сильно уступает vslick'у.
3. Vim вполне сопоставим с emacs, разве что подходы к одному и тому же разные.

PS: А всем говорящим о пальцатостях и каменных веках или про рулезы и саксы - дружно пересаживаться на ed.

***** ()
[#] Ответ на: Re: Re: от bzImage 04.06.2004 15:56:35  
atoku

Re: Re: Re:

2bzImage

>Есть с ecb одна засыпка. Я не знаю как отключить truncate в буфере редактирования. Настройки для остальных буферов в ecb есть, а для буфера редактирования - нет. :(

Для буфера редактирования все настройки делаются в .emacs так как по задумке этот буфер не должен отличаться от режима без ECB вообще. Для отключения автоматической обрубки строк посмотрите функцию turn-on-auto-fill, turn-off-auto-fill и переменную auto-fill.

Чтобы включить авто-заполнение (это ведь и есть то, что вы называете "транкейт"?) только для текстовой моды, у меня в .emacs есть команда:

(add-hook 'text-mode-hook 'turn-on-auto-fill)

*** ()
[#] Ответ на: Re: Re: Re: Re: Ответы всем от lg 04.06.2004 14:35:17  
atoku

Re: Re: Re: Re: Re: Ответы всем

2lg

>Положить текущую позицию в стек - `C-x <SPC>'

>Прыгнуть на позицию в вершине стека - `C-u C-x <SPC>'

У меня это не работает. Может это только для XEmacs?

*** ()
[#] Ответ на: Re: Re: Re: Re: Ответы всем от awn 04.06.2004 14:31:00  

Re: Re: Re: Re: Re: Ответы всем

> Недостаточно информации. Что понимать под "большим перемещением"? Например, 'beginning-of-buffer' ('M-<') и 'end-of-buffer' ('M->') запоминают старую позицию в mark-ring'е автоматически.

> См. info node 'Mark Ring' для деталей.

Почти то, что нужно. Только работает немного странно (непривычно): непонятное деление на локальную и глобальную историю, перемещение только по кругу, а не вперед-назад, забывает позицую, с которой вызываешь pop-mark (на нее можно вернуться только руками).

> Так же некоторые команды имеют своё собственное кольцо/стэк позиций. Например, если прыгаешь по тэгам ('find-tag' ('M-.'), 'tags-loop-continue' ('M-,')) -- то "пройти путь обратно" можно по 'pop-tag-mark' ('M-*').

Тоже непонятно, почему не используется одна история на все перемещения.

anonymous ()
[#] Ответ на: Re: Re: Re: Re: Ответы всем от lg 04.06.2004 14:35:17  

Re: Re: Re: Re: Re: Ответы всем

> Положить текущую позицию в стек - `C-x <SPC>'

> Прыгнуть на позицию в вершине стека - `C-u C-x <SPC>'

У меня не работает. Нашел только `C-x C-SPC': C-x C-SPC runs the command pop-global-mark.

anonymous ()
[#] Ответ на: Re: Re: Re: от atoku 04.06.2004 23:03:47  

Re: Re: Re: Re:

> Чтобы включить авто-заполнение (это ведь и есть то, что вы называете "транкейт"?) только для текстовой моды, у меня в .emacs есть команда:

Скорее всего надо toggle-truncate-lines.

anonymous ()
[#] Ответ на: Re: Re: Re: Re: Re: Ответы всем от anonymous 04.06.2004 23:25:37  
atoku

Re: Re: Re: Re: Re: Re: Ответы всем

>У меня не работает. Нашел только `C-x C-SPC': C-x C-SPC runs the command pop-global-mark.

А чем не устраивает рекомендация из первой статьи? Только одна позиция запоминается, поэтому?

*** ()
[#] Ответ на: Re: Re: Re: Re: Re: Ответы всем от atoku 04.06.2004 23:11:05  
lg

Re: Re: Re: Re: Re: Re: Ответы всем

> У меня это не работает

звиняйте хлопцы - это мои локальные биндинги которые я уже стал считать дефольтными :)

** ()
[#] Ответ на: Re: Re: Re: Re: от anonymous 04.06.2004 23:28:01  

Re: Re: Re: Re: Re:

>> Чтобы включить авто-заполнение (это ведь и есть то, что вы называете "транкейт"?) только для текстовой моды, у меня в .emacs есть команда:

>Скорее всего надо toggle-truncate-lines.

Ага, надо. Вот только какого хрена ecb мне его включает? Без ecb - нет truncate с ecb - есть. Причем опции для отключения в буферах деревьев есть в вто для буфера редактирования - нет.

Набирать каждый раз или биндить клавиши не хочется. Вопрос так и остался. Какого хрена?

anonymous ()
[#] Ответ на: Re: Re: Re: Re: Re: от anonymous 05.06.2004 0:32:56  
atoku

Re: Re: Re: Re: Re: Re:

>Набирать каждый раз или биндить клавиши не хочется. Вопрос так и остался. Какого хрена?

А хрен его знает. :)

*** ()
[#] Ответ на: Re: Re: Re: Re: Re: Re: Ответы всем от lg 05.06.2004 0:11:17  
atoku

Re: Re: Re: Re: Re: Re: Re: Ответы всем

>> У меня это не работает

>звиняйте хлопцы - это мои локальные биндинги которые я уже стал считать дефольтными :)

:) Прикол. А я намучился разбираться, почему у меня не работает.

*** ()
[#] Ответ на: Re: Re: Re: Re: Re: Re: Re: Ответы всем от atoku 05.06.2004 1:03:41  
atoku

Emacs Wiki

2lg:

Вот, научился работать с Emacs Wiki. Я раньше, грешным делом, думал, что это только ты поддерживаешь русский Emacs wiki :) Впрочем, похоже это не очень далеко от истины ;)

*** ()
[#] Ответ на: Re: Re: Re: Re: Re: Ответы всем от anonymous 04.06.2004 23:24:12  

Re: Re: Re: Re: Re: Re: Ответы всем

>> См. info node 'Mark Ring' для деталей.

[skip]

>> Так же некоторые команды имеют своё собственное кольцо/стэк позиций. Например, если прыгаешь по тэгам ('find-tag' ('M-.'), 'tags-loop-continue' ('M-,')) -- то "пройти путь обратно" можно по 'pop-tag-mark' ('M-*').

> Тоже непонятно, почему не используется одна история на все перемещения.

Потому, что mark-ring -- локальный для каждого буфера, а pop-tag-mark прыгает и между буферами тоже.

Почему же "штатный" mark-ring столь "странен" -- этого сказать не могу. Скажем прямо, дальше одной позиции вглубь я им не пользуюсь и для скоростного "доступа к точкам" использую тэги, FuMe (Function Menu) и регистры. Причина -- для меня XEmacs в первую очередь мощная IDE, а уже во ворую редактор для "обычных человеческих" текстов.

* ()
[#] Ответ на: Re: Re: Re: Re: Re: от anonymous 05.06.2004 0:32:56  

Re: Re: Re: Re: Re: Re:

>> Скорее всего надо toggle-truncate-lines.

> Ага, надо. Вот только какого хрена ecb мне его включает? Без ecb - нет truncate с ecb - есть. Причем опции для отключения в буферах деревьев есть в вто для буфера редактирования - нет.

> Набирать каждый раз или биндить клавиши не хочется. Вопрос так и остался. Какого хрена?

А если хук на моду повесить и из него выключать? Костыль, конечно... Но...

Но с 33-й стороны может кто-то использующий ECB что-нибудь более "прямое" подскажет? (я лично никогда ECB не использовал -- не нужен)

* ()
[#] Ответ на: Re: Re: Re: Re: Re: Re: Ответы всем от atoku 04.06.2004 23:42:37  

Re: Re: Re: Re: Re: Re: Re: Ответы всем

Да, и то что надо руками выставлять позицию, на которую потом хочешь вернуться. В принципе, часть проблемы решает mark-ring, но хотелось бы от него большей управляемости.

anonymous ()
[#] Ответ на: Re: Re: Re: Re: Re: Re: Ответы всем от awn 05.06.2004 18:32:12  

Re: Re: Re: Re: Re: Re: Re: Ответы всем

> Потому, что mark-ring -- локальный для каждого буфера, а pop-tag-mark прыгает и между буферами тоже.

В GNU Emacs есть еще global-mark-ring.

> Скажем прямо, дальше одной позиции вглубь я им не пользуюсь и для скоростного "доступа к точкам" использую тэги, FuMe (Function Menu) и регистры.

Понятно.

anonymous ()
[#] Ответ на: Re: Re: Re: Re: Re: Re: Re: Ответы всем от anonymous 05.06.2004 22:36:36  
atoku

to lg

2lg:

Hi! Thanks for note on my web page on wiki. I thought to translate a couple of materials from wiki to Russian. What would you advice to start from?

PS I could not leave a message on your page. Commitment was banned by wiki site.

*** ()
[#] Ответ на: Re: Re: Re: Re: Статья "Emacs с удобствами". от anonymous 03.06.2004 13:57:59  
alphex_kaanoken

Re: Re: Re: Re: Re: Статья "Emacs с удобствами".

>mcedit рулит. а все остальное - для пальцеватых

отстой твой mcedit - ничего не умеет - подсветка и все, а форматирования и прочих удобностей в нем нет - так что это какой то ламерский редактор если честно. По крайней мере форматированием каких-либо исходников заниматься должен редактор а не программер.

*** ()