Windows 创建Cygwin emacs宏

Windows 创建Cygwin emacs宏,windows,emacs,cygwin,Windows,Emacs,Cygwin,我一直是。我已经让它工作了,但现在我想编写一个宏,它将执行以下操作: 通过键入M-x cygwin启动 将脚本存储在某个明显的位置(可能是我的.emacs文件) M-x外壳 可能使用M-x重命名缓冲区将缓冲区重命名为cygwin(或者cygwin1、cygwin2、cygwin3,…,如果cygwin存在) M-x ansi颜色,用于comint模式开启 M-x设置缓冲区进程编码系统“未决定的unix”未决定的unix 打开并运行cygwin 它将基本上完成上述所有步骤。我认为这个小项目的大

我一直是。我已经让它工作了,但现在我想编写一个宏,它将执行以下操作:

  • 通过键入M-x cygwin启动
  • 将脚本存储在某个明显的位置(可能是我的.emacs文件)
  • M-x外壳
  • 可能使用M-x重命名缓冲区将缓冲区重命名为cygwin(或者cygwin1、cygwin2、cygwin3,…,如果cygwin存在)
  • M-x ansi颜色,用于comint模式开启
  • M-x设置缓冲区进程编码系统“未决定的unix”未决定的unix
  • 打开并运行cygwin
它将基本上完成上述所有步骤。我认为这个小项目的大部分组织工作已经完成。我该如何将它们绑定在一起,这样我就可以键入M-x cygwin并看到一个新的cygwin缓冲区?到底需要向.emacs添加什么?另外,Windows中的.emacs具体在哪里


我现在仍然希望能够为windows shell运行M-x shell。我也可以为MSYS和ssh制作类似的宏到我的Linux机器上。如何开始?

许多问题,以下是一些答案:

你的.emacs可以存在于许多地方,这取决于阅读。简而言之,试试C-xc-f.emacs,或者检查变量
'user-init-file
(C-hv 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-xc-f.emacs并将其粘贴到打开的缓冲区中,可以最容易地将上述命令转储到.emacs中。保存并重新启动(或者在光标位于该命令体中时执行M-x eval defun),然后M-x cygwin将运行该命令