Matthew, you can use 'catch' and 'throw' instead of a too deep nest of 'if'.
For what it's worth, when you develop code, it may also help to put all in (let ((backtrace-on-error 'always)) (condition-case nil (progn body...) )) So that the stacktrace is printed, but the execution continues. This is possible only with recent GIT librep. >> Im fairly new to c so im not sure if there is a better way >> to do it. "Librep internal" page on the wiki has some doc, although far from complete. But you don't have to be worried too much. We can (barely) manage. Teika (Teika kazura)
