Есть такой замечательный редактор - Sublime Text 2. Даже несмотря на мою любовь к Notepad++ могу смело заявить: "Sublime лучше!". Кто не верит - проверяйте сами.
Но речь не о самом редакторе. Я написал для него небольшой и никому не нужный плагин. Написал сам, используя все свои познания в Python'е и написании плагинов для Sublime. Плагин нужен для одной простой вещи: узнать кто написал строчку под курсором. Узнает он это из системы контроля версий Git. В целом даже работает.
Так как выкидывать его жалко (я ж время потратил) а развивать его не планирую (он же никому не нужен!), то решил код опубликовать тут. Ну и сам файлик приложил.
По вопросам копирайта: данным постом подтверждаю, что не претендую и в дальнейшем упоминаться автором приведенного ниже кода, не потребую никаких отчислений и прочей фигни (но если вы сможете заработать на этом, я вас, кем бы вы ни были, скорее всего прокляну. Шутка).
Вот код (подсвечено с помощью этого):
Copy Source | Copy HTML
import sublime, sublime_plugin
- import os, re
- class GitWho(sublime_plugin.TextCommand):
- def run(self, edit):
- v = self.view
- file_name = v.file_name()
- line, col = v.rowcol(v.sel()[ 0].begin())
- line += 1
- cwd = os.getcwd() # save current work directory...
- os.chdir(os.path.dirname(file_name)) # ... to use git ...
- output = os.popen("git blame -L " + str(line) + "," + str(line) + " " + file_name).read()
- os.chdir(cwd) # ... and reset it back
- tmp = re.search('\((.*) (\d{4}-\d{2}-\d{2}) (\d{2}:\d{2}:\d{2} [+-]\d{4})', output)
- if tmp:
- author, date, time = tmp.group(1), tmp.group(2), tmp.group(3)
- sublime.status_message('Changed by ' + author + ' on ' + date + ' at ' + time)
- else:
- sublime.status_message('Cannot blame this file')
Возможные проблемы в плагине:
- неправильный номер строки: в редакторе они нумеруются с 1, а в Git'е? (это надо проверить, а мне уже не хочется)
- поддержка всех широко распространненых систем контроля версий
- определения авторства не только строки под курсором, но и выделенного блока
Чтобы попробовать плагин нужно прочитать вот эту статью, чтобы научиться :)