1

Я перепробовал много вещей, но ни одна из них не сработала.

Ожидаемый результат: я набираю ярлык, и git gui blame открывает текущий файл в строке, на которой находится указатель.

Я работаю на Windows 7, с Sublime 3 Build 3083

Первая попытка: Custom Build System

{ "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 ?
                ]
          } 
},

Я пытался заменить "?msgstr "с" $ file ", вдохновлено $ file системы сборки, но я получил эту ошибку incorrect_file_path

который может быть переведен как "Неверный путь к файлу: / путь / к / $ файл: несуществующий файл или реперториум

Третья попытка: пользовательский плагин

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 ответ1

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 в других ОС.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .