The first few steps were ok.
:make tags didn't work, first because I wasn't in the src directory.
then once in src/ it wouldn't work because ctags wasn't installed.
so I installed it by doing sudo pacman -Sy ctags.
It worked ok then.
I read through the readme, and :help development. I read about half of the :help buffers.
Tried out a few ctrl-]'s and gf's too.
I opened quickfix.c by placing the cursor on it and typing gf. Had a look through it, couldn't make much sense of it though! Couldn't find the make function either...
So I read up on the :make command, and if I understand correctly it's for compiling from within vim. It compiles what you specify by consulting a make file and if there is an error it shows it and places the cursor on the line of code that caused the error.
I'm only half guessing here though tbh.
So then to find the C routine that implements it, in the README.txt it says
The ":" commands are listed in ex_cmds.h.
So I jumped to ex_cmds.h using gf. I did /make to find make. Then I used ctrl-] to jump to ex_make.
I haven't been able to make much sense of ex_make(eap) yet. The function is used for ":make", ":lmake", ":grep", ":lgrep", ":grepadd", and ":lgrepadd" according to the comment.
And at the start there is a switch statement to figure out which is being used.
I think when :make is run it saves the current buffers to file. If there is an error then it should put the cursor on the line of the error I think. Not sure what other effects it has.
I did a few different lid -Sn eap commands to try and figure out what eap was about. Couldn't really figure it out. I'd guess that it's the location of the command / filename in memory as it's the only argument passed to a lot of the functions.