aboutsummaryrefslogtreecommitdiffstats
path: root/packages/packages-editing.el
blob: c2e8b5cbfb86545aadff2906babf3ac0ae9a7ed1 (plain) (blame)
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
;; -*- lexical-binding: t; -*-
(use-package evil
  :init
  (setq evil-want-keybinding nil)
  :config
  (evil-mode)
  :ensure t)

(use-package evil-collection
  :after evil
  :ensure t
  :config
  (evil-collection-init))

(use-package olivetti)

(use-package yasnippet
  :ensure t
  :config
  (yas-global-mode 1))

(use-package ivy
  :ensure t
  :init
  (ivy-mode 1)
  (counsel-mode 1)
  :config
  (setq ivy-use-selectable-prompt t)
  (setq ivy-use-preview t)
  (setq ivy-fixed-height-minibuffer t)
  (setq ivy-use-preview t)
  (setq ivy-use-virtual-buffers t)
  (setq search-default-mode #'char-fold-to-regexp)
  (setq ivy-count-format "(%d/%d) ")
  (setq ivy-initial-inputs-alist nil)  ;; 不预设初始输入
  (setq ivy-use-selectable-prompt t)   ;; 允许选择提示
  :bind
  (("C-s" . 'swiper)
   ("C-x b" . 'ivy-switch-buffer)
   ("C-c v" . 'ivy-push-view)
   ("C-c s" . 'ivy-switch-view)
   ("C-c V" . 'ivy-pop-view)
   ("C-x C-@" . 'counsel-mark-ring); 在某些终端上 C-x C-SPC 会被映射为 C-x C-@,比如在 macOS 上,所以要手动设置
   ("C-x C-SPC" . 'counsel-mark-ring)
   :map minibuffer-local-map
   ("C-r" . counsel-minibuffer-history)))

;; 启用 company-mode 全局补全
(use-package company
  :ensure t
  :config
  (setq company-idle-delay 0.0
	company-minimum-prefix-length 1)
  (global-company-mode)

  (with-eval-after-load 'company
    ;; 补全列表背景
    (set-face-attribute 'company-tooltip nil
			:foreground "white" :background "gray20")
    ;; 选中项背景
    (set-face-attribute 'company-tooltip-selection nil
			:foreground "blue" :background "gray20")
    ;; 输入前缀高亮
    (set-face-attribute 'company-tooltip-common nil
			:foreground "orange" :background "gray20")
    ;; 右侧注释/类型
    (set-face-attribute 'company-tooltip-annotation nil
			:foreground "cyan" :background "gray20")))

(use-package lsp-mode
  :ensure t
  :init
  (setq read-process-output-max (* 1024 1024))
  :hook (
	 (c-mode . lsp)
	 (go-mode .lsp)
	 (css-mode . lsp)
	 (html-mode . lsp))
  )

(use-package lsp-ui
  :ensure t
  :commands lsp-ui-mode)

(use-package clang-format
  :ensure t
  :hook
  (c-mode-common-hook . (lambda () (add-hook 'before-save-hook 'clang-format-buffer nil t)))
  :bind
  (:map c-mode-base-map
        ("C-c C-f" . clang-format-buffer))
  :config
  (setq clang-format-executable (executable-find "clang-format")))

(provide 'packages-editing)