summaryrefslogtreecommitdiff
path: root/config.org
blob: e564bb235a176a39694b18ed3ed6474d5820f07b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#+TITLE: My configuration
#+AUTHOR: Andrew Guschin
#+PROPERTY: tangle yes

#+BEGIN_SRC emacs-lisp
(when (package-installed-p 'ayu-theme)
  (load-theme 'ayu-grey t))

(add-to-list 'default-frame-alist
             '(font . "FiraCode Nerd Font 15"))

;;; GUI settings:
(when (eq system-type 'gnu/linux)
  (menu-bar-mode -1))
(when (eq system-type 'darwin)
  (menu-bar-mode t))
(tool-bar-mode -1)
(toggle-scroll-bar -1)
(xterm-mouse-mode 1)
(buffer-face-mode)
(global-set-key (kbd "C-<wheel-up>") 'ignore)
(global-set-key (kbd "C-<wheel-down>") 'ignore)
(setq-default display-line-numbers-mode nil)
(setq-default display-line-numbers nil)
(add-hook 'prog-mode-hook
          (lambda () (display-line-numbers-mode t)))
(pixel-scroll-precision-mode t)
(setq frame-resize-pixelwise t)

(setq-default indent-tabs-mode nil)
(setq-default tab-width 4)
(setq-default c-default-style "bsd")
(setq-default c-basic-offset 4)

(add-to-list 'package-archives
             '("melpa" . "https://melpa.org/packages/") t)

(defun ensure-packages (packages)
  (dolist (name packages)
    (unless (package-installed-p name)
      (package-install name))))

(ensure-packages '(evil))
(use-package evil
  :hook
  (evil-insert-state-entry . (lambda () (setq display-line-numbers t)))
  :hook
  (evil-normal-state-entry . (lambda () (setq display-line-numbers 'relative)))
  :config
  (evil-mode 1))

(ensure-packages '(ayu-theme))

(ensure-packages '(magit))

(ensure-packages '(paredit rainbow-delimiters))
(use-package paredit
  :hook
  (emacs-lisp-mode . paredit-mode))
(use-package rainbow-delimiters
  :hook
  (emacs-lisp-mode . rainbow-delimiters-mode))


(ensure-packages '(exec-path-from-shell))
(use-package exec-path-from-shell
  :config
  (when (memq window-system '(mac ns x))
    (setenv "EMACS" "emacs")
    (setq exec-path-from-shell-variables
	  '("PATH" "CARGO_HOME" "RUSTUP_HOME" "GOPATH"
	    "RYE_HOME" "NPM_CONFIG_USERCONFIG"
	    "STACK_ROOT" "GHCUP_USE_XDG_DIRS"))
    (exec-path-from-shell-initialize)))

(ensure-packages '(rust-mode
                   lsp-java
                   lsp-ui
                   company
                   helm
                   avy))
(use-package lsp-mode
  :init
  ;; set prefix for lsp-command-keymap (few alternatives - "C-l", "C-c l")
  (setq lsp-keymap-prefix "C-c l")
  (use-package rust-mode)
  (use-package lsp-java)
  (setq lsp-java-server-install-dir
        (concat (getenv "HOME") "/.local/share/jdtls/"))
  ;; if you want which-key integration
  ;;(lsp-mode . lsp-enable-which-key-integration))
  :hook ((rust-mode . lsp)
         (java-mode . lsp)
         (c++-mode . lsp))
  :commands lsp)
(use-package lsp-ui :commands lsp-ui-mode)
(use-package helm-lsp :commands helm-lsp-workspace-symbol)


(defun my-backup-file-name (fpath)
  "Return a new file path of a given file path. If the new path's
   directories does not exist, create them."
  (let* ((backupRootDir (expand-file-name "backup" user-emacs-directory))
         (filePath (replace-regexp-in-string "[A-Za-z]:" "" fpath )) ; remove Windows driver letter in path, for example, “C:”
         (backupFilePath (replace-regexp-in-string "//" "/" (concat backupRootDir filePath "~") )))
    (make-directory (file-name-directory backupFilePath) (file-name-directory backupFilePath))
    backupFilePath))
(setq make-backup-file-name-function 'my-backup-file-name)

(setq custom-file (expand-file-name "custom.el" user-emacs-directory))
(load custom-file)
#+END_SRC