Last active
          December 28, 2018 14:28 
        
      - 
      
- 
        Save twlz0ne/447b00b11321101997b646514aedc048 to your computer and use it in GitHub Desktop. 
    Init web with lsp, append major mode to existing lsp client #Emacs
  
        
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | ;;; init-web.el --- Init web with lsp -*- lexical-binding: t; -*- | |
| (require 'web) | |
| (require 'lsp) | |
| (require 'lsp-clients) | |
| (defmacro lsp-register-major-mode (client mode) | |
| "Registers major MODE to CLIENT. | |
| \(fn 'example-ls 'example-mode)" | |
| (gv-letplace (getter setter) `(lsp--client-major-modes (gethash ,client lsp-clients)) | |
| `(unless (memq ,mode ,getter) | |
| (funcall ,setter (push ,mode ,getter))))) | |
| (define-derived-mode web-jsx-mode web-mode "WebJSX" | |
| "Major mode for editing Web & JSX templates.\\{web-jsx-map}" | |
| (setq web-mode-content-type "jsx")) | |
| (define-derived-mode web-tsx-mode web-mode "WebTSX" | |
| "Major mode for editing Web & TSX templates.\\{web-tsx-map}" | |
| (setq web-mode-content-type "jsx")) | |
| (define-derived-mode web-vue-mode web-mode "WebVUE" | |
| "Major mode for editing Web & VUE templates.\\{web-vue-map}") | |
| (add-to-list 'auto-mode-alist '("\\.jsx\\'" . web-jsx-mode)) | |
| (add-to-list 'auto-mode-alist '("\\.tsx\\'" . web-tsx-mode)) | |
| (add-to-list 'auto-mode-alist '("\\.vue\\'" . web-vue-mode)) | |
| (lsp-register-major-mode 'ts-ls 'web-jsx-mode) | |
| (lsp-register-major-mode 'ts-ls 'web-tsx-mode) | |
| (lsp-register-major-mode 'vls 'web-vue-mode) | |
| (provide 'init-web) | |
| ;;; init-web.el ends here | 
  
    Sign up for free
    to join this conversation on GitHub.
    Already have an account?
    Sign in to comment