Sublime Text 3 中的 Git gui 指责

Sublime Text 3 中的 Git gui 指责

我尝试了很多方法,但都没有用。

预期结果:我输入一个快捷键,git gui blame 在指针所在的行打开当前文件。

我在 Windows 7 上工作,使用 Sublime 3 Build 3083

首次尝试:自定义构建系统

{ "cmd": [ "C:\\Program Files (x86)\\Git\\cmd\\git.exe" "gui" "blame" "$file"] }

在名为 git_gui_blame.sublime-build 的文件中

然后工具 -> 构建系统 -> git_gui_blame。但是 Ctrl+B 只会显示“无构建系统”显示错误的图像

第二次尝试:自定义按键绑定

偏好设置 -> 按键绑定 - 用户

{ "keys": ["ctrl+B"],
  "command": "exec", 
  "args": { 
            "cmd": [
                "C:\\Program Files (x86)\\Git\\cmd\\git.exe",
                "gui",
                "blame",
                ?//What to put here ?
                ]
          } 
},

我尝试用“$file”替换“?”,灵感来自构建系统的 $file,但出现了这个错误 错误的文件路径

可以翻译为“文件路径不正确:/path/to/$file:文件或曲目不存在

第三次尝试:自定义插件

import sublime, sublime_plugin, os

class SublimeBlameCommand(sublime_plugin.WindowCommand):
def run(self, **kwargs):
    folder_name, file_name = os.path.split(self.window.active_view().file_name())
    print(folder_name + " _______ " + file_name)
    try:
        self.window.active_view().run_command('exec', {'cmd': ['C:\\Program Files (x86)\\Git\\cmd\\git.exe', 'gui', 'blame', file_name], 'working_dir':folder_name, 'shell':False} )
    except TypeError:
        print("Error in SublimeBlame Plugin")

然后,在“首选项”->“键绑定”-“用户”中

  { "keys": ["ctrl+k"], 
  "command": "sublime_blame"
  },

但是 Ctrl+k 根本没有任何作用。

所以我被困在这里了。我能做些什么不同的事情?我更倾向于尝试第二次,因为我觉得我得到了最接近预期的结果,但我找不到用什么来替换“?”。

答案1

已与以下设备配合使用:

import sublime, sublime_plugin, subprocess, os, ntpath

class GitguiblameCommand(sublime_plugin.TextCommand):    def run(self,
edit):
    if os.name == "nt":
        startupinfo = subprocess.STARTUPINFO()
        startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW

    filepath = self.view.file_name()
    dirpath = os.path.dirname(filepath)
    filename = ntpath.basename(filepath)
    process = subprocess.Popen(('C:\Program Files (x86)\Git\cmd\git.cmd', 'gui', 'blame', filename),cwd=os.path.dirname(filepath),
    stdin=subprocess.PIPE, stdout=subprocess.PIPE, startupinfo=startupinfo)

git-gui 似乎将文件名附加到当前工作目录。在其他操作系统上使用 os.path.split 或 os.path.basename。

相关内容