Back in 2016, I wrote about the ways we’re using GNU Readline for tab completion in gitsh. The examples in that post, like the gitsh tab completion code, were written in C. I’d have preferred to use Ruby, but the complex tab completion in gitsh needed Readline features beyond those provided by the Ruby Readline module.