Git gui culpa do Sublime Text 3

1

Eu tentei muitas coisas, mas nenhuma delas funcionou.

Resultado esperado: Eu digito uma tecla de atalho e git gui blame abre o arquivo atual na linha em que o ponteiro está.

Eu trabalho no Windows 7, com o Sublime 3 Build 3083

Primeira tentativa: sistema de compilação personalizado

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

Em um arquivo chamado git_gui_blame.sublime-build

Em seguida, Ferramentas - > Sistema de compilação - > git_gui_blame. Mas, em seguida, Ctrl + B apenas faz "nenhum sistema de compilação" aparecer

Segundatentativa:ligaçãodechavepersonalizada

Preferência->Ligaçõesdeteclas-Usuário

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

Eu tentei substituir "?" com "$ file", inspirado no arquivo $ do sistema de compilação, mas recebi este erro

quepodesertraduzidopor"Caminho de arquivo incorreto: / caminho / para / $ arquivo: arquivo ou repertório inexistente

Terceira tentativa: Plugin personalizado

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

e depois disso, em Preferências - > Ligações de teclas - Usuário

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

Mas Ctrl + k não faz absolutamente nada.

Então estou preso aqui. O que posso fazer de diferente? Minha tentativa preferida é a segunda porque acho que cheguei mais perto do resultado esperado, mas não consegui encontrar o que substituir o "?" com.

    
por Kalissar 17.06.2015 / 16:08

1 resposta

2

Trabalhou com:

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)

Parece que o git-gui acrescenta o nome do arquivo ao diretório currentworking. Use os.path.split ou os.path.basename em outros sistemas operacionais.

    
por 19.06.2015 / 16:31