模式行中的Subversion分支

 放ch养奶牛 发布于 2022-12-28 10:30

如果一个文件位于由Subversion repo支持的目录中,该目录以其中任何一个trunkbranches/X如何在模式行中显示trunkX显示为与Git支持的文件中显示的相似SVN-trunkSVN-X类似Git-master.

1 个回答
  • 确定SVN状态

    我不知道有任何内置的方法,但你可以为此目的编写自己的代码.

    基于vc-svn-repository-name并且vc-backend您可以编写一个函数来返回SVN的自定义模式文本,并回退到所有其他VC系统的默认值:

    (defun lunaryorn-vc-mode-line ()
      (let ((backend (vc-backend (buffer-file-name))))
        (if (eq backend 'SVN)
            (let ((url (vc-svn-repository-hostname (buffer-file-name))))
              (cond
               ((string-match-p "/trunk/" url) "SVN-trunk")
               ((string-match "/branches/\\([^/]+\\)/" url)
                (concat "SVN-" (match-string 1 url)))
               (t vc-mode)))
          ;; Use default mode text for other backends
          vc-mode)))
    

    如果当前文件在SVN下,我们会根据您的约定检查其repo URL并编译相应的模式文本.不要被名称混淆vc-svn-repository-hostname,该函数实际上返回给定文件的完整repo URL.

    对于所有其他后端,或者如果URL与任何模式都不匹配,我们将回退到默认的VC状态文本,如中所示vc-mode.

    添加到模式行

    然后,您可以在模式行中使用此函数,方法是将相应的模式行构造添加到mode-line-format:

    (setq-default mode-line-format
                  '(…
                    (vc-mode (" " (:eval (lunaryorn-vc-mode-line))))
                    …))
    

    由于mode-line-format是缓冲局部的,我们用它setq-default来改变它的全局值.我们的新模式行构造检查是否vc-mode处于活动状态,即文件是否受版本控制,并在此情况下评估我们的函数,以获取我们的自定义状态文本.有关模式行构造的更多信息,请参见模式行数据.

    省略号代表模式行的其他内容,您也可以根据自己的喜好进行自定义.不过,我建议您只需复制默认值mode-line-format,并替换(vc-mode vc-mode)为我们的新构造.这将简单地用我们的自定义状态文本替换旧的VC信息,并像以前一样保留其他所有内容.

    2022-12-28 10:33 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有