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

Vit*_*huk 2 python emacs elisp

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

我尝试

(when (string-match "project_name" buffer-file-name)
     do sth)
Run Code Online (Sandbox Code Playgroud)

但这不是工作

另外,如果您编写了如何为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))))
Run Code Online (Sandbox Code Playgroud)

tom*_*tom 5

简单的答案

 (when (string-prefix-p "/home/user/project-path" (buffer-file-name))
   ;;do sth
   )
Run Code Online (Sandbox Code Playgroud)

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

(expand-file-name (buffer-file-name))
Run Code Online (Sandbox Code Playgroud)

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

(or (buffer-file-name) "")
Run Code Online (Sandbox Code Playgroud)