Page 1 of 1
AkelPad в многооконном режиме не работает как редактор в Git
Posted: Thu Dec 15, 2016 5:39 pm
by Mirocit
Здравствуйте.
Если установить AkelPad и настроить Git for Windows:
Code: Select all
$ git config --global core.editor "'C:\Program Files\Git\AkelPad.bat'"
Содержимое файла C:\Program Files\Git\AkelPad.bat:
Code: Select all
C:\Windows\SysWOW64\notepad.exe /x %1
То все прекрасно работает. После запуска коммита из git bash открывается AkelPad с содержимым файла .git\COMMIT_EDITMSG, его можно отредактировать, сохранить и закрыть, после чего все то, что было сохранено в .git\COMMIT_EDITMSG становится описанием коммита.
Проблема возникает, если в AkelPad выбрать многооконный режим: Настройки -> Оконный режим -> Многооконный или Псевдооконный. После этого файл .git\COMMIT_EDITMSG открывается в AkelPad, но вот в консоли git bash отображается ошибка: "Aborting commit due to empty commit message.", т.е. git bash перестает ожидать закрытия окна AkelPad с текстом.
Команда на открытие AkelPad:
C:\Windows\SysWOW64\notepad.exe /x PATHTOREPO/.git/COMMIT_EDITMSG
Подскажите, как исправить ситуацию, так как привык работать в многооконном режиме?
Posted: Thu Dec 15, 2016 8:09 pm
by FeyFre
Добавить параметры вызова /NewIstance /MainClass("GitAkelPad4_%d")
(если в батнике, понадобится два %%)
В чем суть: гит запускает редактор, и по его завершении делает своё дело. АР в мультиоконном режиме в включенной опции
"не открывать программу дважды" находит запущенный АР, говорит ему что открыть, и сам завершается, вот гит и лажает. Этими опциями заставили не искать старых экземпляров а открыть новый сразу.
Posted: Fri Dec 16, 2016 12:16 am
by Mirocit
Спасибо за попытку помочь, изменил строку в батнике, как вы посоветовали:
Code: Select all
C:\Windows\SysWOW64\notepad.exe /NewIstance /MainClass("GitAkelPad4_%%d") /x %1
Но ничего не изменилось. Если AkelPad не запущен, то что с вашими опциями, что без - все ок, после git commit запускается редактор с открытым на редактирование файлом описания коммита, и редактор ждет закрытия AkelPad - все ок. Если AkelPad запущен, и в нем открыт или не открыт, без разницы, файл - открывается на редактирование файл COMMIT_EDITMSG в новой вкладке, но git не ждет редактирования, а сразу выдает ошибку, что "empty commit message"...
Posted: Fri Dec 16, 2016 4:42 pm
by FeyFre
Не буду советовать поставить черепаху
Получилось у меня втолковать гиту как запускать, а то он матерился на синтаксические ошибки. Вот что получилось
Code: Select all
git config core.editor D:/akelpad/gitapedit.cmd
Содержимое:
Code: Select all
@d:\AkelPad\AkelPad.exe /NewInstance /MainClass("MyAkelPad4%%d") /x "%*"
Проблема в том, что я не использую АР как замена блокнота. Это может быть проблемой, но есть вторая: вы с ходу запускаете 32битный АР. Почему? Вероятно потому что сам гит 32битный. Я же запускаю 64битный. Проблем не имею. Очевидно в одном из двоих названых отличий и проблема.
Я подозреваю что проблема в первом.
Posted: Fri Dec 16, 2016 6:20 pm
by Mirocit
С чего вы взяли, что я использую 32битный АР? У меня установлены новейшие версии, на сегодняшний момент: AkelPad 4.9.8 (x64) и Git for Windows Git-2.11.0-64-bit
Огромное Вам спасибо за cmd!!! Попробовал этот вариант, и все заработало как нужно: после коммита открывается другая программа AP (не новое окно в уже запущенном AkelPad`e, не смотря на многооконный режим, а новое окно с AkelPad`ом) с уже открытым COMMIT_EDITMSG, после редактирования и закрытия AkelPad, коммит записывается.
Posted: Fri Dec 16, 2016 6:53 pm
by FeyFre
С чего вы взяли, что я использую 32битный АР?
Потому-что глодиолус
В директории C:\Windows\SysWOW64 лежит 32битная копия системных компонентов.
Если 32битное приложение(в64битной системе) пытается посмотреть на c:\windows\system32, система на самом деле подставляет ему содержимое директорию C:\windows\syswow64
Если 32битному приложению(в64битной системе) таки нужно посмотреть на настоящий c:\windows\system32, то ему нужно искать его в c:\windows\sysnative.
Если в C:\windows\syswow64 попадет таки 64битные компоненты, то рискуете получить большой фингал

Ну вы поняли, рискуете получить неработоспособность.
Гуглить "MSDN File System Redirector"
Всё-же перепроверьте битность того notepad.exe на который вы смотрели. Ну или не проверяйте пока оно работает

Posted: Fri Dec 16, 2016 9:44 pm
by Mirocit
Я перед тем, как Вам написать, как раз и перепроверил: Справка -> О программе -> AkelPad 4.9.8 (x64). Возможно, notepad.exe как раз 32битный, а AP, как я писал ранее, у меня встроен вместо штатного блокнота. Но не суть важно - главное, что все ЗАРАБОТАЛО, благодаря Вам! И дело не в батнике, или цмдешнике, а в параметре MyAkelPad4 вместо GitAkelPad4_

Posted: Fri Dec 16, 2016 10:09 pm
by FeyFre
Mirocit
да, %%d суть решения)
Пояснение есть в доках АР AkelFiles\docs\AkelHelp-End|Rus.html
Кстати, а плагин сессий настроен у вас? Вангую проблемы если да
Instructor
Если товарищ начнет коммитить с разных рабочих копий, и у него настроен плагин сессий, то ему придет привет: у него много табов будет, ибо закрывает по Esc и плагин помнит. После коммита гит затирает файл который редактировался, и ему будет матерится что файлов(с других рабочих копий) нету и предлагать создавать будет. Можно как с командной строки запретить сессии? Да и этот механизм редактирования используется для разрешения конфликтов тоже.
Posted: Wed Dec 28, 2016 12:12 pm
by Instructor
FeyFre wrote:Можно как с командной строки запретить сессии?
Отключить автозагрузку Sessions плагина и запускать, когда нужен, с помощью:
Code: Select all
AkelPad.exe /Call("Sessions::Main", 10) /Call("Sessions::Main", 1, "OnExit")
Когда не нужен: