Day 1002
Cherry-picking commits from pycharm
Messed up merging/rebasing branches from branches from branches, but needed to merge literally a couple of commits.
So I created a clean branch from master
. Then:
- Check out the target branch, the one you’re cherry-picking to
- Open the git log
- Select the commits you want to cherry-pick, right click, “cherry-pick”
- Done!
As usual, docs exist1 and are quite readable.
PEP8 max line width of 80 characters
… is the best thing since sliced bread, I was skeptical at first but makes editing code in multiple windows so much better!
Installing python3.8 on Ubuntu 18.04 LTS
- Needed a third-party PPA2 that has all the newer python versions:
sudo add-apt-repository ppa:deadsnakes/ppa sudo apt install python3.8 sudo apt install python3.8-dev
- Needed
sudo apt-get install python3.8-venv
3 - Needing to reinstall all packages for it, haha.
- Set up locally a
venv38
for this; if Isource venv38/bin/activate
python3
becomes python3.8 by default.
- Set up locally a
- Needed to install
python3.8-dev
was added after an error I had4 when installing pycocotools
, it didn’t find python.h
when building.
Installing python locally
This describes the process well: Install python3.6+ for local user on remote machine without root access - ~/web/logs
The official documentation: 2. Using Python on Unix platforms — Python 3.9.7 documentation
Basically make altinstall
is a safer version that doesn’t overwrite system-wide stuff:
make install can overwrite or masquerade the python3 binary. make altinstall is therefore recommended instead of make install since it only installs exec_prefix/bin/pythonversion.
TL;DR:
- Download the source tarball
- Then:
./configure --prefix=whatever make make altinstall
- Add the prefix to
$PATH
:export PATH=$PATH:/data/sh/tools/python3.8/bin
Hugo auto-reload and CSS
Just now remembered that when doing CSS stuff it’s sometimes cached, and one needs to <Shift-R>
or sth similar. Hugo’s automatic reloading reloads the content/templates/…, but not the CSS!
Explains a lot of what happened the last two days.
Hugo Templating
Copypasting from the docu5:
- Parameters for functions are separated using spaces
- Dot-notations for methods and fields (
{{ .Params.bar }}
) - Things can be grouped via parentheses:
{{ if or (isset .Params "alt") (isset .Params "caption") }} Caption {{ end }}
- A Single Statement Can be Split over Multiple Lines:
{{ if or (isset .Params "alt") (isset .Params "caption") }}
Setting directory-specific settings in vim
Given that Hugo’s markdown considers code as part of a bullet-point if it’s indented two spaces more than the *
-bulletpoint’s level, and that I have a tabwidth of 4 and tabs everywhere else and two spaces were a pain…
To apply settings only within a specific directory, add this to ~/.vimrc
6:
autocmd BufNewFile,BufRead /home/me/ntb/* set tabstop=4 softtabstop=4 shiftwidth=4 expandtab foldmethod=marker
Notably, for me it didn’t work when the path contained a symlink, had to write it explicitly.
Another option from that SO questiont was placing a ~/.vimrc
in that directory7, allowing vim to use it by default, and sourcing the usual global one from the first line. Has security implications, may lead to issues with paths/plugins, didn’t try it.
vim tabs and spaces and indentation settings
Looking for indentation stuff for the above lead me here: Tab settings in Vim. Summary: | by Ari Sweedler | Medium
It has this description, copying verbatim:
tabstop
: display-only, how many spaces does one\t
equal visually?shiftwidth
: how many spaces does one level of indentation equal? (shifting commands, formatting, behaviour).softtabstop
: how much whitespace to add/remove when pressing tab/backspace?- Disabled by default; if using tabs - we create as much whitespace as needed to get to the next tabstop
- but when using spaces for indentation, we don’t want backspace to delete one space, then this is needed
expandtab
: should pressing<Tab>
on the keyboard create spaces or a tab character?
highlight indentation levels in vim, if indentation is done with spaces
Highlighting tab-indents is easy, and I had these settings for that:
set listchars=tab:\:\
set listchars+=trail:◦
For spaces it’s harder.
Tried the indentLine plugin8, due to it using the conceal setting I couldn’t see my json-quotes and _
underscores anymore. Setting conceallevel to 1 from 2 helped only for the latter. May get fixed by colorscheme/syntax files with less concealed stuff?
Setting let g:indentLine_concealcursor = ''
(by default inc
) helps - text is not concealed at all in the cursor line in any of the modes. I see all concealed text and don’t see the guides. I can kinda live with that.
In any case replacing the '
s in json is ugly.
Then found this excellent SO answer.
set cursorcolumn cursorline
highlight the entire column/row where the cursor is. Which is why I want indentation highlighting 99% of the time!
With my newfound vim knowledge, added this to ~/.vimrc
:
autocmd filetype python set cursorcolumn cursorline
But this didn’t satisfy me for the dtb and I kept looking.
Then I found vim-indent-guides9 that changes just the background color. Settings I ended up using:
let g:indent_guides_enable_on_vim_startup = 1
let g:indent_guides_auto_colors = 0
let g:indent_guides_start_level = 2
let g:indent_guides_guide_size = 4
" autocmd VimEnter,Colorscheme * :hi IndentGuidesOdd guibg=darkgrey ctermbg=233
autocmd VimEnter,Colorscheme * :hi IndentGuidesEven guibg=blue ctermbg=233
ctermbg=233
is one of the darkest black-like vim colors, there’s a nice vim colors reference10 online.
At the end, wrapped everything related to DTB and indentst in one nice startup function:
fun! SetDTB()
set tabstop=4 shiftwidth=2 expandtab
foldmethod=marker
set nocursorline nocursorcolumn
let g:indent_guides_auto_colors = 0
let g:indent_guides_start_level = 1
let g:indent_guides_guide_size = 1
autocmd VimEnter,Colorscheme * :hi IndentGuidesEven guibg=blue ctermbg=236
endfu
autocmd BufNewFile,BufRead /home/me/ntb/* :call SetDTB()
-
python - pyvenv not working because ensurepip is not available - Stack Overflow ↩︎
-
make error under PythonAPI, python.h No such file or directory · Issue #180 · cocodataset/cocoapi ↩︎
-
Vim: apply settings on files in directory - Stack Overflow ↩︎
-
Answer about local .vimrc in Vim: apply settings on files in directory - Stack Overflow ↩︎
-
Yggdroot/indentLine: A vim plugin to display the indention levels with thin vertical lines ↩︎
-
nathanaelkane/vim-indent-guides: A Vim plugin for visually displaying indent levels in code ↩︎