 
 ;; #Don't #create #lock #files
 (setq-default create-lockfiles nil)
+
+;; Taken from https://wikemacs.org/wiki/Imenu
+;; Allows for similar functionality to vs code's jump to symbol.
+(defun ido-goto-symbol (&optional symbol-list)
+      "Refresh imenu and jump to a place in the buffer using Ido."
+      (interactive)
+      (unless (featurep 'imenu)
+        (require 'imenu nil t))
+      (cond
+       ((not symbol-list)
+        (let ((ido-mode ido-mode)
+              (ido-enable-flex-matching
+               (if (boundp 'ido-enable-flex-matching)
+                   ido-enable-flex-matching t))
+              name-and-pos symbol-names position)
+          (unless ido-mode
+            (ido-mode 1)
+            (setq ido-enable-flex-matching t))
+          (while (progn
+                   (imenu--cleanup)
+                   (setq imenu--index-alist nil)
+                   (ido-goto-symbol (imenu--make-index-alist))
+                   (setq selected-symbol
+                         (ido-completing-read "Jump to symbol: " symbol-names))
+                   (string= (car imenu--rescan-item) selected-symbol)))
+          (unless (and (boundp 'mark-active) mark-active)
+            (push-mark nil t nil))
+          (setq position (cdr (assoc selected-symbol name-and-pos)))
+          (cond
+           ((overlayp position)
+            (goto-char (overlay-start position)))
+           (t
+            (goto-char position)))))
+       ((listp symbol-list)
+        (dolist (symbol symbol-list)
+          (let (name position)
+            (cond
+             ((and (listp symbol) (imenu--subalist-p symbol))
+              (ido-goto-symbol symbol))
+             ((listp symbol)
+              (setq name (car symbol))
+              (setq position (cdr symbol)))
+             ((stringp symbol)
+              (setq name symbol)
+              (setq position
+                    (get-text-property 1 'org-imenu-marker symbol))))
+            (unless (or (null position) (null name)
+                        (string= (car imenu--rescan-item) name))
+              (add-to-list 'symbol-names name)
+              (add-to-list 'name-and-pos (cons name position))))))))
+
+(global-set-key (kbd "C-S-o") 'ido-goto-symbol) ; or any key you see fit
 
 (custom-set-faces
  ;; custom-set-faces was added by Custom.

  :init
  (ido-everywhere 1)
  (flx-ido-mode 1))

(use-package idomenu
  :ensure t
  :bind ("C-S-o" . idomenu))

;; Projectile
(use-package projectile

  (load-file (expand-file-name file user-init-dir)))

(defun lang-folder (lang)
  (concat user-init-dir (concat "langs/" lang)))

(defun load-language (lang)
  "Load language specific packages for LANG."
  (interactive "f")
  (load-user-file (concat (lang-folder lang) "/packages.el")))

;; Highlight parenthesis
(show-paren-mode 1)
