   (set-terminal-coding-system 'utf-8)
   (set-keyboard-coding-system 'utf-8))
 
+(defun development/go-onsave-hooks ()
+  (add-hook 'before-save-hook #'lsp-format-buffer t t)
+  (add-hook 'before-save-hook #'lsp-organize-imports t t))
+
+(defun development/golang-setup ()
+  (package-manager/ensure-packages-installed 'go-mode 'lsp-mode 'lsp-ui 'company 'yasnippet)
+  (setq company-idle-delay 0
+	company-minimum-prefix-length 1)
+  (add-hook 'go-mode-hook #'development/golang-onsave-hooks)
+  (add-hook 'go-mode-hook #'lsp-deferred)
+  (add-hook 'go-mode-hook #'yas-minor-mode))
+
 (defun development/html-setup ()
   (package-manager/ensure-packages-installed 'web-mode)
   (setq web-mode-markup-indent-offset 2

	  ("DONE" ("WAITING") ("CANCELLED") ("INACTIVE"))))
  (setq org-todo-keyword-faces
	'(("TODO" :foreground "red" :weight bold)
	    ("NEXT" :foreground "blue" :weight bold)
	    ("DONE" :foreground "forest green" :weight bold)
	    ("WAITING" :foreground "orange" :weight bold)
	    ("INACTIVE" :foreground "magenta" :weight bold)
	    ("CANCELLED" :foreground "forest green" :weight bold)
	    ("MEETING" :foreground "forest green" :weight bold))))

(defun writing/spellchecker-setup ()
  (setq ispell-program-name "aspell"

  (require 'paredit)
  (add-hook 'emacs-lisp-mode-hook 'development/elisp-mode-hook))

(defun development/devops-setup ()
  (package-manager/ensure-packages-installed 'dockerfile-mode 'k8s-mode))

