diff options
Diffstat (limited to 'elpa/lsp-mode-20220505.630/lsp-haxe.el')
-rw-r--r-- | elpa/lsp-mode-20220505.630/lsp-haxe.el | 226 |
1 files changed, 226 insertions, 0 deletions
diff --git a/elpa/lsp-mode-20220505.630/lsp-haxe.el b/elpa/lsp-mode-20220505.630/lsp-haxe.el new file mode 100644 index 0000000..62707be --- /dev/null +++ b/elpa/lsp-mode-20220505.630/lsp-haxe.el @@ -0,0 +1,226 @@ +;;; lsp-haxe.el --- Haxe Client settings -*- lexical-binding: t; -*- + +;; Copyright (C) 2019 Yannik Böttcher + +;; Author: Yannik Böttcher <yannikboettcher@outlook.de> +;; Keywords: + +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see <https://www.gnu.org/licenses/>. + +;;; Commentary: + +;; lsp-haxe client + +;;; Code: + + +;; adapted from lsp-clangd configuration +(require 'lsp-protocol) +(require 'lsp-mode) + +(defgroup lsp-haxe nil + "LSP support for Haxe using the language server provided by vshaxe" + :group 'lsp-mode + :link '(url-link "https://github.com/vshaxe/vshaxe")) + + +;; Haxe ls is executed via node +(defcustom lsp-clients--haxe-executable "node" + "Haxe ls is executed via node." + :group 'lsp-haxe + :risky t + :type 'file) + +;; The server.js is being passed to node as an argument +(defcustom lsp-clients--haxe-server-path (expand-file-name "~/.haxe-language-server/bin/server.js") + "The path to the server.js file." + :group 'lsp-haxe + :risky t + :type 'file) + +;; Build the actual Haxe ls command. +(defun lsp-clients--haxe-command () + "Haxe ls startup command." + `(,lsp-clients--haxe-executable ,lsp-clients--haxe-server-path)) + +;; https://github.com/yyoncho/lsp-mode/commit/72186e1adc089d772c87ed8f287eb3333b66bfa7 +;; This is to force the client to send a didChangeConfiguration Message. Without this, the server won't start, https://github.com/vshaxe/vshaxe/issues/328#issuecomment-471809093 +(defcustom lsp-clients--haxe-settings (list :haxe.executable "haxe") + "Lsp clients configuration settings." + :group 'lsp-haxe + :risky t + :type '(repeat string)) + +;; The build spec for the project. +(defcustom lsp-haxe-hxml "build.hxml" + "The compile file for the haxe project." + :type 'file + :group 'lsp-haxe + :package-version '(lsp-mode . "7.0")) + +;; https://github.com/emacs-lsp/lsp-mode/blob/150a933694349df960dc8fd7a15e04f5727e6433/lsp-rust.el#L251 +(lsp-defun lsp-clients--haxe-processStart (_workspace (&haxe:ProcessStartNotification :title)) + "Handle processStart notification. Just logs PARAMS." + (lsp-log title)) + +(defcustom lsp-haxe-executable "haxe" + nil + :type 'file + :group 'lsp-haxe) + +(defcustom lsp-haxe-configurations nil + nil + :type '(repeat string) + :group 'lsp-haxe) + +(defcustom lsp-haxe-display-configurations nil + nil + :type '(repeat string) + :group 'lsp-haxe) + +(defcustom lsp-haxe-display-server nil + nil + :type 'string + :group 'lsp-haxe) + +(defcustom lsp-haxe-display-port "auto" + nil + :type 'number + :group 'lsp-haxe) + +(defcustom lsp-haxe-enable-compilation-server t + nil + :type 'boolean + :group 'lsp-haxe) + +(defcustom lsp-haxe-task-presentation + '((echo . t) + (reveal . "always") + (focus . :json-false) + (panel . "shared") + (showReuseMessage . t) + (clear . :json-false)) + nil + :type 'plist + :group 'lsp-haxe) + +(defcustom lsp-haxe-enable-code-lens t + nil + :type 'boolean + :group 'lsp-haxe) + +(defcustom lsp-haxe-enable-diagnostics t + nil + :type 'boolean + :group 'lsp-haxe) + +(defcustom lsp-haxe-enable-server-view nil + nil + :type 'boolean + :group 'lsp-haxe) + +(defcustom lsp-haxe-enable-methods-view nil + nil + :type 'boolean + :group 'lsp-haxe) + +(defcustom lsp-haxe-enable-signature-help-documentation t + nil + :type 'boolean + :group 'lsp-haxe) + +(defcustom lsp-haxe-diagnostics-path-filter "${workspaceRoot}" + nil + :type 'string + :group 'lsp-haxe) + +(defcustom lsp-haxe-build-completion-cache t + nil + :type 'boolean + :group 'lsp-haxe) + +(defcustom lsp-haxe-enable-completion-cache-warning t + nil + :type 'boolean + :group 'lsp-haxe) + +(defcustom lsp-haxe-code-generation nil + nil + :type 'string + :group 'lsp-haxe) + +(defcustom lsp-haxe-exclude ["zpp_nape"] + nil + :type '(repeat string) + :group 'lsp-haxe) + +(defcustom lsp-haxe-postfix-completion nil + nil + :type 'string + :group 'lsp-haxe) + +(lsp-register-custom-settings + '(("haxe.hxml" lsp-haxe-hxml) + ("haxe.postfixCompletion" lsp-haxe-postfix-completion) + ("haxe.exclude" lsp-haxe-exclude) + ("haxe.codeGeneration" lsp-haxe-code-generation) + ("haxe.enableCompletionCacheWarning" lsp-haxe-enable-completion-cache-warning t) + ("haxe.buildCompletionCache" lsp-haxe-build-completion-cache t) + ("haxe.diagnosticsPathFilter" lsp-haxe-diagnostics-path-filter) + ("haxe.enableSignatureHelpDocumentation" lsp-haxe-enable-signature-help-documentation t) + ("haxe.enableMethodsView" lsp-haxe-enable-methods-view t) + ("haxe.enableServerView" lsp-haxe-enable-server-view t) + ("haxe.enableDiagnostics" lsp-haxe-enable-diagnostics t) + ("haxe.enableCodeLens" lsp-haxe-enable-code-lens t) + ("haxe.taskPresentation" lsp-haxe-task-presentation) + ("haxe.enableCompilationServer" lsp-haxe-enable-compilation-server t) + ("haxe.displayPort" lsp-haxe-display-port) + ("haxe.displayServer" lsp-haxe-display-server) + ("haxe.displayConfigurations" lsp-haxe-display-configurations) + ("haxe.configurations" lsp-haxe-configurations) + ("haxe.executable" lsp-haxe-executable))) + +(lsp-register-client + (make-lsp-client + :new-connection (lsp-stdio-connection #'lsp-clients--haxe-command) + :major-modes '(haxe-mode) ; force didChangeConfiguration message + :initialized-fn + (lambda (workspace) + (with-lsp-workspace workspace + (lsp--set-configuration (lsp-configuration-section "haxe")))) + :priority -1 + :server-id 'haxe + :initialization-options + (lambda () + `(:sendMethodResults t + :haxelibConfig (:executable "haxelib") + :displayServerConfig + ( :print (:reusing :json-false :completion :json-false) + :arguments [] + :env nil + :path "haxe") + :displayArguments [,lsp-haxe-hxml])) + :notification-handlers + (lsp-ht ("haxe/progressStart" 'lsp-clients--haxe-processStart) + ("haxe/progressStop" 'ignore) + ("haxe/didDetectOldPreview" 'ignore) + ("haxe/didChangeDisplayPort" 'ignore) + ("haxe/didRunHaxeMethod" 'ignore) + ("haxe/didChangeRequestQueue" 'ignore) + ("haxe/cacheBuildFailed" 'ignore)))) + +(lsp-consistency-check lsp-haxe) + +(provide 'lsp-haxe) +;;; lsp-haxe.el ends here |