diff --git a/mlir/utils/emacs/tblgen-lsp-client.el b/mlir/utils/emacs/tblgen-lsp-client.el new file mode 100644 index 0000000000000..6830e328eb8de --- /dev/null +++ b/mlir/utils/emacs/tblgen-lsp-client.el @@ -0,0 +1,45 @@ +;;; 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