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

时间:2016-03-18 14:56:29

标签: python emacs elisp

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

我试试

(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))))

2 个答案:

答案 0 :(得分:4)

简单回答

 (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) "")

答案 1 :(得分:1)

所有你需要做的检查是:

 <tr>
            <td><input type="text" size="6" id="position"></td>
            <td><input type="text" size="6" id="order"></td>
            <td><input type="text" size="6" id="unit"></td>
            <td><span onclick="addRow(this);">Add</span><span onclick="deleteRow(this);">Remove</span></td>
        </tr>

(when (string-match-p "project_name" (buffer-file-name)) (message "cat")) 是一个函数,buffer-file-name对字符串匹配

返回true或false