小编Jef*_*mes的帖子

在具有给定工作目录的emacs中打开shell

我想make-shells在emacs中有一个命令,它将打开一些emacs-shell缓冲区,每个缓冲区都有自己的工作目录.我的想法是,对于我正在处理的每个项目,我都有一个从该项目目录开始的shell,因此我可以轻松地在它们之间切换.

目前我有这个代码:

(defun shell-dir (name dir)
  (interactive "sShell name: \nDDirectory: ")
  (shell name)
  (switch-to-buffer name)
  (comint-send-string (current-buffer) (concat "cd " dir "\r"))
  (sleep-for 0 10)
  (dirs))

(defun make-shells ()
  (interactive)
  (shell-dir "project1" "~/proj/project1")
  (shell-dir "project2" "~/proj/project2")
  (shell-dir "project3" "~/proj/project3")
  (delete-window))
Run Code Online (Sandbox Code Playgroud)

但这很丑陋,有一半的时间(dirs)没有找到正确的路径,因此标签完成会中断,直到我手动重新运行它.是否有内置方法来设置emacs shell的当前工作目录?或者像CEDET这样的东西(再加上对shell和emacs模式的依赖程度更低)是一个更好的解决方案吗?

emacs elisp cedet

11
推荐指数
1
解决办法
3198
查看次数

标签 统计

cedet ×1

elisp ×1

emacs ×1