Browse code
Update js information
Showing 1 changed files
... | ... |
@@ -36,11 +36,6 @@ |
36 | 36 |
(define-key evil-visual-state-map " m" 'mf/mirror-region-in-multifile) |
37 | 37 |
) |
38 | 38 |
|
39 |
-(use-package tern |
|
40 |
- :config |
|
41 |
- (add-hook 'js-mode-hook (lambda () (tern-mode t))) |
|
42 |
- (add-hook 'js2-mode-hook (lambda () (tern-mode t)))) |
|
43 |
- |
|
44 | 39 |
(use-package org |
45 | 40 |
:pin "org" |
46 | 41 |
:ensure t |
... | ... |
@@ -121,6 +116,58 @@ |
121 | 116 |
|
122 | 117 |
|
123 | 118 |
|
119 |
+(use-package js2-mode |
|
120 |
+ :ensure t |
|
121 |
+ :defer t |
|
122 |
+ :commands js2-mode |
|
123 |
+ :init |
|
124 |
+ (progn |
|
125 |
+ (add-to-list 'interpreter-mode-alist (cons "node" 'js2-mode)) |
|
126 |
+ (setq-default js2-basic-offset 4) |
|
127 |
+ (setq-default js-indent-level 4) |
|
128 |
+ (add-hook 'js2-mode-hook 'flycheck-mode) |
|
129 |
+ (customize-set-variable 'js2-mode-show-parse-errors nil) |
|
130 |
+ (customize-set-variable 'js2-strict-missing-semi-warning nil) |
|
131 |
+ (customize-set-variable 'js2-strict-trailing-comma-warning nil) |
|
132 |
+ (customize-set-variable 'js2-strict-inconsistent-return-warning nil))) |
|
133 |
+ |
|
134 |
+(use-package vue-mode |
|
135 |
+ :config |
|
136 |
+ (add-hook 'vue-mode |
|
137 |
+ 'prettier-js-mode) |
|
138 |
+ (add-hook 'vue-mode |
|
139 |
+ 'flycheck-mode)) |
|
140 |
+ |
|
141 |
+(use-package prettier-js |
|
142 |
+ :ensure t |
|
143 |
+ :init |
|
144 |
+ (add-hook 'js2-mode-hook 'prettier-js-mode)) |
|
145 |
+ |
|
146 |
+(use-package tide |
|
147 |
+ :ensure t |
|
148 |
+ :config |
|
149 |
+ (add-hook 'js2-mode-hook 'tide-setup) |
|
150 |
+ (flycheck-add-next-checker 'javascript-eslint 'javascript-tide 'append)) |
|
151 |
+ |
|
152 |
+(use-package rjsx-mode |
|
153 |
+ :ensure t |
|
154 |
+ :config |
|
155 |
+ (add-to-list 'auto-mode-alist '("\\.js$" . rjsx-mode))) |
|
156 |
+ |
|
157 |
+(comment |
|
158 |
+ (use-package tern |
|
159 |
+ :config |
|
160 |
+ (add-hook 'js-mode-hook (lambda () (tern-mode t))) |
|
161 |
+ (add-hook 'js2-mode-hook (lambda () (tern-mode t)))) |
|
162 |
+ |
|
163 |
+ (use-package company-tern |
|
164 |
+ :ensure t |
|
165 |
+ :config |
|
166 |
+ (add-to-list 'company-backends 'company-tern) |
|
167 |
+ (setq company-tooltip-align-annotations t))) |
|
168 |
+ |
|
169 |
+ |
|
170 |
+ |
|
124 | 171 |
(defun more-than-one-project-file-p () |
125 | 172 |
(= (length (projectile-select-files (projectile-current-project-files))) |
126 | 173 |
1)) |
... | ... |
@@ -319,7 +366,6 @@ With a prefix ARG invalidates the cache first." |
319 | 366 |
|
320 | 367 |
(add-hook 'smartparens-enabled-hook |
321 | 368 |
'evil-smartparens-mode)) |
322 |
- (vue-mode) |
|
323 | 369 |
(web-mode) |
324 | 370 |
(yaml-mode)) |
325 | 371 |
|
... | ... |
@@ -330,24 +376,6 @@ With a prefix ARG invalidates the cache first." |
330 | 376 |
:config |
331 | 377 |
(editorconfig-mode 1)) |
332 | 378 |
|
333 |
-(use-package js2-mode |
|
334 |
- :ensure t |
|
335 |
- :defer t |
|
336 |
- :commands js2-mode |
|
337 |
- :init |
|
338 |
- (progn |
|
339 |
- (add-to-list 'interpreter-mode-alist (cons "node" 'js2-mode)) |
|
340 |
- (setq-default js2-basic-offset 4) |
|
341 |
- (setq-default js-indent-level 4) |
|
342 |
- (customize-set-variable 'js2-mode-show-parse-errors nil) |
|
343 |
- (customize-set-variable 'js2-strict-missing-semi-warning nil) |
|
344 |
- (customize-set-variable 'js2-strict-trailing-comma-warning nil) |
|
345 |
- (customize-set-variable 'js2-strict-inconsistent-return-warning nil))) |
|
346 |
- |
|
347 |
-(use-package rjsx-mode |
|
348 |
- :ensure t |
|
349 |
- :config |
|
350 |
- (add-to-list 'auto-mode-alist '("\\.js$" . rjsx-mode))) |
|
351 | 379 |
|
352 | 380 |
(define-key evil-normal-state-map "ZZ" 'save-buffer) |
353 | 381 |
|
... | ... |
@@ -441,6 +469,75 @@ With a prefix ARG invalidates the cache first." |
441 | 469 |
|
442 | 470 |
;;;;; junk drawer .... |
443 | 471 |
|
472 |
+(defun js--looking-at-operator-p () |
|
473 |
+ "Return non-nil if point is on a JavaScript operator, other than a comma." |
|
474 |
+ (save-match-data |
|
475 |
+ (and (looking-at js--indent-operator-re) |
|
476 |
+ (or (not (eq (char-after) ?:)) |
|
477 |
+ (save-excursion |
|
478 |
+ (js--backward-syntactic-ws) |
|
479 |
+ (when (memq (char-before) '(?\) ?})) (backward-list)) |
|
480 |
+ (and (js--re-search-backward "[?:{]\\|\\_<case\\_>" nil t) |
|
481 |
+ (eq (char-after) ??)))) |
|
482 |
+ (not (and |
|
483 |
+ (eq (char-after) ?/) |
|
484 |
+ (save-excursion |
|
485 |
+ (eq (nth 3 (syntax-ppss)) ?/)))) |
|
486 |
+ (not (and |
|
487 |
+ (eq (char-after) ?*) |
|
488 |
+ ;; Generator method (possibly using computed property). |
|
489 |
+ (looking-at (concat "\\* *\\(?:\\[\\|" js--name-re " *(\\)")) |
|
490 |
+ (save-excursion |
|
491 |
+ (js--backward-syntactic-ws) |
|
492 |
+ ;; We might misindent some expressions that would |
|
493 |
+ ;; return NaN anyway. Shouldn't be a problem. |
|
494 |
+ (memq (char-before) '(?, ?} ?{)))))))) |
|
495 |
+ |
|
496 |
+ |
|
497 |
+(progn ;; workaround until this fixed: https://github.com/emacs-evil/evil/issues/1129 |
|
498 |
+ ;; or this: https://github.com/emacs-evil/evil/pull/1130 |
|
499 |
+ (defun config/fix-evil-window-move (orig-fun &rest args) |
|
500 |
+ "Close Treemacs while moving windows around." |
|
501 |
+ (let* ((treemacs-window (treemacs-get-local-window)) |
|
502 |
+ (is-active (and treemacs-window (window-live-p treemacs-window)))) |
|
503 |
+ (when is-active (treemacs)) |
|
504 |
+ (apply orig-fun args) |
|
505 |
+ (when is-active |
|
506 |
+ (save-selected-window |
|
507 |
+ (treemacs))))) |
|
508 |
+ |
|
509 |
+ (dolist (func '(evil-window-move-far-left evil-window-move-far-right evil-window-move-very-top evil-window-move-very-bottom)) |
|
510 |
+ (advice-add func :around #'config/fix-evil-window-move))) |
|
511 |
+ |
|
512 |
+(defun fwoar--find-package-json () |
|
513 |
+ (expand-file-name |
|
514 |
+ (locate-dominating-file default-directory |
|
515 |
+ (lambda (n) |
|
516 |
+ (directory-files n nil "^package.json$"))))) |
|
517 |
+ |
|
518 |
+ |
|
519 |
+ |
|
520 |
+(defun find-package-json (default-directory) |
|
521 |
+ (interactive "D") |
|
522 |
+ (message "pakcage json: %s"(fwoar--find-package-json)) |
|
523 |
+ (find-file (concat (fwoar--find-package-json) |
|
524 |
+ "/package.json"))) |
|
525 |
+ |
|
526 |
+(cl-defmethod fwoar--find-system (&context (major-mode (derived-mode js-mode))) |
|
527 |
+ (find-package-json default-directory)) |
|
528 |
+ |
|
529 |
+(use-package jest |
|
530 |
+ :ensure t |
|
531 |
+ :config |
|
532 |
+ (defun jest--project-root () |
|
533 |
+ "Find the project root directory." |
|
534 |
+ (let ((closest-package-json (fwoar--find-package-json)) |
|
535 |
+ (projectile-root (projectile-project-root))) |
|
536 |
+ (message "%s <-> %s" closest-package-json projectile-root) |
|
537 |
+ (if (s-prefix-p projectile-root closest-package-json) |
|
538 |
+ closest-package-json |
|
539 |
+ projectile-root)))) |
|
540 |
+ |
|
444 | 541 |
(comment |
445 | 542 |
(use-package paredit |
446 | 543 |
:ensure t |