Bits and bytes of code

Bytes is my collection of short-form posts, tips, and things I learn as I build software.

Neovim's vim.keymap.set and similar utilities are very useful for creating and managing keymaps, however they lack some ergonomics when building more complex keymaps that require setting and deleting the keymaps periodically. A simply utility function makes this really clean and easy to do.

ast-grep is a brilliant tool for code search and transformation that I've written about in a previous byte. Finding function calls with specific arguments is an area where ast-grep shines and makes it much easier to understand usage of a specific function invocation throughout your codebase.

I frequently create new GitHub PRs and when contributing to projects I don't often use, especially open source projects, I like to create them using the web to make sure I fill out the PR template properly. Sadly, gh pr create -w just doesn't have the right defaults, so I turned a different way...

In the world of differently named default Git branches (e.g., master, main, trunk, etc.), writing commands that reference the default branch and work everywhere is a pain. Thankfully, we can solve this with a single Git alias.

The nvim_create_augroup and nvim_create_autocmd APIs in Neovim work great for creating auto commands, however they sometimes are a bit cumbersome to use compared to the old Vimscript style augroup command where auto commands inside the augroup block were automatically grouped. Let's recreate this same type of experience in Lua!

URL Encode Text In Bash

In an upcoming Byte I'll be sharing a script that I built which opens pull request URLs based on Git branch names. However to do this correctly, we need to URL encode the input data. With the help of jq and 5 lines of code, we can URL encode any text we need.

ast-grep is an amazing tool for structural code search. With it, you can search for code by it's AST shape, rather than just a simple string or regex search. I've been using it a fair bit at work, and I developed a few scripts that replaced the core logic of the Flashlight project I built last year.

Tmux includes a switch-client command which allows you to switch to the previous or next session which is handy for quickly jumping between open sessions. However, it doesn't behave in the way you might expect as it orders sessions based on most recently visited, rather than when the session was created. For me, this just isn't how I think about my Tmux sessions, so I had to find another way.

Next page