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) "")
我尝试在 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) "")