lsp-gdscript.el (2079B)
1 ;;; lsp-gdscript.el --- LSP mode -*- lexical-binding: t; -*- 2 3 ;; Copyright (C) 2020 Oliver Frank 4 5 ;; Author: Oliver Frank <oliverfrank321@gmail.com> 6 ;; Keywords: languages 7 8 ;; This program is free software; you can redistribute it and/or modify 9 ;; it under the terms of the GNU General Public License as published by 10 ;; the Free Software Foundation, either version 3 of the License, or 11 ;; (at your option) any later version. 12 13 ;; This program is distributed in the hope that it will be useful, 14 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of 15 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 ;; GNU General Public License for more details. 17 18 ;; You should have received a copy of the GNU General Public License 19 ;; along with this program. If not, see <https://www.gnu.org/licenses/>. 20 21 ;;; Commentary: 22 23 ;; lsp-gdscript client 24 25 ;;; Code: 26 27 (require 'lsp-mode) 28 29 (defgroup lsp-gdscript nil 30 "LSP support for GDScript, using godot's language server." 31 :group 'lsp-mode 32 :link '(url-link "https://github.com/godotengine/godot") 33 :package-version '(lsp-mode . "6.1")) 34 35 (defcustom lsp-gdscript-port 6005 36 "Port to connect server to" 37 :type 'integer 38 :group 'lsp-gdscript) 39 40 (defun lsp-gdscript-tcp-connect-to-port () 41 "Define a TCP connection to language server." 42 (list 43 :connect (lambda (filter sentinel name _environment-fn _workspace) 44 (let* ((host "localhost") 45 (port lsp-gdscript-port) 46 (tcp-proc (lsp--open-network-stream host port (concat name "::tcp")))) 47 48 (set-process-query-on-exit-flag tcp-proc nil) 49 (set-process-filter tcp-proc filter) 50 (set-process-sentinel tcp-proc sentinel) 51 (cons tcp-proc tcp-proc))) 52 :test? (lambda () t))) 53 54 (lsp-register-client 55 (make-lsp-client :new-connection (lsp-gdscript-tcp-connect-to-port) 56 :activation-fn (lsp-activate-on "gdscript") 57 :server-id 'gdscript)) 58 59 (lsp-consistency-check lsp-gdscript) 60 61 (provide 'lsp-gdscript) 62 ;;; lsp-gdscript.el ends here