Symbols such as "CHECK_FUNCTION_EXISTS" should not trigger an open block
(due to containing the "word" FUNCTION). Fix this regression caused by
commit v3.4.0-rc1~292^2~3 (cmake-mode.el: Use `rx' for regexps,
2015-07-23).
Emacs 24 and above support a generic "prog-mode" to simplify definition
of programming modes. Derive "cmake-mode" from it since we are a
programming mode.
Control flow keywords will now be highlighted as such. Variable names
will be also be recognized. Adjust function name highlighting to work
in places other than the start of a line.
Since version 24, Emacs supports a generic mode called prog-mode. Like
all other modes it has its own mode-hook, prog-mode-hook. For Emacs
users it is common to provide all your generic programming-mode related
customizations in this mode-hook.
cmake-mode is definitely a programming-mode and should support calling
this hook. There are two ways to make that happen:
* Make your major-mode a derived-mode from prog-mode.
* Manually calling the hook upon mode-activation.
Implementing a derived mode may be the most proper thing to do, but that
may require quite a few structural changes. For now just call the hook
explicitly if it exists. This should cover much of what users need.
Usually it is not needed to call '(require 'thingatpt')' explicitly
because the function 'symbol-at-point' is in autoloaded but to be sure
to have the function loaded in every case, require thingatpt.
Since commit v3.1.0-rc2~1^2~1 (cmake-mode.el: syntax of '_' should be
treated as symbol, 2014-11-12) the 'word-at-point' function does not
extract the whole keyword anymore if it contains an '_', because
'forward-word' stops at '_'. Use 'symbol-at-point' to extract a whole
keyword even if there is an '_'.
Word commands, such as foward-word(M-f), backward-kill-word(M-backspace),
don't work well like other major-modes if syntax of '_' is treated as "word".
Tested-by: Guillaume Papin <guillaume.papin@parrot.com>
Drop use of the free variable from unscreamify-cmake-buffer.
The proper way to do this would be defvar or let, but it is more
sensible to drop the feature completely: replace-match will shift the
point and the saved-point will be invalid. More careful coding could
avoid this, but seems overkill.