clojurescriptcljsbuild

Locating unmatched delimiters in Clojurescript


Occasionally I find myself in a situation where I mismatch curly braces, parenthesis or square brackets: {}()[] in Clojurescript. I am using leininingen and cljsbuild I have a hard time tracking down the error source. Usually it boils down to something like this:

Compiling "resources/public/js/whitespace.js" failed. clojure.lang.ExceptionInfo: java.lang.RuntimeException: Unmatched delimiter: ) at line 1

Followed by a extensive stack trace that does not seem to contain filename, line-number information.

How can I get more useful information?

My workaround so far


Solution

  • You can use Paredit Mode to keep the S-expressions balanced while you type. In Emacs this Mode also warns you if you have an unmatched expression in a file.

    There is a vim plugin that provides a Paredit Mode for vim, take a look here: https://github.com/vim-scripts/paredit.vim.