Skip to content

Instantly share code, notes, and snippets.

@rksm
Created January 20, 2018 09:59
Show Gist options
  • Save rksm/22a2e93bd2642e329637ecf85ce9081f to your computer and use it in GitHub Desktop.
Save rksm/22a2e93bd2642e329637ecf85ce9081f to your computer and use it in GitHub Desktop.
tide (typescript emacs package) - override typescript server for remote support via tramp
(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