Cleaning up LLVM IR mode for Emacs.
I've made a range of improvements to the Emacs mode for LLVM IR.
Most importantly, it changes llvm-mode to inherit from prog-mode. This
means llvm-mode will be treated as a normal programming mode in Emacs,
so many Emacs features will just work. prog-mode is new to Emacs 24,
so I've added an alias to ensure compatibility with Emacs 23 too.
I've changed the mode definition to use define-derived-mode. This
saves us needing to set up local variables ourselves, and saves us
needing to define llvm-mode-map, llvm-mode-abbrev-table,
I've removed the keybindings to tab-to-tab-stop, center-line and
center-paragraph. This shouldn't be llvm-mode's responsibility, and
the code didn't actually work anyway (since (not llvm-mode-map)
always evaluated to t, the keybindings were never executed).
I've simplified the syntax-table definition, it's equivalent (e.g. "
is treated as string delimiter by default in Emacs). I've added . as
a symbol constituent, so functions like llvm.memset.p0i8.i32 are
recognised as a single symbol. I've also changed % to be a symbol
constituent, so users can move between words or symbols at their
choice, rather than conflating the two.
I've fixed regexp for types, which incorrect used symbol instead of
symbols as an argument to regexp-opt. This was causing incorrect
highlighting on lines like call void @foovoid.
I've removed string and comment highlighting from
llvm-font-lock-keywords. This is already handled by the
Finally, I've removed the reference to jasmin. That project is long
abandoned and the link 404s. For reference, I've found an old copy of
the project here:
Patch by Wilfred Hughes!