рдЖрдк рдХреНрдпрд╛ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?
рдЪреВрдВрдХрд┐ TSLint рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ Eslint рдЕрдм рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ / TSX рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд▓рд┐рдВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╢рдВрд╕рд┐рдд рддрд░реАрдХрд╛ рд╣реИ, рдореИрдВ Eslint рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреА рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЖрдХрд╛рд░ рджреЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред
рдореИрдВ рдХреИрд╕реЗ .js рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рддрд░рд╣ рд▓рд╛рдЗрдирд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдб рдХреЗ рдЙрдкрдпреЛрдЧ рдФрд░ рдПрд╕реНрд▓рд┐рдВрдЯ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдиреБрдХрд╕рд╛рди рдкрд░ рдереЛрдбрд╝рд╛ рд╕рд╛ рд╣реВрдБред
рдЖрдкрдиреЗ рдХреНрдпрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ?
рдореИрдВрдиреЗ typescript-eslint
рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ .eslintrc
рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рд╣реИред
рд╡реНрдпрд╡рд╕реНрдерд╛ рдЬрд╛рдирдХрд╛рд░реА
((emacs)
(рд╕рдВрд╕реНрдХрд░рдгред "26.3")
(рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ
(рдмрд┐рд▓реНрдбред "рджрд┐рд╕рдВрдмрд░ 28, 2019")
(buildopts) --enable-locallisppath = / usr / local / share / emacs / site-lisp --infodir = / usr / local / Cellar / emacs-mac / emacs-26.3-z-mac-7.8 / share / info / emacs --prefix = / usr / local / Cellar / emacs-mac / emacs-26.3-z-mac-7.8 -with-mac -enable-mac-app = / usr / рд▓реЛрдХрд▓ / рд╕реЗрд▓рд░ / рдПрдордПрд╕реАрдПрд╕-рдореИрдХ / рдИрдореИрдХреНрд╕ -26.3-z-mac-7.8 - рдЗрд╕рдХреЗ рд╕рд╛рде-рд╕рд╛рде ")
(рд╡рд┐рдВрдбреЛрдЬрд╝ред рдмреИрдЪ)
(рдбреЗрдордирдкред рд╕рд░реНрд╡рд░-рд░рдирд┐рдВрдЧ))
(рдХрдпрд╛рдордд
(рд╕рдВрд╕реНрдХрд░рдгред "2.0.9")
(рдмрд┐рд▓реНрдбред "рд╣реЗрдб -> 453e20534 2020-01-15 11:19:32 -0500 рд╡рд┐рдХрд╕рд┐рдд рдХрд░реЗрдВ"
(dirред "~ / work / dotfiles / emacs / .doom.d /"))
(рд╕рд┐рд╕реНрдЯрдо
(рдкреНрд░рдХрд╛рд░ред рдбрд╛рд░реНрд╡рд┐рди)
(рд╡рд┐рдиреНрдпрд╛рд╕ред "x86_64-apple-darwin18.7.0")
(рд╢реЗрд▓ред "/ usr / рд╕реНрдерд╛рдиреАрдп / рдмрд┐рди / рдордЫрд▓реА")
"
рдкрде ред usr / рд▓реЛрдХрд▓ / рдЧреЛ / рдмрд┐рди "" / usr / рд▓реЛрдХрд▓ / MacGPG2 / bin "" / рд▓реЙрд░реНрдбреНрд╕ /Frameworks/Mono.framework/Versions/Current/Commands "" / Library / TeX / рдЯреЗрдХреНрд╕рдмрд┐рди "" ~ / go / bin "" " ~ / .рдмреАрдиред рд╕рдВрд╕реНрдХрд░рдг / 2.6.3 / рдмрд┐рди "" /usr/local/Cellar/rbenv/1.1.2/libexec "" /usr/local/Cellar/emacs-mac/emacs-26.3-z-mac-7.8/libexec/emacs/ 26.3 / x86_64-apple-darwin18.7.0 "))
(рд╡рд┐рдиреНрдпрд╛рд╕
(envfileред envvar-file)
(elc-filesред 0)
(рдореЙрдбреНрдпреВрд▓: рдкреВрд░рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдХрдВрдкрдиреА рдЖрдЗрд╡реА: рдпреВрдЖрдИ рдХрдпрд╛рдордд рдХрдпрд╛рдордд-рдбреИрд╢рдмреЛрд░реНрдб рдХрдпрд╛рдордд-рдЫреЛрдбрд╝реЛ hl-todo рдореЙрдбрд▓рд╛рдЗрди рдирд╡-рдлреНрд▓реИрд╢ рдСрдкрд┐рдирдЯреНрд╕ (рдкреЙрдкрдЕрдк + рдСрд▓ + рдбрд┐рдлреЙрд▓реНрдЯреНрд╕) treemacs рдпреВрдирд┐рдХреЛрдб vc-gild vi-tilde-fringe window-select рдХрд╛рд░реНрдпрд╕реНрдерд╛рди: рд╕рдВрдкрд╛рджрдХ (рдмреБрд░рд╛рдИ + рд╣рд░ рдЬрдЧрд╣) ) рдлрд╝рд╛рдЗрд▓-рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдПрдХрд╛рдзрд┐рдХ-рдХрд░реНрд╕рд░ рдХреЛ рдШреБрдорд╛рдП-рдШреБрдорд╛рдП-рдкрд╛рда рд╕реНрдирд┐рдкреЗрдЯ: emacs (dired + icons) рдЗрд▓реЗрдХреНрдЯреНрд░рд┐рдХ vc: рдЯрд░реНрдо vterm: рдЯреВрд▓реНрд╕ editorconfig eval: рдЪреЗрдХрд░реНрд╕ рд╕рд┐рдВрдЯреИрдХреНрд╕: рдЯреВрд▓реНрд╕ (рд▓реБрдХрдЕрдк + рдбреЙрдХреНрд╕рд╕реЗрдЯ) macc magit pdf: lang рдЖрдо-рд▓рд┐рд╕реНрдк рдбреЗрдЯрд╛ emacs-lisp рдЬрд╛рд╡реЗрджрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЗрдЯреЗрдХреНрд╕ рд▓реЗрдЧрд░ рдорд╛рд░реНрдХрдбрд╛рдЙрди (org + dragndrop + ipython + pandoc + present)
(рдкреИрдХреЗрдЬ "рдПрди / рдП")
(рдПрд▓реНрдкрд╛ "рдСрдХреНрд╕-рд╣реНрдпреВрдЧреЛ"))
рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд░рд╢реНрди рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ javascript-eslint
рдХреЛ typescript-mode
рдХреИрд╕реЗ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдП:
(defun typescript-mode-setup ()
"Custom setup for Typescript mode"
(setq flycheck-checker 'javascript-eslint)
)
(add-hook 'typescript-mode-hook 'typescript-mode-setup)
рдпрд╣ рдореБрджреНрджрд╛ рддрдм рдмрдирддрд╛ рд╣реИ рдХрд┐ .tsx
рдлрд╛рдЗрд▓реЗрдВ typescript-mode
рдореЗрдВ рдирд╣реАрдВ рдЦреБрд▓рддреА рд╣реИрдВ (рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореЛрдб JSX / TSX рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ) рдмрд▓реНрдХрд┐ web-mode
, рдФрд░ рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ javascript-eslint
web-mode
рд▓рд┐рдП рдПрдХ рдорд╛рдиреНрдп рдлреНрд▓рд╛рдИрдЪреЗрдХ рдЪреЗрдХрд░ рдирд╣реАрдВ рд╣реИред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдореИрдВ рдпрд╛ рддреЛ TSX рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП typescript-mode
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдЕрдЯрдХ рдЧрдпрд╛ рд╣реВрдВ, рдЬреЗрдПрд╕рдПрдХреНрд╕ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдФрд░ рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЛ рдЦреЛ рд░рд╣рд╛ рд╣реВрдВ, рдпрд╛ рдореБрдЭреЗ рдПрд╕реНрд▓рд┐рдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЫреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред
рдХрд┐рд╕реА рднреА рдЕрдВрддрд░реНрджреГрд╖реНрдЯрд┐ рдмрд╣реБрдд рд╕рд░рд╛рд╣рдирд╛ рдХреА рдЬрд╛рдПрдЧреА appreciated
@gueorgui рдореБрдЭреЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП vue
рд╕рдорд╛рди рдХреБрдЫ рдХрд░рдирд╛ рдерд╛, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реБрдЖ
(define-derived-mode vue-mode web-mode "Vue mode")
(add-to-list 'auto-mode-alist '("\\.vue\\'" . vue-mode))
(after! flycheck
(flycheck-add-mode 'javascript-eslint 'vue-mode)
(flycheck-add-mode 'css-stylelint 'vue-mode)
(add-hook 'vue-mode-hook (lambda () (flycheck-add-next-checker 'lsp-ui 'javascript-eslint)))
(add-hook 'vue-mode-hook (lambda () (flycheck-add-next-checker 'javascript-eslint 'css-stylelint))))
рдЖрдк рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреА рдЬрдЧрд╣ рд╕рдХрддрд╛ рд╣реИ vue
рдХреЗ рд╕рд╛рде tsx
, рдФрд░ рд╣рдЯрд╛рдиреЗ stylelint
рд╕рд╛рде рд╣реА рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рднреА lsp
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рднреА рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред
@afontaine рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛ рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж!
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
@gueorgui рдореБрдЭреЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
vue
рд╕рдорд╛рди рдХреБрдЫ рдХрд░рдирд╛ рдерд╛, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реБрдЖрдЖрдк рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреА рдЬрдЧрд╣ рд╕рдХрддрд╛ рд╣реИ
vue
рдХреЗ рд╕рд╛рдеtsx
, рдФрд░ рд╣рдЯрд╛рдиреЗstylelint
рд╕рд╛рде рд╣реА рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рднреАlsp
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рднреА рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред