如何根据文件位置运行钩子

2024-05-01

我参与了使用选项卡的 python 项目,但是我没有在我编写的所有其他代码中使用它们,在该特定项目中使用它们至关重要。项目位于特定目录下的一个目录中。 IE:

\main_folder
    \project1
    \project2
    \project3
...etc

我在打开文件时有几个函数/挂钩,并保存取消制表和制表我工作的整个缓冲区。

 ;; My Functions
(defun untabify-buffer ()
            "Untabify current buffer"
        (interactive)
        (untabify (point-min) (point-max)))

(defun tabify-buffer ()
        "Tabify current buffer"
        (interactive)
        (tabify (point-min) (point-max)))

;; HOOKS
; untabify buffer on open
(add-hook 'find-file-hook 'untabify-buffer)
; tabify on save
(add-hook 'before-save-hook 'tabify-buffer)

如果我将其放入 .emacs 文件中,它将在我打开的每个 .py 文件上运行,这不是我想要的。我想要的是让这些钩子仅在一个特定文件夹及其各自的子文件夹中使用。尝试过 .dir_locals 但它仅适用于属性而不是挂钩。我无法在特定模式(即 python 模式)下使用钩子,因为几乎所有项目都是用 python 编写的。老实说,我尝试编写 elisp 条件保存但失败了。


一个非常简单的解决方案是仅添加一个可用于禁用挂钩的配置变量。例如:

(defvar tweak-tabs t)
(add-hook 'find-file-hook
          (lambda () (when tweak-tabs (untabify (point-min) (point-max)))))
(add-hook 'before-save-hook
          (lambda () (when tweak-tabs (tabify (point-min) (point-max)))))

现在您可以添加一个.dir-locals.el相关目录下的文件,设置tweak-tabs to nil,在那里禁用此功能。

