创建Cygwin emacs宏

时间:2009-10-28 02:30:37

标签: windows emacs cygwin

我一直researching how to get Cygwin to work under emacs。我有它工作,但现在我想写一个宏将执行以下操作:

  • 键入M-x cygwin
  • 启动
  • 将脚本存储在一些显而易见的地方(可能是我的.emacs文件)
  • M-x shell
  • 将缓冲区重命名为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中的是什么?另外,Windows中的.emacs究竟在哪里?

我现在仍然希望能够为Windows shell运行M-x shell。我也可以为MSYS制作类似的宏,并为我的Linux盒子制作ssh'ing。我该如何开始?

1 个答案:

答案 0 :(得分:2)

很多问题,这里有一些答案:

你的.emacs可以存在很多地方,取决于,阅读here。简而言之,尝试 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而不是运行shell,然后启动该批处理程序。我相信效果是一样的,而且更直接。我确实选择了简单的方法来命名缓冲区(使用'generate-new-buffer-name) - 你需要自定义你想要的。

您可以通过执行 C-x C-f .emacs 并将其粘贴到打开的缓冲区中,将上述命令最简单地转储到.emacs中。保存并重新启动(或当光标在该命令的主体中时执行 M-x eval-defun 。然后 M-x cygwin 将运行该命令。

相关问题