[Mlir-commits] [mlir] 435a176 - [mlir] Add the Emacs support for MLIR's LSP server

Mehdi Amini llvmlistbot at llvm.org
Tue Apr 5 11:11:49 PDT 2022


Author: Mehdi Amini
Date: 2022-04-05T18:11:35Z
New Revision: 435a176db9cf7fe13f0f4e6d444a531622b90c9f

URL: https://github.com/llvm/llvm-project/commit/435a176db9cf7fe13f0f4e6d444a531622b90c9f
DIFF: https://github.com/llvm/llvm-project/commit/435a176db9cf7fe13f0f4e6d444a531622b90c9f.diff

LOG: [mlir] Add the Emacs support for MLIR's LSP server

In order to use the MLIR LSP server in Emacs, first the `mlir-lsp-client.el`
has to be loaded via elisp and then, one should call `lsp-mlir-setup` function
to setup the LSP client. After that simply calling the `lsp` function while
the `mlir-mode` is active with result in finding the language server (default
to `mlir-lsp-server`) via the `lsp-mlir-server-executable` customization variable
and connecting to it by the LSP library. Users who use MLIR's language server
library to create their own server can simply set the variable `lsp-mlir-server-executable`
to point to their own implementation executable.

Reviewed By: tschuett

Differential Revision: https://reviews.llvm.org/D123002

Added: 
    mlir/utils/emacs/mlir-lsp-client.el

Modified: 
    

Removed: 
    


################################################################################
diff  --git a/mlir/utils/emacs/mlir-lsp-client.el b/mlir/utils/emacs/mlir-lsp-client.el
new file mode 100644
index 0000000000000..b3b1e471f15ae
--- /dev/null
+++ b/mlir/utils/emacs/mlir-lsp-client.el
@@ -0,0 +1,51 @@
+;;; mlir-lsp-clinet.el --- LSP clinet for the MLIR.
+
+;; Copyright (C) 2022 The MLIR Authors.
+;;
+;; Licensed under the Apache License, Version 2.0 (the "License");
+;; you may not use this file except in compliance with the License.
+;; You may obtain a copy of the License at
+;;
+;;      http://www.apache.org/licenses/LICENSE-2.0
+;;
+;; Unless required by applicable law or agreed to in writing, software
+;; distributed under the License is distributed on an "AS IS" BASIS,
+;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+;; See the License for the specific language governing permissions and
+;; limitations under the License.
+
+;;; Commentary:
+
+;; LSP clinet to use with `mlir-mode' that uses `mlir-lsp-server' or any
+;; user made compatible server.
+
+;;; Code:
+(require 'lsp-mod)
+
+(defgroup lsp-mlir nil
+  "LSP support for MLIR."
+  :group 'lsp-mode
+  :link '(url-link "https://mlir.llvm.org/docs/Tools/MLIRLSP/"))
+
+
+(defcustom lsp-mlir-server-executable "mlir-lsp-server"
+  "Command to start the mlir language server."
+  :group 'lsp-mlir
+  :risky t
+  :type 'file)
+
+
+(defun lsp-mlir-setup ()
+  "Setup the LSP client for MLIR."
+  (add-to-list 'lsp-language-id-configuration '(mlir-mode . "mlir"))
+
+  (lsp-register-client
+   (make-lsp-client
+    :new-connection (lsp-stdio-connection (lambda () lsp-mlir-server-executable))
+    :activation-fn (lsp-activate-on "mlir")
+    :priority -1
+    :server-id 'mlir-lsp)))
+
+
+(provide 'mlir-lsp-client)
+;;; mlir-lsp-client.el ends here


        


More information about the Mlir-commits mailing list