 ;; purescript-mode
 ;;;;;;;;
 (require-if-not 'purescript-mode)
-(add-hook 'purescript-mode-hook
-          (lambda ()
-            (setq haskell-literate nil)
-            (haskell-indentation-mode)))
+(with-eval-after-load "purescript-mode"
+  (add-hook 'purescript-mode-hook
+            (lambda ()
+              (setq haskell-literate nil)
+            (haskell-indentation-mode))))
 
 ;;;;;;;;
 ;; reopen-as-root

;; ivy-mode
;;;;;;;;
(require-if-not 'ivy)
;; M-x lsp-java-generate-overrides や M-x lsp-java-spring-initializr など、複数の選択肢から選択する際に使う
;; ivyのキーマップには登録されていないが必要不可欠な関数なので、ここで登録する
(define-key ivy-minibuffer-map (kbd "M-RET") 'ivy-mark)
;; `./`と`../`を先頭に表示する必要はない
;; リストの末尾に置けるならばよかったのだが
(setq ivy-extra-directories nil)

;;;;;;;;
;; js-mode

;;さらに，M-x search-buffers の後でスペースで区切って単語を入れると，
;;バッファの全文検索ができる．
(require-if-not 'color-moccur)
(with-eval-after-load "color-moccur"
  (define-key Buffer-menu-mode-map "O" 'Buffer-menu-moccur)
  (define-key dired-mode-map "O" 'dired-do-moccur))
(setq *moccur-buffer-name-exclusion-list*
      '(".+TAGS.+" "*Completions*" "*Messages*"
        "newsrc.eld"
        " *migemo*" ".bbdb"))
(setq dmoccur-exclusion-mask
      (append (remove "\\.git/.+" dmoccur-exclusion-mask) '("/\\.git/.+")))
(setq dmoccur-use-list t)
(setq dmoccur-use-project t)
(setq dmoccur-list
      '(
        ;;(任意の名前 実際のディレクトリ 検索したいファイルの正規表現 オプション)
        ("dir" default-directory (".*") dir)
        ("current" default-directory (".*") nil)
        ;;("soft" "~/www/soft/" ("\\.texi$") nil)
        ;;("config" "~/mylisp/"  ("\\.js" "\\.el$") nil)
        ;;("1.99" "d:/unix/Meadow2/1.99a6/" (".*") sub)
        ))
(setq moccur-split-word t)
(setq color-moccur-default-ime-status nil)
;;(global-set-key "\C-c\C-x\C-o" 'moccur)
;;別のキーバインドにしたい
;;(global-set-key "\C-c\C-o" 'search-buffers)
;; If this value is t, cursor motion in the moccur-grep buffer causes
;; automatic display of the corresponding source code location.
