Вина гіт-гуї з піднесеного тексту 3


1

Я спробував багато речей, але жодна з них не спрацювала.

Очікуваний результат: я набираю ярлик, і 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", натхненним $ файлом системи збирання, але я отримав цю помилку неправильний_файл_путь

що може бути перекладено "Неправильний шлях до файлу: / 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 абсолютно нічого не робить.

Тому я тут застряг. Що я можу зробити інакше? Моя краща спроба - друга, тому що я вважаю, що я наблизився до очікуваного результату, але не зміг знайти те, що замінити "?" з.

Відповіді:


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 в інших ОС.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.