According to PEP 7, older C source files are indented with tabs, and newer ones are indented with spaces. The vimrc file in the repository assumes that existing C source files should be indented with tabs, and it should indent with spaces when you create a new C source file. This has an obvious drawback: It will configure vim to use tabs when you edit a file that in fact uses spaces. The attached patch will search for the regex '^\t'; if it is found, vim will be configured to use tabs and an 8-column shiftwidth; and if it is not found, it will be configured to use spaces and a 4-column shiftwidth.
You should restrict the search to the first 100 lines or so, if possible. Many of our C files have inconsistent indentation, and using this script with such a file, automatically relying on it to do the right thing, will result in even more inconsistencies. Restricting the search to the beginning of a file greatly reduces the probability of it finding a stray tab indentation.
I came across this bug while searching for autodetecting tabs/spaces. Thanks for the help. To address Georg's question, the patch should be modified to say if search('^\t', 'n', 100) instead of if search('^\t') The former will not move the cursor, and will only search the first 100 lines.