From 14284385b80153fc0c43210a0039c803fd941b23 Mon Sep 17 00:00:00 2001 From: amirhoshangi Date: Mon, 9 Dec 2019 19:25:04 +0330 Subject: [PATCH 1/7] start working on lsp-latex --- lib/extensions/latex.el | 5 +- lib/extensions/latex/init.el | 10 ++- lib/extensions/latex/lsp-latex.el | 134 ++++++++++++++++++++++++++++++ 3 files changed, 145 insertions(+), 4 deletions(-) create mode 100644 lib/extensions/latex/lsp-latex.el diff --git a/lib/extensions/latex.el b/lib/extensions/latex.el index d6de471..86905a3 100644 --- a/lib/extensions/latex.el +++ b/lib/extensions/latex.el @@ -3,7 +3,10 @@ (require 'extensions/latex/init) ;; Dependencies ---------------------------------- -(depends-on 'company-auctex) +;(depends-on 'lsp-mode) + +;TODO: add to MELPA and remove lsp-latex.el file beside init.el +;(with-ability lsp-latex (depends-on 'lsp-latex)) (defun latex-doc () "something fun") diff --git a/lib/extensions/latex/init.el b/lib/extensions/latex/init.el index 702fdae..675d18a 100644 --- a/lib/extensions/latex/init.el +++ b/lib/extensions/latex/init.el @@ -1,9 +1,13 @@ ;;;###autoload (defun extensions/latex-initialize () ;;LaTeX development initialization - (ability latex-ac (code-completion) + (ability lsp-latex ('lsp) "Latex autocompletion support." - (require 'company-auctex) - (add-hook 'latex-mode #'company-auctex-init))) + (setq lsp-latex-texlab-executable "/home/velorin/texlab-x86_64-linux/texlab") + (require 'extensions/latex/lsp-latex) + (with-eval-after-load "tex-mode" + (add-hook 'tex-mode-hook 'lsp) + (add-hook 'latex-mode-hook 'lsp)))) + (provide 'extensions/latex/init) diff --git a/lib/extensions/latex/lsp-latex.el b/lib/extensions/latex/lsp-latex.el new file mode 100644 index 0000000..c9647c9 --- /dev/null +++ b/lib/extensions/latex/lsp-latex.el @@ -0,0 +1,134 @@ +;;; lsp-latex.el --- lsp-mode client for LaTeX. -*- lexical-binding: t; -*- + +;; Copyright (C) 2019 ROCKTAKEY + +;; Author: ROCKTAKEY +;; Keywords: languages, extensions, tex + +;; Version: 1.0.0 + +;; Package-Requires: ((emacs "25.1") (lsp-mode "6.0")) + +;; 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 . + +;;; Commentary: + +;; + +;;; Code: +(require 'lsp-mode) + +(defgroup lsp-latex nil + "Language Server Protocol client for LaTeX." + :group 'lsp-mode) + + +;; Under texlab v1.0 + +(defcustom lsp-latex-java-executable "java" + "Executable command to run Java. +This is used with `lsp-latex-java-argument-list'." + :group 'lsp-latex + :type 'string) + +(defcustom lsp-latex-java-argument-list '("-jar") + "List of arguments passed to `lsp-latex-java-executable'." + :group 'lsp-latex + :risky t + :type '(repeat string)) + +(defcustom lsp-latex-texlab-jar-file 'search-from-exec-path + "File named \"texlab.jar\". +You can install it from https://github.com/latex-lsp/texlab/releases/tag/v0.4.1 . + +The value can be a string (path to \"texlab.jar\") or the symbol search-from-exec-path. See the docstring of `lsp-latex-get-texlab-jar-file'." + :group 'lsp-latex + :type '(choice string (const search-from-exec-path))) + +(defcustom lsp-latex-texlab-jar-argument-list '() + "List of arguments passed to `lsp-latex-texlab-jar-file'. " + :group 'lsp-latex + :type '(repeat string)) + +(defun lsp-latex-get-texlab-jar-file () + "Return the path to \"texlab.jar\". + +If `lsp-latex-texlab-jar-file' is a string, return it. +If `lsp-latex-texlab-jar-file' is the symbol search-from-exec-path, then search a file named \"texlab.jar\" from `exec-path'." + (cond + ((stringp lsp-latex-texlab-jar-file) + lsp-latex-texlab-jar-file) + ((eq lsp-latex-texlab-jar-file 'search-from-exec-path) + (locate-file "texlab.jar" exec-path)) + (t (error "invalid value of `lsp-latex-texlab-jar-file'")))) + + +;; texlab v1.0 or more + +(defcustom lsp-latex-texlab-executable + (cond ((eq system-type 'windows-nt) + "texlab.exe") + (t "texlab")) + "Exeucutable command to run texlab. +Runned with the arguments `lsp-latex-texlab-executable-argument-list'." + :group 'lsp-latex + :type 'string) + +(defcustom lsp-latex-texlab-executable-argument-list '() + "list of Arguments passed to `lsp-latex-texlab-executable'." + :group 'lsp-latex + :type '(repeat string)) + + + +(add-to-list 'lsp-language-id-configuration '(".*\\.tex$" . "latex")) + +(defun lsp-latex-new-connection () + "" + (let (jar-file) + (cond + ((locate-file lsp-latex-texlab-executable exec-path) + (cons lsp-latex-texlab-executable + lsp-latex-texlab-executable-argument-list)) + ((setq jar-file (lsp-latex-get-texlab-jar-file)) + (append + (cons + lsp-latex-java-executable + lsp-latex-java-argument-list) + (cons + jar-file + lsp-latex-texlab-jar-argument-list))) + (t + (error "No executable \"texlab\" file"))))) + +;; Copied from `lsp-clients--rust-window-progress' in `lsp-rust'. +(defun lsp-latex-window-progress (_workspace params) + "Progress report handling. +PARAMS progress report notification data." + ;; Minimal implementation - we could show the progress as well. + (lsp-log (gethash "title" params))) + +(lsp-register-client + (make-lsp-client :new-connection + (lsp-stdio-connection + #'lsp-latex-new-connection) + :major-modes '(tex-mode yatex-mode latex-mode) + :server-id 'texlab + :notification-handlers + (lsp-ht + ("window/progress" + 'lsp-latex-window-progress)))) + +(provide 'lsp-latex) +;;; lsp-latex.el ends here From db0e1cb83e5826057419e3554e4892656456893c Mon Sep 17 00:00:00 2001 From: Sameer Rahmani Date: Mon, 9 Dec 2019 16:20:10 +0000 Subject: [PATCH 2/7] lsp-latex has been fixed to provide the correct symbol --- lib/extensions/latex/lsp-latex.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/extensions/latex/lsp-latex.el b/lib/extensions/latex/lsp-latex.el index c9647c9..44c06b5 100644 --- a/lib/extensions/latex/lsp-latex.el +++ b/lib/extensions/latex/lsp-latex.el @@ -130,5 +130,5 @@ PARAMS progress report notification data." ("window/progress" 'lsp-latex-window-progress)))) -(provide 'lsp-latex) +(provide 'extensions/latex/lsp-latex) ;;; lsp-latex.el ends here From a0a6a1d3fda8cd962ca49f2c3d45503582273e28 Mon Sep 17 00:00:00 2001 From: Sameer Rahmani Date: Mon, 9 Dec 2019 16:27:48 +0000 Subject: [PATCH 3/7] Latex extension has been updated --- lib/extensions/latex/init.el | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/extensions/latex/init.el b/lib/extensions/latex/init.el index 675d18a..8058ff5 100644 --- a/lib/extensions/latex/init.el +++ b/lib/extensions/latex/init.el @@ -5,9 +5,8 @@ "Latex autocompletion support." (setq lsp-latex-texlab-executable "/home/velorin/texlab-x86_64-linux/texlab") (require 'extensions/latex/lsp-latex) - (with-eval-after-load "tex-mode" (add-hook 'tex-mode-hook 'lsp) - (add-hook 'latex-mode-hook 'lsp)))) + (add-hook 'latex-mode-hook 'lsp))) (provide 'extensions/latex/init) From 9d18cea68cf726d71a9baedfa329f11a36262cc7 Mon Sep 17 00:00:00 2001 From: amirhoshangi Date: Tue, 10 Dec 2019 00:06:47 +0330 Subject: [PATCH 4/7] change the path of texlab to /usr/bin/texlab --- lib/extensions/latex/init.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/extensions/latex/init.el b/lib/extensions/latex/init.el index 8058ff5..0c8a86b 100644 --- a/lib/extensions/latex/init.el +++ b/lib/extensions/latex/init.el @@ -3,7 +3,7 @@ ;;LaTeX development initialization (ability lsp-latex ('lsp) "Latex autocompletion support." - (setq lsp-latex-texlab-executable "/home/velorin/texlab-x86_64-linux/texlab") + (setq lsp-latex-texlab-executable "/usr/bin/texlab") (require 'extensions/latex/lsp-latex) (add-hook 'tex-mode-hook 'lsp) (add-hook 'latex-mode-hook 'lsp))) From 265fdcdc3ed60a19c635d921713e8b0be37d2c1b Mon Sep 17 00:00:00 2001 From: amirhoshangi Date: Tue, 10 Dec 2019 00:50:23 +0330 Subject: [PATCH 5/7] working on auto load of lsp-latex mode --- lib/extensions/latex/init.el | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/extensions/latex/init.el b/lib/extensions/latex/init.el index 0c8a86b..f6d72a6 100644 --- a/lib/extensions/latex/init.el +++ b/lib/extensions/latex/init.el @@ -1,12 +1,12 @@ ;;;###autoload (defun extensions/latex-initialize () - ;;LaTeX development initialization - (ability lsp-latex ('lsp) - "Latex autocompletion support." - (setq lsp-latex-texlab-executable "/usr/bin/texlab") - (require 'extensions/latex/lsp-latex) - (add-hook 'tex-mode-hook 'lsp) - (add-hook 'latex-mode-hook 'lsp))) - +"Latex autocompletion support." + (require 'extensions/latex/lsp-latex) + (with-eval-after-load "tex-mode" + (add-hook 'latex-mode-hook 'latex-mode-hook + '(lambda() + (ability lsp-latex ('lsp) + (setq lsp-latex-texlab-executable "/usr/bin/texlab") + (lsp)))))) (provide 'extensions/latex/init) From 0fddfe89478cebbc5d29021afe06f13563eafc9b Mon Sep 17 00:00:00 2001 From: Sameer Rahmani Date: Mon, 9 Dec 2019 21:23:35 +0000 Subject: [PATCH 6/7] Latex ability has been improved --- lib/extensions/latex/init.el | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/extensions/latex/init.el b/lib/extensions/latex/init.el index f6d72a6..0f50091 100644 --- a/lib/extensions/latex/init.el +++ b/lib/extensions/latex/init.el @@ -1,12 +1,12 @@ ;;;###autoload (defun extensions/latex-initialize () -"Latex autocompletion support." - (require 'extensions/latex/lsp-latex) - (with-eval-after-load "tex-mode" - (add-hook 'latex-mode-hook 'latex-mode-hook - '(lambda() - (ability lsp-latex ('lsp) - (setq lsp-latex-texlab-executable "/usr/bin/texlab") - (lsp)))))) + "Latex autocompletion support." + (ability lsp-latex ('lsp) + (with-eval-after-load "tex-mode" + (add-hook 'latex-mode-hook 'latex-mode-hook + '(lambda() + (require 'extensions/latex/lsp-latex) + (setq lsp-latex-texlab-executable "/usr/bin/texlab") + (lsp)))))) (provide 'extensions/latex/init) From f715398a21029ddee5e2a2aa3b4b2161300105e2 Mon Sep 17 00:00:00 2001 From: Sameer Rahmani Date: Mon, 9 Dec 2019 21:58:43 +0000 Subject: [PATCH 7/7] Latex ability has been improved --- lib/extensions/latex/init.el | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/extensions/latex/init.el b/lib/extensions/latex/init.el index 0f50091..8e4f1d6 100644 --- a/lib/extensions/latex/init.el +++ b/lib/extensions/latex/init.el @@ -1,12 +1,13 @@ +(defun latex-run-lsp () + (require 'extensions/latex/lsp-latex) + (setq lsp-latex-texlab-executable "texlab") + (lsp)) + + ;;;###autoload (defun extensions/latex-initialize () "Latex autocompletion support." (ability lsp-latex ('lsp) - (with-eval-after-load "tex-mode" - (add-hook 'latex-mode-hook 'latex-mode-hook - '(lambda() - (require 'extensions/latex/lsp-latex) - (setq lsp-latex-texlab-executable "/usr/bin/texlab") - (lsp)))))) + (add-hook 'tex-mode-hook 'latex-run-lsp))) (provide 'extensions/latex/init)