 
 (eval-when-compile
   (require 'use-package))
+
 ; Diminished modes are minor modes with no modeline display
 (use-package diminish :ensure t)
 (require 'bind-key)

;;
;; C, C++ and other compiled languages
(use-package rust-mode
  :ensure t
  :config
  (progn
    (use-package flycheck-rust :ensure t :after (flycheck))))

(use-package go-mode
  :ensure t
  :config
  (progn
    (use-package company-go
      :ensure t)
    (add-hook 'go-mode-hook
              (lambda ()
                (setq tab-width 4)
                (set (make-local-variable 'company-backends) '(company-go))
                (company-mode)))))

(defun my-c-mode-hook ()
  (setq c-basic-offset 4)

(add-hook 'c-mode-common-hook 'my-c-mode-hook)

;; Scripting languages
(use-package rinari
  :hook ruby-mode
  :ensure t)
(use-package robe
  :hook (ruby-mode . robe-mode)
  :ensure t
  :init
  (add-hook 'ruby-mode-hook
            (lambda ()
              (setq-local company-backends '((company-robe))))))

(use-package python
  :defer t
  :ensure t
  :config
  (progn
