【问题标题】:Emacs: check if filepath contains directory nameEmacs:检查文件路径是否包含目录名称
【发布时间】:2016-03-18 14:56:28
【问题描述】:

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

【问题讨论】:

  • 而且缩进猜测不起作用?顺便说一句,标签真的不推荐

标签: python emacs elisp


【解决方案1】:

简单的答案

 (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 result from buffer-file-name by

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

【讨论】:

    【解决方案2】:

    您只需要做以下检查:

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

    buffer-file-name 是一个函数,string-match-p 针对字符串匹配返回真或假

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-22
      • 1970-01-01
      • 2014-12-23
      • 2015-02-01
      • 2011-05-04
      • 1970-01-01
      • 2016-09-30
      • 2014-05-10
      相关资源
      最近更新 更多