Created
January 20, 2018 09:59
-
-
Save rksm/22a2e93bd2642e329637ecf85ce9081f to your computer and use it in GitHub Desktop.
tide (typescript emacs package) - override typescript server for remote support via tramp
This file contains 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
(defun rk/tide-start-server-process (node-executable tsserverjs) | |
"" | |
(let* ((tramp-p (tramp-tramp-file-p tsserverjs)) | |
(tsserverjs (if tramp-p | |
(tramp-file-name-unquote-localname | |
(tramp-dissect-file-name tsserverjs)) | |
tsserverjs)) | |
(process (if tramp-p | |
(start-file-process "tsserver" buf | |
"bash" "--login" "-c" | |
(format "source ~/.nvm/nvm.sh && nvm use default && %s %s" | |
node-executable tsserverjs)) | |
(start-file-process "tsserver" buf tide-node-executable tsserverjs)))) | |
process)) | |
(defun rk/tide-start-server () | |
(when (tide-current-server) | |
(error "Server already exist")) | |
(message "(%s) Starting tsserver..." (tide-project-name)) | |
(let* ((default-directory (tide-project-root)) | |
(process-environment (append tide-tsserver-process-environment process-environment)) | |
(buf (generate-new-buffer tide-server-buffer-name)) | |
(tsserverjs (tide-locate-tsserver-executable)) | |
;; Use a pipe to communicate with the subprocess. This fixes a hang | |
;; when a >1k message is sent on macOS. | |
(process-connection-type nil) | |
(process (rk/tide-start-server-process tide-node-executable tsserverjs))) | |
(set-process-coding-system process 'utf-8-unix 'utf-8-unix) | |
(set-process-filter process #'tide-net-filter) | |
(set-process-sentinel process #'tide-net-sentinel) | |
(set-process-query-on-exit-flag process nil) | |
(with-current-buffer (process-buffer process) | |
(buffer-disable-undo)) | |
(process-put process 'project-name (tide-project-name)) | |
(puthash (tide-project-name) process tide-servers) | |
(message "(%s) tsserver server started successfully." (tide-project-name)))) | |
(eval-after-load 'tide | |
'(progn | |
(defalias 'tide-start-server 'rk/tide-start-server))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment