mattt-b / odin-mode

Emacs major mode for the Odin programming language
28 stars 12 forks source link

How to add odin-mode with ols server lsp of Odin to EMACS with elpaca package manager in Linux. #13

Open joaocarvalhoopen opened 10 months ago

joaocarvalhoopen commented 10 months ago

Hello,

I would like to say here what I did in Linux (with the help of "the weak") to make this work with the elpaca package manager:

I hope that this will help others.

1º Download the OLS to the designated directory and compile it. 2º Download the odin-mode and copy to the designated directory.

3º Then in the init.el add the following:

(add-to-list 'load-path "/home/joaocarvalho/.config/emacs/elpaca/repos/odin-mode")
(add-to-list 'load-path "/home/joaocarvalho/odin/ols")

(require 'odin-mode)

; Odin
;; With odin-mode (https://github.com/mattt-b/odin-mode) and lsp-mode already added to your init.el of course!.
(setq-default lsp-auto-guess-root t) ;; if you work with Projectile/project.el this will help find the ols.json file.
(defvar lsp-language-id-configuration '((odin-mode . "odin")))

(use-package lsp-mode
  :hook ((python-mode . lsp)
         (javascript-mode . lsp)
         (odin-mode . lsp))
  :commands lsp
  :config
  (lsp-register-client
    (make-lsp-client :new-connection (lsp-stdio-connection "/home/joaocarvalho/odin/ols/ols")
                  :major-modes '(odin-mode)
                  :server-id 'ols
                  :multi-root t)) ;; This is just so lsp-mode sends the "workspaceFolders" param to the server.
  ; (setq lsp-prefer-flymake nil)) ; Or lsp-prefer-capf if you prefer LSP's completion over company-mode
) 

(use-package lsp-ui)

Best regards,

a3ru commented 3 months ago

image I'm using doom emacs bdw.

;; Odin LSP

(setq-default lsp-auto-guess-root t)
(defvar lsp-language-id-configuration '((odin-mode . "odin")))

  (use-package lsp-mode
    :hook ((python-mode . lsp)
           (javascript-mode . lsp)
           (odin-mode . lsp))
    :commands lsp
    :config
    (make-lsp-client :new-connection (lsp-stdio-connection "ols")
                     :major-modes '(odin-mode)
                     :server-id 'ols
                     :multi-root t))

It didn't work for me.