Отдал бы и ползарплаты! Войти !bnw Сегодня Клубы
Вот уважаю я в емаксе макросы, которые по F3/F4 записываются и выполняются. Очень удобно. Даже порой индентацию текста меняю через них (в целом-то это извращение, но иногда так быстрее). Интересно вот что. Можно ли записать макрос интерактивно, но привязать его к какой-нибудь клавише? Вручную в ~/.emacs пердолиться не хочу, сорь заранее.
#UXO92K / @gds / 3640 дней назад

20 matches in 14 lines for "macro" in buffer: *Packages*
     75:  anaphora           20140728.... available  melpa      anaphoric macros providing implicit temp variables
    237:  centimacro         20140306.627 available  melpa      Assign multiple macros as global key bindings
    444:  doremi-mac         20131226.... available  melpa      A macro for defining Do Re Mi commands.
    530:  elmacro            20141109.724 available  melpa      Convert keyboard macros to elisp
   1039:  imakado            20141024.223 available  melpa      imakado's usefull macros and functions
   1147:  kmacro-decision    20130919.826 available  melpa      Add conditional branching to keyboard macros
   1218:  macro-math         20130328.904 available  melpa      in-buffer mathematical operations
   1219:  macros+            20131227.136 available  melpa      Extensions to `macros.el'.
   1220:  macrostep          20141014.... available  melpa      interactive macro stepper for Emacs Lisp
   1251:  map-progress       20140310.... available  melpa      mapping macros that report progress
   1270:  mbe                20141112.... available  melpa      Macros by Example
   1985:  textmate-to-yas    20130509.854 available  melpa      Import Textmate macros into yasnippet syntax
   2042:  ucs-cmds           20131227.204 available  melpa      Macro to create commands that insert Unicode chars.
   2242:  edmacro            2.1          built-in              keyboard macro editor
#UXO92K/PV0 / @ninesigns / 3640 дней назад
@4da то есть, тебе неизвестно штатное решение проблемы, но в качестве помощи ты выдал набор пакетов, связанных с макросами. Так?
#UXO92K/L70 / @gds --> #UXO92K/PV0 / 3640 дней назад

@gds а, вот что нашел в закромах:
```
(defun user-macro-file() "~/.emacs.d/custom-macros.el")

(load (user-macro-file))

(defun save-macro (name)

"save a macro. Take a name as argument
and save the last defined macro under
this name at the end of your .emacs"
(interactive "SName of the macro :") ; ask for the name of the macro

(kmacro-name-last-macro name) ; use this name for the macro

(find-file (user-macro-file)) ; open ~/.emacs or other user init file
(goto-char (point-max)) ; go to the end of the .emacs
(newline) ; insert a newline
(insert-kbd-macro name) ; copy the macro
(newline) ; insert a newline
(switch-to-buffer nil)) ; return to the initial buffer

(save-buffer (user-macro-file))

#UXO92K/HH2 / @ninesigns --> #UXO92K/L70 / 3640 дней назад
@4da я тупой. Как это использовать?
#UXO92K/W9I / @gds --> #UXO92K/HH2 / 3640 дней назад

@gds записываешь макрос, вызываешь M-x save-macro, оно сохраняется в файл user-macro-file в виде функции. при следующем запуске этот файл грузится и ты получаешь обратно свои макросы.

#UXO92K/101 / @ninesigns --> #UXO92K/W9I / 3640 дней назад
чем тебе буфер *scratch* не подходит?
#UXO92K/657 / @grouzen / 3640 дней назад
Впрочем, опять таки, какая разница где писать макрос? Ты же все равно его писать будешь. Так пиши сразу в .emacs, выполняй выражение/смотри результат/повторяй пока не будет нравится
#UXO92K/Z1H / @grouzen / 3640 дней назад

@grouzen ты точно ебанутый

#UXO92K/9OG / @ninesigns --> #UXO92K/Z1H / 3640 дней назад
было в vim
#UXO92K/OOK / @komar / 3640 дней назад

