       ;; (setq-local orgstruct-heading-prefix-regexp "//; ")
       ;; (turn-on-orgstruct++)
 
-      (setq imenu-generic-expression
-            (append imenu-generic-expression
-                    modi/verilog-imenu-generic-expression))
+      (with-eval-after-load 'imenu
+        (setq imenu-generic-expression
+              (append imenu-generic-expression
+                      modi/verilog-imenu-generic-expression)))
+
       ;; Replace tabs with spaces when saving files in verilog-mode
       (add-hook 'before-save-hook #'modi/untabify-buffer nil :local)
 
-      ;; Force the `imenu-generic-expression' to be
-      ;; `modi/verilog-imenu-generic-expression' for `verilog-mode' after
-      ;; `outshine-hook-function' runs.
-      (when (member 'outshine-hook-function outline-minor-mode-hook)
-        (add-hook 'outline-minor-mode-hook
-                  #'modi/verilog-outshine-imenu :append :local)))
+      (with-eval-after-load 'outshine
+        ;; Force the `imenu-generic-expression' to contain
+        ;; `modi/verilog-imenu-generic-expression' for `verilog-mode' by making
+        ;; sure that `modi/verilog-outshine-imenu' is *appended* to
+        ;; `outline-minor-mode-hook' after `outshine-hook-function'.
+        (when (member 'outshine-hook-function outline-minor-mode-hook)
+          (add-hook 'outline-minor-mode-hook
+                    #'modi/verilog-outshine-imenu :append :local))))
+
+    ;; *Append* `my/verilog-mode-customizations' to `verilog-mode-hook' so that
+    ;; that function is run very last of all other functions added to that hook.
     (add-hook 'verilog-mode-hook #'my/verilog-mode-customizations :append)
 
+;;; Key bindings
     (bind-keys
      :map verilog-mode-map
       ;; Unbind the backtick binding done to `electric-verilog-tick'
-      ;; With binding done to electric-verilog-tick, it's not possible to type
-      ;; backticks on multiple lines simultaneously in multiple-cursors mode
-      ("`" . nil)
+      ;; With binding done to `electric-verilog-tick', it's not possible to type
+      ;; backticks on multiple lines simultaneously in multiple-cursors mode.
+      ("`"         . nil)
       ;; Bind `verilog-header' to "C-c C-H" instead of to "C-c C-h"
-      ("C-c C-h" . nil)
-      ("C-c C-S-h" .  verilog-header)
-      ("C-c C-t" . hydra-verilog-template/body)
-      ("C-^" . modi/verilog-jump-to-header-dwim)
-      ("C-&" . modi/verilog-jump-to-header-dwim-fwd))))
+      ("C-c C-h"   . nil)
+      ("C-c C-S-h" . verilog-header)
+      ;;
+      ("C-c C-t"   . hydra-verilog-template/body)
+      ("C-^"       . modi/verilog-jump-to-header-dwim)
+      ("C-&"       . modi/verilog-jump-to-header-dwim-fwd))))
 
 
 (provide 'setup-verilog)

      "Generic regular expression to parse Verilog elements for `imenu'.")

;;; hideshow
    (with-eval-after-load 'setup-fold
      (add-to-list 'hs-special-modes-alist
                   `(verilog-mode ,(concat "\\b\\(begin"
                                           "\\|task"

              (ag-regexp module-instance-re (projectile-project-root)))))
        (key-chord-define verilog-mode-map "^^" #'modi/verilog-find-parent-module)))

;;;; my/verilog-selective-indent
    ;; http://emacs.stackexchange.com/a/8033/115
    (defun my/verilog-selective-indent (&rest args)
      "Return t if either of the below is true:
