Emacs:检查文件路径是否包含目录名称

Emacs: check if filepath contains directory name

我尝试在 emacs 中编写代码。我有许多不同的 python 项目,所有项目都有 space 缩进,只有一个除外。我想检查打开的文件路径是否包含此项目的目录名称并设置选项卡而不是 spaces,仅适用于此目录中的文件。

我试试

(when (string-match "project_name" buffer-file-name)
     do sth)

但是没用

此外,如果您写下如何为 python 和 javascript 文件设置制表符,将会有很大帮助)

UPD

我的工作代码

(add-hook 'python-mode-hook
  (lambda()
   (setq tab-width 4)
   (setq python-indent 4)
   (if (string-match-p "project_name" (or (buffer-file-name) ""))
       (setq indent-tabs-mode t)
     (setq indent-tabs-mode nil))))

您需要为支票做的是:

(when (string-match-p "project_name" (buffer-file-name))
      (message "cat"))

buffer-file-name 是一个函数并且 string-match-p returns 关于字符串匹配

是真还是假

简单回答

 (when (string-prefix-p "/home/user/project-path" (buffer-file-name))
   ;;do sth
   )

您可能还需要使用 expand-file-name 来获取匹配 buffer-file-name 的完整路径,以便您可以处理 "~/project-paht".

(expand-file-name (buffer-file-name))

您可能还需要注意 nil 来自 buffer-file-name

结果
(or (buffer-file-name) "")