| ;;; tblgen-lsp-client.el --- Description -*- lexical-binding: t; -*- |
| ;; |
| ;; Package-Requires: ((emacs "24.3")) |
| ;; |
| ;; This file is not part of GNU Emacs. |
| ;; |
| ;;; Commentary: |
| ;; LSP client to use with `tablegen-mode' that uses `tblgen-lsp-server' or any |
| ;; user made compatible server. |
| ;; |
| ;; |
| ;;; Code: |
| (require 'lsp-mode) |
| |
| (defgroup lsp-tblgen nil |
| "LSP support for Tablegen." |
| :group 'lsp-mode |
| :link '(url-link "https://mlir.llvm.org/docs/Tools/MLIRLSP/")) |
| |
| (defcustom lsp-tblgen-server-executable "tblgen-lsp-server" |
| "Command to start the mlir language server." |
| :group 'lsp-tblgen |
| :risky t |
| :type 'file) |
| |
| |
| (defcustom lsp-tblgen-server-args "" |
| "Args of LSP client for TableGen, for example '--tablegen-compilation-database=.../build/tablegen_compile_commands.yml'" |
| :group 'lsp-tblgen |
| :risky t |
| :type 'file) |
| |
| (defun lsp-tblgen-setup () |
| "Setup the LSP client for TableGen." |
| (add-to-list 'lsp-language-id-configuration '(tablegen-mode . "tablegen")) |
| |
| (lsp-register-client |
| (make-lsp-client |
| :new-connection (lsp-stdio-connection (lambda () (cons lsp-tblgen-server-executable (split-string-shell-command lsp-tblgen-server-args)))) |
| :activation-fn (lsp-activate-on "tablegen") |
| :priority -1 |
| :server-id 'tblgen-lsp))) |
| |
| (provide 'tblgen-lsp) |
| ;;; tblgen-lsp-client.el ends here |