summaryrefslogtreecommitdiff
path: root/lisp/general.el
blob: 21abf0732c255676fddfb7cceed8a8eda6460805 (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
113
114
115
116
117
118
119
120
121
122
123
124
125

;;; Code:

;; Backup files
(setq backup-directory-alist `(("." . "~/.emacs_saves")))
(setq backup-by-copying t)
(setq delete-old-versions t
  kept-new-versions 6
  kept-old-versions 2
  version-control t)

;; menu bars
(menu-bar-mode -1)
(toggle-scroll-bar -1)
(tool-bar-mode -1)
(setq mac-shift-modifier 'meta)

;; Default Values
										;(setq-default indent-tabs-mode t)  ; use spaces only if nil
(setq-default tab-width 4) ; Assuming you want your tabs to be four spaces wide
(set-face-attribute 'default nil :font "Source Code Pro-10")
(set-fontset-font t '(?😊 . ?😎) "Segoe UI Emoji")

;;(set-face-attribute 'default nil :height 110 :family  "Consolas")
(set-language-environment "UTF-8")
(set-default-coding-systems 'utf-8)

;; Cursor
(setq-default cursor-type 'bar)
(blink-cursor-mode 1)

;; Margin
(global-linum-mode 1)
;;(require 'minimap)
;;(minimap-mode 1)
(setq-default left-fringe-width  20)
(setq-default right-fringe-width  20)
(set-face-attribute 'fringe nil :background "white")

;; Initialization screen
(setq inhibit-splash-screen t)
(setq initial-scratch-message "")
(setq initial-major-mode 'text-mode)

;; Projectile for project navigation
(require 'projectile)
(projectile-mode +1)
(define-key projectile-mode-map (kbd "s-F") 'projectile-grep)
(define-key projectile-mode-map [?\s-o] 'projectile-switch-project)
(define-key projectile-mode-map [?\s-p] 'projectile-find-file)

;; Ido mode text matching
(require 'ivy)
(ivy-mode 1)

;; Tree
(require 'neotree)
(setq neo-smart-open t)
;;(setq projectile-switch-project-action 'neotree-projectile-action)
(setq neo-theme (if (display-graphic-p) 'icons 'arrow))
(evil-define-key 'normal neotree-mode-map (kbd "TAB") 'neotree-enter)
(evil-define-key 'normal neotree-mode-map (kbd "SPC") 'neotree-quick-look)
(evil-define-key 'normal neotree-mode-map (kbd "q") 'neotree-hide)
(evil-define-key 'normal neotree-mode-map (kbd "RET") 'neotree-enter)
(evil-define-key 'normal neotree-mode-map (kbd "g") 'neotree-refresh)
(evil-define-key 'normal neotree-mode-map (kbd "n") 'neotree-next-line)
(evil-define-key 'normal neotree-mode-map (kbd "p") 'neotree-previous-line)
(evil-define-key 'normal neotree-mode-map (kbd "A") 'neotree-stretch-toggle)
(evil-define-key 'normal neotree-mode-map (kbd "H") 'neotree-hidden-file-toggle)

(add-hook 'after-save-hook 'neotree-refresh)

;; Smooth scroll
(setq redisplay-dont-pause t
  scroll-margin 7
  scroll-step 3
  scroll-conservatively 10000
  scroll-preserve-screen-position 1)

;; Line highlighting
(global-hl-line-mode 1)
(set-face-background 'hl-line "gray97")

;; Show flycheck always and after save
(use-package flycheck :ensure t)
(global-flycheck-mode)
(add-hook 'after-init-hook #'global-flycheck-mode)

;; Emojis
(use-package emojify
  :config
  (when (member "Segoe UI Emoji" (font-family-list))
    (set-fontset-font
     t 'symbol (font-spec :family "Segoe UI Emoji") nil 'prepend))
  (setq emojify-display-style 'unicode)
  (setq emojify-emoji-styles '(unicode))
  (bind-key* (kbd "C-c e") #'emojify-insert-emoji)) ; override binding in any mode

;; Global key binds
(bind-key* (kbd "<f2>") #'eglot-rename)
(bind-key* (kbd "C-x C-f") 'counsel-find-file)
(bind-key* (kbd "M-x") 'counsel-M-x)
(bind-key* (kbd "C-;") 'neotree-toggle)
(bind-key* (kbd "s-N") 'make-empty-file)
(bind-key* (kbd "s-D") 'make-directory)

;; Company mode for code completion
(use-package company
  :ensure t
  :defer t
  :init (add-hook 'after-init-hook 'global-company-mode)
  :config
  (use-package company-irony :ensure t :defer t)
  (setq company-idle-delay              0
        company-minimum-prefix-length   2
        company-show-numbers            t
        company-tooltip-limit           20
        company-dabbrev-downcase        nil
        company-backends                '((company-irony company-gtags))
        company-vscode-light-icons-margin 1
        )
  )

(provide 'general)
;;; general.el ends here