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)))