Function: antlr-set-tool-version-and-mode-line
antlr-set-tool-version-and-mode-line is a byte-compiled function
defined in antlr-mode.el.gz.
Signature
(antlr-set-tool-version-and-mode-line)
Documentation
Late setup for antlr-mode and sub modes.
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/antlr-mode.el.gz
(defun antlr-set-tool-version-and-mode-line ()
;; FIXME: This does a *lot* more setup than is normal for
;; `hack-local-variables-hook'.
"Late setup for `antlr-mode' and sub modes."
;; tool and language version and dependent variables -----------------------
(let ((guess (if (local-variable-p 'antlr-tool-version)
;; backward-compatibility:
(if (numberp antlr-tool-version) 'antlr-v2 antlr-tool-version)
(antlr-guess-tool-version))))
(when (with-demoted-errors "File mode error for `antlr-tool-version': %s"
(antlr-set-local-variables 'antlr-tool-version guess
antlr-tool-version-variables))
(antlr-set-local-variables 'antlr-tool-version 'antlr-v3
antlr-tool-version-variables)))
(let ((guess (if (local-variable-p 'antlr-language)
(or (cdr (assq antlr-language ; backward compatibility
'((java-mode . antlr-java) (c++-mode . antlr-cpp))))
antlr-language)
(antlr-guess-language))))
(when (with-demoted-errors "File mode error for `antlr-language': %s"
(antlr-set-local-variables 'antlr-language
(or guess (caar antlr-language-list))
antlr-language-variables))
(antlr-set-local-variables 'antlr-language 'antlr-java
antlr-language-variables)))
;; language-dependent initializations --------------------------------------
(c-init-language-vars-for antlr-init-cc-mode)
(c-basic-common-init antlr-init-cc-mode ; sets `indent-line-function' etc
(or antlr-indent-style "gnu"))
(funcall antlr-init-submode)
(set (make-local-variable 'indent-line-function) #'antlr-indent-line)
(kill-local-variable 'indent-region-function) ;FIXME: Needed?
;; syntax-propertize -------------------------------------------------------
(when antlr-syntax-propertize
(setq-local syntax-propertize-function (car antlr-syntax-propertize))
(unless (eq (cadr antlr-syntax-propertize) t)
(if (functionp (cadr antlr-syntax-propertize))
(add-hook 'syntax-propertize-extend-region-functions
(cadr antlr-syntax-propertize) 'append 'local)
(setq-local syntax-propertize-extend-region-functions
(cadr antlr-syntax-propertize))))
(when (nth 2 antlr-syntax-propertize)
(setq-local c-multiline-string-start-char
(if c-multiline-string-start-char t
(nth 2 antlr-syntax-propertize))))
(when antlr-do-syntax-propertize ; at least for imenu in Emacs-24.5
(syntax-propertize (point-max))))
;; Before I had moved `imenu-add-to-menubar' from function `antlr-mode', it
;; had already scanned the buffer before I have set `antlr-tool-version' here
;; (variables which depend on it). Thus, I move the imenu function to this
;; function, too... (do we need to explicitly call `imenu-update-menubar' to
;; be on the safe side?)
(and antlr-imenu-name ; there should be a global variable...
(fboundp 'imenu-add-to-menubar)
(imenu-add-to-menubar
(if (stringp antlr-imenu-name) antlr-imenu-name "Index")))
;; FIXME: No need to set this so late.
(setq mode-name '("" antlr-tool-mode-name "." antlr-language-mode-name)))