Enable TODO highlighting in all prod modes without listing all modes.
authorOleksandr Gavenko <gavenkoa@gmail.com>
Thu, 16 May 2019 00:26:05 +0300
changeset 1589 ae79beae573a
parent 1588 a2f88a6df8ab
child 1590 b117f393fd9a
Enable TODO highlighting in all prod modes without listing all modes.
.emacs-my
--- a/.emacs-my	Tue May 07 00:48:54 2019 +0300
+++ b/.emacs-my	Thu May 16 00:26:05 2019 +0300
@@ -255,52 +255,24 @@
  (lambda (symb) (intern (concat (symbol-name symb) "-map")))
  )
 
-(defvar my-devel-mode-list
-  '(
-    sh-mode script-mode tcl-mode
-    c-mode c++-mode java-mode js-mode
-    python-mode perl-mode cperl-mode
-    lisp-mode
-    sql-mode
-    emacs-lisp-mode
-    makefile-mode makefile-gmake-mode
-    nsis-mode
-    bat-generic-mode
+(defvar my-prog-mode-list
+  '(nsis-mode
     html-mode nxml-mode wesnoth-mode
     LilyPond-mode
     texinfo-mode
-    gadict-mode
-    )
+    gadict-mode)
   "List of development modes.")
 
-(defvar my-devel-mode-hook-list
-   (my-mode2hook my-devel-mode-list)
+(defvar my-prog-hook-list
+   (my-mode2hook my-prog-mode-list)
   "List of development mode hooks.")
 
-(defvar my-scroll-margin-mode-list
-  '(
-    vc-dir-mode
-    recentf-dialog-mode
-    org-agenda-grid-mode           ; XXX for this item not worked!
-    log-view-mode
-    dired-mode
-    compilation-mode
-    conf-mode
-    )
-  "List of modes for enabling scroll margin.")
-
-(defvar my-scroll-margin-mode-hook-list
-  (my-mode2hook my-scroll-margin-mode-list)
-  "List of mode hooks for enabling scroll margin.")
-
 (defvar my-text-mode-list
-  '(
-    text-mode
+  '(text-mode
     outline-mode
     rst-mode
     diff-mode
-    dict-c5-mode
-    )
+    dict-c5-mode)
   "List of text modes.")
 
 (defvar my-text-mode-hook-list
@@ -672,7 +644,7 @@
 ;; (setq-default show-trailing-whitespace t)
 
 (setq whitespace-style '(face trailing tabs))
-(setq whitespace-global-modes (append my-devel-mode-list my-text-mode-list))
+(setq whitespace-global-modes t)
 (ignore-errors
   (require 'whitespace)
   (global-whitespace-mode 1))
@@ -801,10 +773,24 @@
  scroll-preserve-screen-position t
  )
 
+(defvar my-scroll-margin-mode-list
+  '(vc-dir-mode
+    recentf-dialog-mode
+    org-agenda-grid-mode           ; XXX for this item not worked!
+    log-view-mode
+    dired-mode
+    compilation-mode
+    conf-mode)
+  "List of modes for enabling scroll margin.")
+
 ;; Set margin only for desired modes! Do not frustrate calendar any more.
 (make-variable-buffer-local 'scroll-margin)
-(mapc (lambda (hook) (add-hook hook (lambda nil (setq scroll-margin my-scroll-margin))))
-      (delete-dups (append my-text-mode-hook-list my-devel-mode-hook-list my-scroll-margin-mode-hook-list)) )
+(defun my-set-scroll-margin () (setq scroll-margin my-scroll-margin))
+(mapc (lambda (hook) (add-hook hook #'my-set-scroll-margin))
+      (delete-dups (append my-text-mode-hook-list
+                           my-prog-hook-list
+                           (my-mode2hook my-scroll-margin-mode-list)
+                           '(prog-mode-hook))) )
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 (message "chars, unicode")
@@ -1927,13 +1913,15 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 (message "TODO, XXX, FIXME highlight")
 
-(dolist (mode (append my-devel-mode-list my-text-mode-list))
+(defvar my-todo-words '("TODO" "FIX" "FIXME" "HACK" "XXX" "EDITED"))
+
+(defun my-todo (&optional mode)
+  (interactive)
   (font-lock-add-keywords
    mode
-   `(( ,(concat "\\<\\(" (regexp-opt '("TODO" "FIX" "FIXME" "HACK" "XXX" "EDITED")) ":?\\)\\>") 1 'font-lock-warning-face t)
-     ;; 64 times, for highlight C-u C-u C-u <key>
-     ;; ("\\([^[:space:]]\\)\\1\\{63\\}" 0 'my-contrasty-face t)
-     )))
+   (list (list (concat "\\<" (regexp-opt my-todo-words) "\\>") 0 'font-lock-warning-face t))))
+
+(add-hook 'prog-mode-hook 'my-todo)
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 (message "mail, message")
@@ -2510,11 +2498,9 @@
 (setq-default comment-column 44)
 (setq-default comment-fill-column my-fill-column)
 
-(mapc (lambda (hook) (add-hook hook (lambda () (setq fill-column my-fill-column)) ))
-      (append my-devel-mode-hook-list my-text-mode-hook-list))
-
-(mapc (lambda (mode) (add-hook (my-mode2hook mode) #'hs-minor-mode))
-      '(c-mode c++-mode java-mode js-mode lisp-mode emacs-lisp-mode))
+(setq-default fill-column my-fill-column)
+
+(add-hook 'prog-mode-hook #'hs-minor-mode)
 
 (defun my-company-prog-mode-setup ()
   (setq-local company-dabbrev-code-other-buffers 'code)
@@ -2885,8 +2871,7 @@
   (when imenu-generic-expression
     (imenu-add-menubar-index)
     (run-hooks 'menu-bar-update-hook) ))
-(mapc (lambda (hook) (add-hook hook 'my-imenu-to-menubar))
-      my-devel-mode-hook-list)
+(add-hook 'prog-mode-hook 'my-imenu-to-menubar)
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 (message "windows inf files for driver installin")