((nil . ((eval . (progn
                   (defvar context-mode-map (make-sparse-keymap)
                     "Keymap while context-mode is active.")
                   (define-minor-mode context-mode
                     "A temporary minor mode to be activated only specific to a buffer."
                     nil
                     :lighter " [f2]-Context"
                     context-mode-map)
                   (context-mode 1)

                   ;; additional scripts
                   (defun save-and-find-test-script-and-compile ()
                     (interactive)
                     (let ((build-script-name "test.bat"))
                       (save-and-find-build-script-and-compile)))
                   (defun save-and-find-run-script-and-compile ()
                     (interactive)
                     (let ((build-script-name "run.bat"))
                       (save-and-find-build-script-and-compile)))
                   (defun save-and-find-debug-script-and-compile ()
                     (interactive)
                     (let ((build-script-name "debug.bat"))
                       (save-and-find-build-script-and-compile)))

                   (defhydra hydra-context (context-mode-map "<f2>")
                     "Context Actions:"
                     ("b" save-and-find-build-script-and-compile "build" :color blue)
                     ("r" save-and-find-run-script-and-compile   "run"   :color blue)
                     ("d" save-and-find-debug-script-and-compile "debug" :color blue)
                     ("t" save-and-find-test-script-and-compile  "test"  :color blue)
                     ("o" browse-file-directory                  "open"  :color blue)
                     ("q" nil                                    "quit"  :color blue))

                   (define-key context-mode-map (kbd "<f2>") 'hydra-context/body)

                   (font-lock-add-keywords 'c++-mode
                                           '(("\\<\\(if_debug\\|if_windows\\|if_linux\\|defer\\|proc\\)\\>" .
                                              font-lock-keyword-face)))))))
 (c++-mode . ((eval . (company-clang-set-prefix "main.cpp"))
              (eval . (flycheck-mode 0))
              (eval . (rainbow-mode 0))
              )))