@komar было в multi-edit

#UXO92K/Y70 / @ninesigns --> #UXO92K/OOK / 3640 дней назад
@4da благодарю, теперь разобрался и проверил. Стало гораздо лучше. Но к клавише не привязывает. Смогу, конечно, по нужде сделать F3 M-x mymacro Enter F4. Если у кого-нибудь будет решение, которое сразу хоткей лепит, хотелось бы увидеть.
#UXO92K/6B9 / @gds --> #UXO92K/101 / 3640 дней назад
@grouzen что с ним делать? Мне не буфер нужен.
#UXO92K/0Q3 / @gds --> #UXO92K/657 / 3640 дней назад
@grouzen нет, не буду я его вручную писать. По крайней мере теперь.
#UXO92K/9H8 / @gds --> #UXO92K/Z1H / 3640 дней назад
@4da было irl // шах и мат
#UXO92K/AU4 / @gds --> #UXO92K/Y70 / 3640 дней назад

@gds

(defun save-macro-bind-key (name key)
"save a macro. Take a name, keyinding as argument
and save the last defined macro under
this name at the end of your .emacs"
(interactive "SName of the macro: \nKKey binding: ") ; ask for the name of the macro
(kmacro-name-last-macro name) ; use this name for the macro
(find-file (user-macro-file)) ; open ~/.emacs or other user init file
(goto-char (point-max)) ; go to the end of the .emacs
(newline) ; insert a newline
(insert-kbd-macro name) ; copy the macro
(newline) ; insert a newline
(switch-to-buffer nil); return to the initial buffer
(global-set-key key name))

проверяй

#UXO92K/H8C / @ninesigns --> #UXO92K/6B9 / 3640 дней назад
@4da проверил, лучше, но в custom-macros.el нет global-set-key, поэтому при перезапуске оно не вспоминает хоткей. Впрочем, если будет влом -- так и скажи, и я сам нагуглю, как туда дописать global-set-key, теперь у меня есть направление "куда копать".
#UXO92K/SQO / @gds --> #UXO92K/H8C / 3640 дней назад

@gds ```
(defun save-macro-bind-key (name key)
"save a macro. Take a name, keyinding as argument and save the last defined macro under this name at the end of your .emacs"
(interactive "SName of the macro: \nKKey binding: ") ; ask for the name of the macro and a keybinding
(kmacro-name-last-macro name) ; use this name for the macro

(find-file (user-macro-file)) ; open ~/.emacs or other user init file
(goto-char (point-max)) ; go to the end of the .emacs
(newline) ; insert a newline
(insert-kbd-macro name) ; copy the macro
(newline) ; insert a newline

 (insert (format "(global-set-key (kbd \"%s\") '%s)"
                 (key-description key) name))

 (switch-to-buffer nil); return to the initial buffer
 (global-set-key key name))
#UXO92K/03T / @ninesigns --> #UXO92K/SQO / 3640 дней назад
@4da благодарю, теперь вообще заебись! Я там чуток красоты навёл, получилось так: https://gist.github.com/gdsfh/a87f039e5796e57e2c3b
#UXO92K/WA9 / @gds --> #UXO92K/03T / 3640 дней назад

@gds zъc

#UXO92K/2E7 / @ninesigns --> #UXO92K/WA9 / 3640 дней назад
> в целом-то это извращение, но иногда так быстрее постоянно так делаю. Часто так быстрее, да.
#UXO92K/F3B / @kb / 3640 дней назад
@4da `C-x (`, записываешь макрос, `C-x )`. Для проигрывания жмешь `C-x e`, последующие нажатия на `e` сделают его еще раз.
#UXO92K/9EL / @kb --> #UXO92K/PV0 / 3640 дней назад

@kb спасибо

#UXO92K/72Y / @ninesigns --> #UXO92K/9EL / 3640 дней назад
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

Цоперайт © 2010-2016 @stiletto.