blob: 2d5fc5da86e7b547d741aeaa3e85f126cd48576e (
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
|
;;; prog-webdev.el --- Web Development Packages and Settings -*- lexical-binding: t; -*-
;;; Commentary:
;;
;;; Code:
;; --------------------------------- JSON Mode ---------------------------------
;; mode for editing JavaScript Object Notation (JSON) data files
(use-package json-mode
:mode ("\\.json\\'" . json-mode)
:defer .5)
;; ---------------------------------- JS2 Mode ---------------------------------
;; javascript editing mode
(use-package js2-mode
:mode ("\\.js\\'" . js2-mode)
:defer .5)
;; --------------------------------- CSS Eldoc ---------------------------------
;; CSS info in the echo area
(use-package css-eldoc
:defer .5)
;; ------------------------------------ Tide -----------------------------------
;; typescript interactive development environment
(use-package tide
:defer .5)
(defun cj/activate-tide ()
(interactive)
(tide-setup)
(eldoc-mode 1)
(tide-hl-identifier-mode 1))
;; ---------------------------------- Web Mode ---------------------------------
;; major mode for editing web templates
(use-package web-mode
:defer .5
:after (tide css-eldoc)
:custom
(web-mode-enable-current-element-highlight t)
:bind
([(control return)] . cj/complete-web-mode)
:mode
(("\\.html?$" . cj/setup-web-mode-mixed)))
(defun cj/complete-web-mode ()
(interactive)
(let ((current-scope (web-mode-language-at-pos (point))))
(cond ((string-equal "javascript" current-scope)
(company-tide 'interactive))
((string-equal "css" current-scope)
(company-css 'interactive))
(t
(company-dabbrev-code 'interactive)))))
(defun cj/eldoc-web-mode ()
(let ((current-scope (web-mode-language-at-pos (point))))
(cond ((string-equal "javascript" current-scope)
(tide-eldoc-function))
((string-equal "css" current-scope)
(css-eldoc-function))
(t
nil))))
(defun cj/setup-web-mode-mixed ()
(web-mode)
(cj/activate-tide)
(setq-local eldoc-documentation-function #'cj/eldoc-web-mode))
(provide 'prog-webdev)
;;; prog-webdev.el ends here.
|