(但另一个问题是,这是处理选项卡的一种非常糟糕的方式。例如,保存文件后do请参阅其中的选项卡。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何根据文件位置运行钩子 的相关文章

  • 将 CSV 导入组织模式属性

    我想将 CSV 导入组织模式 其他人已经询问过如何将 CSV 导入组织模式表 这不是我想做的 我需要将 CSV 导入到组织模式属性 例如 像这样的 CSV Name Tel Mobile Fax John 11111 22222 33333
  • 同时维护多个emacs配置

    我想在同一台电脑上的同一用户帐户上同时维护多个 emacs 配置 例如 emacs prelude emacs starter kit 和我自己的自定义 emacs 配置 为此 我设置了 emacs1 d emacs2 d emacs3 d
  • ESS 在 Windows 上找不到 Rterm.exe

    我将 R 安装在名为 X alphaAndOmega R R 的目录中 所以Rterm exe 32位版本 位于 X alphaAndOmega R R bin i386 我知道它不是 标准 R 目录 并且 标准 R 目录 例如 R 3 0
  • Emacs:如何拉动最后拉动的文本,无论后续杀戮如何?

    我经常发现自己在完成一些杀戮后反复猛拉一些东西 它变成了一个像这样的过程 C y C y M y C y M y M y C y M y M y M y 每次我删除一些文本时 它都会将第一个删除推回到删除环中 以便我需要循环遍历所有删除以返
  • 符号的函数定义为 void:declare-function

    emacs 新手 OSX 上的 GNU Emacs 22 1 1 按照说明安装了邪恶 我得到 Symbol s function definition is void declare function emacs debug init gi
  • 如果文件有自动保存数据,emacs-daemon 启动会冻结

    我设置了桌面 el这样 emacs 在启动时会自动重新打开上次我杀死 emacs 时保持打开状态的所有文件 现在 当我将 emacs 作为守护进程启动并且重新打开的文件之一具有自动保存数据时 守护进程会显示通常的自动保存数据消息 file
  • windows下无法用emacs + sbcl启动slime

    我想配置我的 emacs 以使用 SLIME 和 SBCL emacs 文件如下所示 add to list load path D app slime setq inferior lisp program sbcl require sli
  • 如何根据文件位置运行钩子

    我参与了使用选项卡的 python 项目 但是我没有在我编写的所有其他代码中使用它们 在该特定项目中使用它们至关重要 项目位于特定目录下的一个目录中 IE main folder project1 project2 project3 etc
  • 如何从 Emacs 中运行 Cygwin Bash Shell?

    我在 Windows 上运行 GNU Emacs 因此输入 M x shell 启动 Windows 命令行 DOS shell 但是 我希望能够从 Emacs 中运行 Cygwin Bash Shell 或任何其他非 Windows sh
  • 如何在 ubuntu 上的 emacs 中运行 shell 命令,同时避免 bash 作业控制错误?

    我在 ubuntu 中安装了 emacs 使用 sudo apt get install emacs 我遇到的问题是 当我尝试从 emacs 中运行 shell 命令时 例如M ls 输出之前是这样的 bash cannot set ter
  • 如何在组织模式议程树视图中显示条目的完整上下文

    在组织模式的每日 每周议程视图中 有没有办法显示条目的完整上下文 我对代码的解读是 它找到时间戳上方的第一个标题并显示它 然而 就我而言 该标题通常有 3 4 层深度 如果没有上面的项目符号 就没有意义 似乎也没有办法可以轻松改变这一点 过
  • Emacs:结合 isearch-forward 和 center-top-bottom

    预先非常感谢您的帮助 在 Emacs 中 我喜欢使用 iseach forward C s 但如果突出显示的字体单词位于屏幕中间而不是最底部的中心 我会更喜欢它 我发现自己不断地这样做 C s foo C s C s C s 哦 这就是我一
  • 如何在 elisp 中将列表作为宏的参数?

    我想实现这样的目标 setq my global keybindings C x C d dired C x C b ibuffer C x b ivy switch buffer apply bind keys my global key
  • emacs 的最佳 java 工具 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Pymacs 助手在 30 秒后未启动

    我见过其他关于此的问题 但没有一个得到真正的回答 而且没有一个是我的问题 我有一个新系统 emacs 23 1 Centos 6 2 我认为 我下载了最新的 pymacs 并安装了它 但是 我得到 error Pymacs helper d
  • 让 Emacs ansiterm 和 Zsh 更好地发挥作用

    我一直在尝试在 emacs 会话中使用 Zsh 而无需 emacs 重新映射所有 Zsh 键 我发现 ansi term 对此非常有效 但是我仍然遇到一些问题 我输出了很多垃圾字符 我可以用以下方法修复它 Setup proper term
  • “swank-clojure”到底是做什么的,我们有“swank-SOMETHING_ELSE”吗?

    我的肤浅理解是 swank clojure 使 M x slime connect 成为可能 我的意思是 它提供了与 clojure 服务器的连接 例如 lein swank 我的理解正确吗 如果不是 那swank的目的是什么 那么 是否有
  • 如何让 clangd 转向 c++20

    当没有其他信息时 如何让 clangd 回退到 c 20 例如 在第一次构建之前 cmake 可以生成一个 这是在带有最新 LLVM 的 Arch Linux 上 这是通过 Emacs LSP 运行的 但这应该没有什么区别 你可以加 Com
  • 从一个文件重新归档到另一文件

    我正在尝试基于 emacs 实现 GTDhttp members optusnet com au charles57 GTD gtd workflow html http members optusnet com au charles57
  • 在 Emacs 中,如何根据缓冲区名称自动启用次要模式?

    我有一个 Emacs 扩展 它创建一个名为 erl output 该缓冲区仅由以下内容创建fundamental mode默认情况下 有什么办法可以自动启用compilation minor mode在那个缓冲区上 要自动更改主要模式 您可

随机推荐

  • 条件与 eval {php} [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 然后我得到
  • Android:创建自定义形状进度条的最佳方法

    我想创建一个自定义形状的进度条 它会根据其进度改变颜色 但这几乎是一个不同的问题 那么 创建如下图所示的自定义形状进度条的最佳方法是什么 抱歉 MS Paint 绘图技巧不佳 为了拥有所有可能性 您应该创建一个从进度条派生的自定义类并完全重
  • MinGW支持MFC吗?

    我已经使用 MinGW 开发了 WinAPI 应用程序 没有出现任何问题 现在 我可以用 MFC 做同样的事情吗 我只是在这里猜测 但我认为您需要购买 Visual Studio 的副本才能获得使用 MFC 的许可证 MFC 也不因其对 C
  • 无限循环消耗 100% CPU

    我陷入了需要生成某个 Hz 的定义频率的情况 我尝试过多媒体计时器和互联网上提供的所有其他东西 但到目前为止 带有一些 if else 条件的无限循环给了我最好的结果 但这种方法的问题是它消耗了几乎所有的CPU 没有空间让其他应用程序正常工
  • 将 GDCM 图像转换为 Java BufferedImage

    我正在使用 GDCM 读取 DICOM 图像 有没有一种简单的方法可以使用 GDCM 读取 dicom 文件 然后将其转换为 Java BufferedImage 到目前为止我有以下内容 String filename C test dcm
  • 在本地运行 IPython Notebook 查看器

    我试图在我的工作中引入 IPython 笔记本 我想要做到这一点的方法之一是与同事分享我自己的笔记本工作 这样他们就能够看到创建复杂的报告并共享它们是多么容易 我显然无法使用笔记本查看器 因为我们的大部分工作都是保密的 我正在尝试在本地设置
  • DateField 未呈现为 type="date"

    class Form Form plan start DateField Plan Start validators Required 这段代码将渲染这个 html
  • ALL 的 SQL 参数

    我想知道SQL中是否有一个参数适用于所有 不是 例如 我现在正在编写一个搜索表 如果用户不在文本框中输入某些内容 则意味着忽略该特定参数并显示该字段的所有内容 我知道您可以为每种情况创建单独的 OLEDB 或 SQL 命令 并且它会起作用
  • 如何找出 gem 捆绑包将 gem 锁定在特定版本的原因?

    我正在尝试指定一个版本节俭宝石 http rubygems org gems thrift在我的宝石文件中 gem thrift gt 0 6 0 当我尝试跑步时bundle install 我收到此错误 You have requeste
  • UITextView分页启用文本截断

    我正在使用 UITextView 并启用分页 在 IB 中并以编程方式打开和关闭它 有很多文本 当启用分页滚动时 有时当前可查看文本的第一行和 或最后一行会在视图中的一半处结束 而在框架的底部或顶部则有一半在视图之外 因此您只能看到顶部或顶
  • 如何为已知行数创建具有无限列的 Angular Material Design 表?

    我创建了一个 HTML 表 它将生成无限的columns基于 数量rows在输入数据中 我尝试过使用这个帖子 https stackoverflow com questions 49868019 angular material table
  • 开发 Delphi Windows 7 应用程序的规则 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 在哪里可以找到开发适用于 Windows 7 的 Delphi 应用程序时应遵循的最佳规则集 Marco 最近发表了 2 篇关于此主题的帖
  • 为什么 Asp.Net Core 2.1 WebApi 返回 500.19 错误?

    我有一个小型 webapi 服务 它可以在 Visual Studio 下工作 但不能在 IIS 下工作 我做了下一步 新应用程序已添加到 IIS 控制台中的默认网站 应用程序通过文件系统从 VS 发布到应用程序文件夹中 选择了依赖框架和可
  • 用于 MySQL 全文搜索的转义字符串

    我正在使用 Laravel 4 并设置了以下查询 if Input get keyword keyword Input get keyword search DB connection gt getPdo gt quote keyword
  • 在 Ruby 中,有没有办法重载初始化构造函数?

    在 Java 中你可以重载构造函数 public Person String name this name name public Person String firstName String lastName this firstName
  • 如何在 Gradle 构建中使用 S3 支持的 Maven 存储库的默认 AWS 凭证链?

    根据Gradle 文档 https docs gradle org 2 4 userguide dependency management html 示例 50 27 我们可以将 S3 支持的 Maven 存储库与 Gradle 2 4 一
  • 收到不明确符号的错误,需要帮助来删除它

    我收到此错误 无法在 Visual Studio 2010 中删除 我正在使用一个第三方库 该库使用自己的 字符串 定义 另外 Visual Studio 的 xstring 文件位于其安装的文件夹中 现在 当我尝试编译代码时 出现以下错误
  • 如何阻止诱变剂自动更新 ID3 版本?

    当我尝试在 MP3 中嵌入专辑封面时 诱变剂将 ID3 标签更新为版本 2 4 我不希望这样做 因为在 ID3v2 4 中 我的手机 运行 Windows Phone 8 和我的计算机无法识别标签 显然 只需更改mutagen id3 ve
  • 在 __device/global__ CUDA 内核中动态分配内存

    根据CUDA 编程指南 http developer download nvidia com compute cuda 3 2 prod toolkit docs CUDA C Programming Guide pdf 第 122 页 可
  • 如何根据文件位置运行钩子

    我参与了使用选项卡的 python 项目 但是我没有在我编写的所有其他代码中使用它们 在该特定项目中使用它们至关重要 项目位于特定目录下的一个目录中 IE main folder project1 project2 project3 etc