Создание макроса Cygwin emacs - PullRequest
       5

Создание макроса Cygwin emacs

0 голосов
/ 28 октября 2009

Я изучал, как заставить Cygwin работать под emacs . У меня это работает, но теперь я хочу написать макрос, который будет делать следующее:

  • Запустите, набрав M-x cygwin
  • Храните скрипт в каком-то очевидном месте (вероятно, в моем файле .emacs)
  • М-х оболочка
  • Переименование буфера в cygwin (или cygwin1, cygwin2, cygwin3, ..., если cygwin существует), возможно, с использованием M-x rename-buffer
  • M-x ANSI-color-for-comint-mode-on
  • M-x set-buffer-process-coding-system 'undecided-unix' undecided-unix
  • Открыть и запустить Cygwin

Он в основном сделает все вышеперечисленные шаги. Я думаю, что большая часть организации для этого маленького проекта сделана. Как связать все это вместе, чтобы я мог просто набрать M-x cygwin и увидеть счастливый новый буфер cygwin? Что именно нужно добавить в .emacs? Кроме того, где именно .emacs в Windows?

Мне все еще нужна возможность запуска оболочки M-x для оболочки Windows. Я также могу сделать подобные макросы для MSYS и ssh'ing для моих Linux-блоков. Как начать?

1 Ответ

2 голосов
/ 28 октября 2009

Многие вопросы, вот некоторые ответы:

Ваш .emacs может существовать во многих местах, в зависимости от этого, прочитайте здесь . Вкратце попробуйте C-x C-f .emacs или проверьте значение переменной 'user-init-file ( C-h v user-init-file ).

Я думаю, что команда, которую вы хотите, что-то вроде этого:

(require 'comint) ; this does require comint
(defun cygwin ()
  "do what i want for cygwin"
  (interactive)
  (let ((buffer (get-buffer-create (generate-new-buffer-name "cygwin"))))
    (pop-to-buffer buffer)
    (unless (comint-check-proc buffer)
      (apply 'make-comint-in-buffer (buffer-name buffer) buffer "c:/cygwin/Cygwin.bat"
             nil
             nil)
      (ansi-color-for-comint-mode-on)
      (set-buffer-process-coding-system 'undecided-unix 'undecided-unix))))

Примечание: Я непосредственно запустил процесс Cygwin.bat вместо того, чтобы запустить оболочку и запустить этот пакетный процесс. Я считаю, что эффект тот же, и более прямой. Я выбрал простой способ присвоения имени буферу (используя 'generate-new-buffer-name) - вы захотите настроить то, что вам нужно.

Вы можете вывести указанную выше команду в свой .emacs проще всего, выполнив C-x C-f .emacs и вставив ее в открываемый буфер. Сохраните его и перезапустите (или выполните M-x eval-defun , когда курсор находится в теле этой команды. Затем M-x cygwin запустит команду.

...