December 3rd, 2017

Book

Гитофобия 80 лвл на винде

- устанавливаем tortoisehg
- включаем там hggit
- пишем враппер на .cmd (важно!) запускающий perl (можно взять %вашлюбимыйскрипт% или даже адвансед cmd выкрутиться - всего-то надо сравнивать аргументы с константными строками) запускающий hg.exe
- логируем на перле pwd и коммандлайн
- пускаем stack.exe, он о чудо запускает git.cmd если он в PATH
- споласкиваем, повторяем пока не реализуем все частные случаи (у меня 2 - clone и reset)
- откидываемся на спинку кресла (hggit клонирует дольше)
- PROFIT!!!

Профит заключается в том, что
- поебались
- сэкономили 180 метров (tortoisehg содержит 20 метров питона и 50 метров дллок против гитовских 250+)
- обошлись без б-гомерзкого шелла (tortoisehg+dulwich+hggit не содержат шелла)
- обошлись без б-гомерзкого msys (tortoisehg+dulwich+hggit не содержат и msys-2.0.dll)
- нашли где hggit держит мап хешей коммитов - в .hg/git-mapfile
Book

Stack + Neovim + HIE на винде

Я тут взялся починить баг в HIE, ну и у репортера был nvim, пришлось расчехлять виртуалку и туда гадить.

Первым делом я плюнул на идею ставить какие-то хаскельные инсталляторы. Там чёрт ногу сломит нынче. И на идею чем-то срать в систему. Всё будет временное и без следов. Также значительных усилий потребует минимизация питона, дабы не ставить "полный".

- Вытягиваем stack.exe, кладём в %userprofile%\dev
- лепим stack install stack - он пересоберёт stack.exe и положит новый в (фейспалм) %appdata%\local\bin
- стираем старый (перемещаем в папочку "!")
- вытягиваем c https://github.com/git-for-windows/git/releases последний mingit-busybox
- распаковываем cmd/git.exe в %appdata\local\bin
- распаковываем остальное в %appdata%\local, так что там появляются кроме bin ещё etc mingw64 и usr
- создаем в бине shell.cmd нехитрый:

path %~dp0;%systemroot%\system32
cmd /k

- пускаем его, переходим в %userprofile%\dev
- клонируем стандартно git clone --depth 1 https://github.com/haskell/haskell-ide-engine.git (должно сработать как есть, если предыдущие шаги получились)
- cd haskell-ide-engine
- лепим stack setup && stack install
- пока оно билдится вместо того чтобы откидываться на спинку кресла сетапим неовим (stack setup может застрять на стрипах надолго - это норма™)
- вытягиваем nvim-win64.zip, распаковываем туда же где остальное (т.е. в bin срём дллками и подкаталожиком platform, в share идут 4 подкаталожика man-nvim-...)
- вытягиваем python-3.x.x-embed-win64.zip и распаковываем в bin
- удаляем python3x._pth
- идем на https://www.lfd.uci.edu/~gohlke/pythonlibs/ и вытягиваем pip-*.whl
- пускаем python {path-to-whl}/pip-*.whl/pip install python {path-to-whl}/pip-*.whl (в соответствии с инструкцией на gohlke но без точки в конце)
- перемещаем папку lib2to3 из python3x.zip в Lib/site-packages (её создал предыдущий шаг)
- python -m pip install setuptools
- python -m pip install neovim
- пускаем Neovim и делаем :CheckHealth. Должно написать что нету плагинов для Python 2, руби и ноды, но есть плагин для Python 3 - latest python-neovim is installed
- создаем init.vim в ~/Appdata/Local/nvim, поскольку у нас share/nvim это "системные" файлы, которые обычно не трогают. Appdata/local/nvim это аналог ~/.config/nvim выходит
- ставим Plug, тупо скачиваем и кладем в папку autoload рядом с init.nvim
- конфигурим LanguageClient. Из 6 плагинов в инструкции к LanguageClient надо только сам LanguageClient и 3 плагина от Shougo.
- конфигурим deoplete (одна строка в духе set g:deoplete#enable = 1, см. в инструкцию к деоплиту)
- конфигурим hie. Там можно и ['hie', '--lsp'] но лучше ['hie', '--lsp', '-d', '-l', 'hie.log' ] - сам хие глюкавый до ужаса и тормозной, то есть понять что-то можно только смотря в лог
- грузим nvim, делаем :PlugInstall и :UpdateRemotePlugins, должно проставить 4 и 3 плагина соответственно.
- создаем start-nvim.cmd, аналогичный шеллу но со start nvim-qt вместо второй строки. Можно и из "шелла" пускать в принципе потом.
- закрываем и откидываемся на спинку кресла, пока соберется hie
- открываем хаскель-файл, смотрим что поднялись python.exe и hie.exe и посыпались еггоги (дополнительно смотрим через :messages в нвиме и в лог)
- PROFIT!!!