emacs 流浪模式不尊重远程目录中的 .clang 格式

标签 emacs clang-format tramp

我有一个带有 .clang-format 的 git 仓库和一个 simple.c源代码。在本地模式下,即编辑关闭本地磁盘,它尊重样式文件。但是,如果我使用 Tramp 模式编辑相同的 repo,则 clang-format将使用一些默认样式文件格式化源代码(我不知道它是从哪里提取的),并且不会尊重同一远程目录中存在的样式文件。

Q1:我该如何解决这个问题?

Q2:(也许更简单)tramp-mode中的clang-format默认在哪里拾取样式文件?

最佳答案

以下是我解决此问题的方法:

  • 我复制了 .clang-format文件从远程位置到我的主目录。
  • 我编写了以下包装函数来替换 --assume-filename带有指向主目录中同名文件的路径的参数:
  •   (defun my-clang-format-region ()
        (interactive)
        (let ((start (if (use-region-p) (region-beginning) (point)))
              (end (if (use-region-p) (region-end) (point)))
              (assumed-filename (if (file-remote-p buffer-file-name)
                                    (concat (getenv "HOME") "/" (file-name-nondirectory buffer-file-name))
                                   buffer-file-name)))
          (clang-format-region start end clang-format-style assumed-filename)))
      (global-set-key '[(control meta tab)] 'my-clang-format-region)
    

    看来--assume-filename可以指定一个不存在的文件的路径。全部 clang-format似乎关心的是文件的扩展名和目录路径;它使用目录路径作为查找 .clang-format 的位置。文件。如果在那里找不到该文件,它会在从该位置开始的每个祖先目录中查找。

    这对 clang-format 的 9.0 和 10.0 版对我有用可执行文件,和 clang-format.el来自 melpa 的版本 20190824.2216。

    关于emacs 流浪模式不尊重远程目录中的 .clang 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48678302/

    相关文章:

    windows - 如何使用 Autohotkey 将大写锁定键重新映射到 EMACS super?

    c++ - 用 clang 格式放置 const

    emacs - 如何使用 Emacs trapmp ssh 到远程主机并以另一个用户的身份临时编辑文件?

    c++ - 如何为钩子(Hook)创建蹦床功能

    emacs - 输入缩进上一行?

    python - 在 Emacs 中编辑 Python

    emacs - 返回 Emacs 中的先前模式

    在 if() while() for() 之后的语句周围添加 {}

    clang - 如何使用 macports 中的 clang-format?

    Emacs:文件名的 Tab 完成附加一个额外的 i:\cygwin