better TypeScript support with JSX using web-mode and tide

This commit is contained in:
Łukasz Pankowski 2021-08-28 16:29:36 +02:00
parent 60936a3e80
commit b2909cd705

44
init.el
View File

@ -857,26 +857,21 @@ inserted between the braces between the braces."
;;; ### TypeScript ### ;;; ### TypeScript ###
;;; For fully functional TypeScript support apart from below code
;;; block you also need the content of [web-mode section] below.
;;;
;;; Your should have
;;; [tsconfig.json](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html)
;;; file in the root of your project.
(defun my-setup-tide-mode () (defun my-setup-tide-mode ()
(interactive)
(tide-setup) (tide-setup)
(flycheck-mode 1) (flycheck-mode 1)
(setq flycheck-check-syntax-automatically '(save mode-enabled)) (setq flycheck-check-syntax-automatically '(save mode-enabled))
(eldoc-mode 1) (eldoc-mode 1)
(company-mode 1) (tide-hl-identifier-mode +1)
(if (string= (file-name-extension (or (buffer-file-name) "")) "tsx") (company-mode 1))
(rjsx-minor-mode)))
(use-package rjsx-mode
:defer)
(use-package typescript-mode
:mode "\\.tsx?\\'"
:init
(setq typescript-indent-level 2)
:bind
(:map typescript-mode-map
("C-i" . company-indent-or-complete-common)
("C-M-i" . company-indent-or-complete-common)))
(use-package tide (use-package tide
:after typescript-mode :after typescript-mode
@ -893,18 +888,25 @@ inserted between the braces between the braces."
;;; ### Web mode ### ;;; ### Web mode ###
;;; For **tab completion** support also add first code block with
;;; `use-package company` from [my common settings for programming
;;; modes] (the second code block with `use-package lsp` is not
;;; required for Web mode).
(defun my-web-mode-hook-fn () (defun my-web-mode-hook-fn ()
(cond (cond
((string= web-mode-engine "php") ((string= web-mode-engine "php")
(my-php-mode-hook-fn)))) (my-php-mode-hook-fn))
((string= (file-name-extension (or (buffer-file-name) "")) "tsx")
(my-setup-tide-mode))))
(use-package web-mode (use-package web-mode
:mode "\\.\\(php\\|tsx\\)\\'"
:init :init
(add-hook 'web-mode-hook #'my-web-mode-hook-fn) (add-hook 'web-mode-hook #'my-web-mode-hook-fn))
(add-to-list 'auto-mode-alist '("\\.php\\'" . web-mode))
:bind
(:map web-mode-map ;;; [web-mode section]: #web-mode
("C-i" . company-indent-or-complete-common)))
;;; ### CSS ### ;;; ### CSS ###