I created a minor mode for some specific file extension to fontify the syntax and provide correct indentation.
1)The indentation doesn't work for some reason.
2) How to enable prog-mode when the minor mode is enabled?
(define-minor-mode kwds-gl-mode
"kwds gl mode."
nil " kg" nil
(if kwds-gl-mode
(font-lock-add-keywords nil kwds-gl)
(font-lock-remove-keywords nil kwds-gl)
)
;; Don't know if this actually works
(if kwds-gl-mode
;;Tab:4
(setq tab-stop-list (quote (4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 100 104 108 112 116 120)))
nil
)
(if (fboundp 'font-lock-flush)
(font-lock-flush)
(when font-lock-mode
(with-no-warnings (font-lock-fontify-buffer)))))
(defcustom kwds-gl-modes '(gl-mode)
"List of modes where Lisp Extra Font Lock Global mode should be
enabled."
:type '(repeat symbol)
:group 'kwds-gl-lock)
;;;###autoload
(define-global-minor-mode kwds-gl-global-mode
kwds-gl-mode
(lambda ()
(when (apply 'derived-mode-p kwds-gl-modes) (kwds-gl-mode 1)))
:group 'kwds-gl)
(add-to-list 'auto-mode-alist '("\\.gl\\'" . kwds-gl-mode))
(kwds-gl-global-mode 1)
Second version:
(define-derived-mode gl-mode prog-mode "gl"
"major mode for gl language code."
(setq font-lock-defaults '(kwds-gl)))
(add-to-list 'auto-mode-alist '("\\.gl\\'" . gl-mode))
(add-hook 'gl-mode-hook (lambda () (flycheck-mode 0)))