   :after treemacs projectile
   :ensure t)
 
-(use-package org
-  :mode (("\\.org$" . org-mode))
-  :ensure org-plus-contrib)
-
 (use-package treemacs-magit
   :after treemacs magit
   :ensure t)
 
-;; Setup whitespace cleanup
-(add-hook 'before-save-hook 'whitespace-cleanup)
-
-;; Have a much more intelligent deletion of whitespace before words
-(use-package smart-hungry-delete
-  :ensure t
-  :bind (("<backspace>" . smart-hungry-delete-backward-char)
-                 ("C-d" . smart-hungry-delete-forward-char))
-  :defer nil ;; dont defer so we can add our functions to hooks
-  :config (smart-hungry-delete-add-default-hooks)
-  )
-
-;; Docker support
-(use-package dockerfile-mode
-  :ensure t
-  :mode  (("\\Dockerfile\\'" . dockerfile-mode)))
-
-;; Enable YAML Support
-(use-package yaml-mode
-  :ensure t
-  :mode (("\\.yml\\'" . yaml-mode)
-         ("\\.yaml\\'" . yaml-mode)))
-
-;; Create a dedicated backup directory
-(setq
- backup-directory-alist '(("." . "~/.emacs.d/backups"))
- delete-old-versions -1
- version-control t
- vc-make-backup-files t
- backup-by-copying t)
-
-;; Enable language server protocol support
-;; https://github.com/golang/tools/blob/master/gopls/doc/emacs.md
-(use-package lsp-mode
-  :ensure t
-  :commands (lsp lsp-deferred)
-  :config
-  (setq lsp-prefer-flymake nil)
-  :hook (go-mode . lsp-deferred))
-
-;; Set up before-save hooks to format buffer and add/delete imports.
-;; Make sure you don't have other gofmt/goimports hooks enabled.
-(defun lsp-go-install-save-hooks ()
-  (add-hook 'before-save-hook #'lsp-format-buffer t t)
-  (add-hook 'before-save-hook #'lsp-organize-imports t t))
-(add-hook 'go-mode-hook #'lsp-go-install-save-hooks)
-
-;; Optional - provides fancier overlays.
-(use-package lsp-ui
-  :ensure t
-  :commands lsp-ui-mode
-  :hook (lsp-mode-hook . lsp-ui-mode)
-  :config
-  (setq lsp-ui-doc-enable nil
-        lsp-ui-peek-enable t
-        lsp-ui-sideline-enable t
-        lsp-ui-imenu-enable t
-        lsp-ui-flycheck-enable t
-        lsp-gopls-staticcheck t
-        lsp-eldoc-render-all t
-        lsp-gopls-complete-unimported t)
+;; summary screen on open
+(use-package dashboard
+  :ensure t
   :init
-  (add-hook 'after-init-hook #'global-company-mode))
-
-;; Company mode is a standard completion package that works well with lsp-mode.
-(use-package company
-  :ensure t
-  :config
-  ;; Optionally enable completion-as-you-type behavior.
-  (setq company-idle-delay 0)
-  (setq company-minimum-prefix-length 1)
-  (setq company-tooltop-align-annotations t))
-
-;; company-lsp integrates company mode completion with lsp-mode.
-;; completion-at-point also works out of the box but doesn't support snippets.
-(use-package company-lsp
-  :ensure t
-  :after company
-  :commands company-lsp
-  :config
-  (push 'company-lsp company-backends))
-
-;; Optional - provides snippet support.
-(use-package yasnippet
-  :ensure t
-  :commands yas-minor-mode
-  :hook (go-mode . yas-minor-mode))
-
-;; Enable Golang Support
-(use-package go-mode
-  :ensure t
-  :hook ((go-mode . lsp-deferred)
-         (before-save . lsp-format-buffer)
-         (before-save . lsp-organize-imports)))
-
-(use-package sql-indent
-  :ensure t)
+  (setq dashboard-show-shortcuts    t
+        dashboard-set-heading-icons t
+        dashboard-set-file-icons    t
+        dashboard-set-init-info     t
+        dashboard-set-footer        nil)
+  :config
+  (dashboard-setup-startup-hook)
+  (setq dashboard-items '((recents   . 10)
+                          (agenda    . 5)
+                          (projects  . 10))))
+
+;; org mode configuration
+(use-package org
+  :ensure t
+  :pin org
+  :config
+  (setq org-src-fontify-natively t)
+  (setq org-log-done t)
+  (setq org-confirm-babel-evaluate nil)
+  (setq org-src-tab-acts-natively t)
+  (setq org-cycle-separator-lines 1)
+  (setq org-ellipsis " ▼")
+  (setq org-directory "~/Documents/org")
+  (setq org-agenda-files '("~/Documents/org/")))
+
+;; Enable support for Golang
+(use-package ob-go
+  :ensure t)
+
+;; org language support
+(org-babel-do-load-languages
+ 'org-babel-load-languages
+ '((C          . t)
+   (sql        . t)
+   (shell      . t)
+   (sqlite     . t)
+   (go         . t)
+   (emacs-lisp . nil)))
 
 ;; Setup web-mode for gohtml and html
 (use-package web-mode

(use-package projectile
  :ensure t
  :diminish projectile-mode
  :config
  (projectile-mode +1)
  (define-key projectile-mode-map (kbd "C-c p") 'projectile-command-map)
  (setq projectile-project-search-path '("~/code/")))

(use-package treemacs
  :ensure t
  :bind
  (:map global-map
        ("C-<f8>" . treemacs-select-window)

         ("\\.markdown\\'" . markdown-mode))
  :init (setq markdown-command "multimarkdown"))

;; use and enable writegood-mode
(use-package writegood-mode
  :ensure t
  :after markdown-mode org
  :config
  (add-hook 'markdown-mode-hook 'writegood-mode)
  (add-hook 'org-mode-hook 'writegood-mode))

(use-package yaml-mode
  :ensure t
  :mode (("\\.yml\\'" . yaml-mode)
         ("\\.yaml\\'" . yaml-mode)))

(use-package sql-indent
  :ensure t)

(use-package sql
  :after sql-indent
  :ensure t)

;; keep init.el clean
(setq custom-file (concat user-emacs-directory "custom.el"))
(load custom-file 'noerror)
