emacs: add semantic mode