help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Major mode hooks for minor modes and functions


From: uzibalqa
Subject: Major mode hooks for minor modes and functions
Date: Sat, 24 Jun 2023 09:48:43 +0000

Does it make sense for me to call major-mode hooks to enable tika-minor-mode
and then call other hooks to other functions such as in tika-addhook-hgptn.
Then call (tika-outlhg) when the minor mode is enabled as I do in 
define-minor-mode tika-minor-mode

Here is the contents of my .emacs

(require 'tika)
(tika-addhook)

Here is the minor mode

(defun tika-outlhg-regexp ()

  (cond
    ((eq major-mode 'emacs-lisp-mode)
          (let ( (hrklevels tematika-elisp-hrklevels) )
            (setq outline-regexp
                  (concat (regexp-opt (mapcar 'car hrklevels)) "\\>"))
            (setq outline-heading-alist hrklevels)
            (setq-local outline-level 'outline-level)))

    ((eq major-mode 'sh-mode)
          (let ( (hrklevels tematika-bash-hrklevels) )
            (setq outline-regexp
                  (concat (regexp-opt (mapcar 'car hrklevels)) "\\>"))
            (setq outline-heading-alist hrklevels)))

    ((eq major-mode 'f90-mode)
          (let ( (hrklevels tematika-fortran-hrklevels) )
            (setq outline-regexp
                  (concat (regexp-opt (mapcar 'car hrklevels)) "\\>"))
            (setq outline-heading-alist hrklevels)))

    ((eq major-mode 'fortran-mode)
          (let ( (hrklevels tematika-f77-hrklevels) )
            (setq outline-regexp
                  (concat (regexp-opt (mapcar 'car hrklevels)) "\\>"))
            (setq outline-heading-alist hrklevels)))

    ((eq major-mode 'latex-mode)
          (let ( (hrklevels tematika-latex-hrklevels) )
            (setq outline-regexp
                  (concat (regexp-opt (mapcar 'car hrklevels)) "\\>"))
            (setq outline-heading-alist hrklevels)
            (setq-local outline-level 'outline-level)))

    ((eq major-mode 'plain-tex-mode)
          (let ( (hrklevels tematika-tex-hrklevels) )
            (setq outline-regexp
                  (concat (regexp-opt (mapcar 'car hrklevels)) "\\>"))
            (setq outline-heading-alist hrklevels))) ))

(defun tika-addhook-hgptn ()
   "Specify the outline hierarchy functions to be executed when a
major mode is activated."
   (add-hook 'emacs-lisp-mode-hook #'tika-outlhg-regexp)
   (add-hook 'sh-mode-hook         #'tika-outlhg-regexp)
   (add-hook 'f90-mode-hook        #'tika-outlhg-regexp)
   (add-hook 'fortran-mode-hook    #'tika-outlhg-regexp)
   (add-hook 'latex-mode-hook      #'tika-outlhg-regexp)
   (add-hook 'plain-tex-mode-hook  #'tika-outlhg-regexp) )

(defun tika-outlhg ()
  "Set pattern and typeface for outline headings."
  (setq outline-minor-mode-highlight 'override)
  (tika-addhook-hgptn)
  (tika-outlhg-tyface))

;;;###autoload
(define-minor-mode tika-minor-mode
  "Enhances visibility of heading levels and text emphasis."

  (if tika-minor-mode
      (progn (outline-minor-mode 1) (tika-outlhg))
    (outline-minor-mode 0)) )

;;;###autoload
(defun tika-addhook ()
  "Activate minor-mode' automatically for specific major-modes."
  (add-hook 'emacs-lisp-mode-hook #'tika-minor-mode)
  (add-hook 'sh-mode-hook         #'tika-minor-mode)
  (add-hook 'f90-mode-hook        #'tika-minor-mode)
  (add-hook 'fortran-mode-hook    #'tika-minor-mode)
  (add-hook 'latex-mode-hook      #'tika-minor-mode)
  (add-hook 'plain-tex-mode-hook  #'tika-minor-mode))





reply via email to

[Prev in Thread] Current Thread [Next in Thread]