首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在emacs中grepping之前如何切换到特定的目录?

在emacs中grepping之前如何切换到特定的目录?
EN

Stack Overflow用户
提问于 2017-06-06 16:53:15
回答 1查看 250关注 0票数 2

我对我的所有项目都很感兴趣:

代码语言:javascript
复制
(defun grep-all-projects(start end)
  (interactive "r")
  (if (and transient-mark-mode mark-active)
      (setq my-word (buffer-substring-no-properties start end))
    (setq my-word (thing-at-point 'word))
    )
  (let ((default-directory (getenv "REPOS_DIR")))
    (message "===> Grepping '%s' in %s" my-word (getenv "REPOS_DIR"))
    (grep (format "grep --exclude-dir target -r -ne '%s' ." my-word)))
  )

但是不知何故,grep是在根目录(/)上执行的,即使grep buffer正确地说:

代码语言:javascript
复制
-*- mode: grep; default-directory: "/repos/" -*-
Grep started at Tue Jun  6 10:38:08

怎么一回事?emacs grep是否不尊重default-directory

编辑

此解决方法在不使用default-directory的情况下起作用:

代码语言:javascript
复制
(defun grep-all-projects(start end)
  (interactive "r")
  (if (and transient-mark-mode mark-active)
      (setq my-word (buffer-substring-no-properties start end))
    (setq my-word (thing-at-point 'word))
    )
  (message "===> Grepping '%s' in %s" my-word (getenv "REPOS_DIR"))
  (grep (format "grep --exclude-dir target -r -ne '%s' %s" my-word (getenv "REPOS_DIR")))
  )

我仍然有兴趣知道为什么第一个实现不能按预期工作

EN

回答 1

Stack Overflow用户

发布于 2017-06-06 23:53:35

M-x cd将切换到您输入的目录。它更改缓冲区局部变量default-directory的值。C-h f cd告诉您:

Lisp cd是一个用files.el编写的交互式编译

函数。

(cd DIR)

使DIR成为当前缓冲区的默认目录。

如果您环境中包含CDPATH变量,请在解析相对目录名时尝试每个目录列表(由出现的path-separator分隔)。在GNU和类GNU系统中,路径分隔符是冒号。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44385534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档