来自Sublime Text 3的Git gui责备


1

我尝试了很多东西,但没有一个能奏效。

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

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

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

{ "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”,灵感来自构建系统的$文件,但是我收到了这个错误 incorrect_file_path

可以通过“不正确的文件路径:/ path / to / $ file:Inexistant file或repertory”翻译

第三次尝试:自定义插件

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")

然后,在Preferences - > Key Bindings - User中

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

但Ctrl + k绝对没有任何作用。

所以我被困在这里。我能做些什么不同的事情?我首选的尝试是第二次,因为我觉得我最接近预期的结果,但我找不到要替换“?”的内容。用。

Answers:


2

得到它:

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。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.