   :init
   ;; Make Fortran indent at the level of the code. Not a fixed width.
   (add-hook 'f90-mode-hook
-	    '(lambda ()
-	       (setq fortran-comment-indent-style 'relative))))
+            '(lambda ()
+               (setq fortran-comment-indent-style 'relative))))
 
 
 ;;================================================================================

  :config

  (c-add-style "my-cpp-style"
	       '("stroustrup"
		 (c-offsets-alist
		  (innamespace . 0)
		  (inline-open . 0)
		  (arglist-close . 0))))

  (defun my-cpp-mode-hook ()
    (setq-default helm-make-build-dir "build")
    (add-to-list 'projectile-other-file-alist
		 '("C" "H" "hpp" "hxx"))
    (add-to-list 'projectile-other-file-alist
		 '("H" "cpp"))
    (c-set-style "my-cpp-style")
    (setq c-basic-offset 2))


;; Dictionary stuff
;;
;;================================================================================
(use-package ispell
  :ensure t
  :config
  ;; Switch dictionaries
  (defun fd-switch-dictionary()
    "Binding to switch between dictionaries."
    (interactive)
    (let* ((dic ispell-current-dictionary)
           (change (if (string= dic "francais") "en_US" "francais")))
      (ispell-change-dictionary change)
      (message "Dictionary switched from %s to %s" dic change)
      ))

  (setq ispell-program-name (executable-find "aspell"))
  (setq ispell-extra-args '("--sug-mode=ultra"
                            "--lang=en_US"))

  (use-package flyspell
    :ensure t
    :diminish flyspell-mode
    :config
    (use-package flyspell-correct
      :ensure t
      :bind
      ("C-c s" . 'flyspell-correct-previous-word-generic)
      :init
      (use-package flyspell-correct-helm
        :ensure t))

    ;; No spell check for embedded snippets in org-mode
    ;; From http://emacs.stackexchange.com/questions/9333/how-does-one-use-flyspell-in-org-buffers-without-flyspell-triggering-on-tangled/9347#9347
    (defadvice org-mode-flyspell-verify (after org-mode-flyspell-verify-hack activate)
      (let ((rlt ad-return-value)
            (begin-regexp "^[ \t]*#\\+begin_\\(src\\|html\\|latex\\)")
            (end-regexp "^[ \t]*#\\+end_\\(src\\|html\\|latex\\)")
            old-flag
            b e)
        (when ad-return-value
          (save-excursion
            (setq old-flag case-fold-search)
            (setq case-fold-search t)
            (setq b (re-search-backward begin-regexp nil t))
            (if b (setq e (re-search-forward end-regexp nil t)))
            (setq case-fold-search old-flag))
          (if (and b e (< (point) e)) (setq rlt nil)))
        (setq ad-return-value rlt)))

    ;; No spell check for code snippets in Markdown
    (defun flyspell-generic-textmode-verify ()
      "Used for `flyspell-generic-check-word-predicate' in text modes."
      ;; (point) is next char after the word. Must check one char before.
      (let ((f (get-text-property (- (point) 1) 'face)))
        (not (memq f '(markdown-pre-face)))))
    (setq flyspell-generic-check-word-predicate 'flyspell-generic-textmode-verify)

    (add-hook 'text-mode-hook #'flyspell-mode)
    (add-hook 'org-mode-hook #'flyspell-mode)
    (add-hook 'latex-mode-hook #'flyspell-mode)
    (add-hook 'tex-mode-hook #'flyspell-mode)
    (add-hook 'prog-mode-hook #'flyspell-prog-mode)))


;;================================================================================
;;
