Skip to content

Commit

Permalink
Expand macro
Browse files Browse the repository at this point in the history
  • Loading branch information
yyoncho committed Feb 11, 2024
1 parent ebe16fc commit b9ad057
Showing 1 changed file with 52 additions and 0 deletions.
52 changes: 52 additions & 0 deletions clients/lsp-nim.el
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,58 @@
:activation-fn (lsp-activate-on "nim")
:server-id 'nimlangserver))

(eval-and-compile
(lsp-interface (nim:Expand (:content :range) nil)))

(defun lsp-nim-expand-inline (&optional level)
(interactive "P")
(-let* ((params (plist-put (lsp--text-document-position-params) :level (or level 1)))
((&nim:Expand :content :range) (lsp-request "extension/macroExpand" params)))
(if (and content (not (equal content "")))
(lsp-save-restriction-and-excursion
(lsp--apply-text-edit (lsp-make-text-edit :new-text content :range range)))
(lsp--info "No expand at point."))))

(defun lsp-nim-expand (&optional level)
(interactive "P")
(let* ((params (plist-put (lsp--text-document-position-params)
:level (or level 0)))
(content (lsp-get (lsp-request "extension/macroExpand" params)
:content))
(buffer (current-buffer)))
(if (and content (not (equal content "")))
(with-current-buffer (get-buffer-create "*lsp-nim-expand*")
(with-help-window "*lsp-nim-expand*"
(setq-local lsp-nim--expand-params params)
(setq-local lsp-nim--expand-buffer buffer)
(insert (string-trim-right (lsp--render-string content "nim")))
(lsp-nim-expand-mode)))
(lsp--info "No expand at point."))))

(defun lsp-nim-expand-more ()
(interactive)
(let ((level (plist-get lsp-nim--expand-params :level)))
(with-current-buffer lsp-nim--expand-buffer
(lsp-nim-expand (cl-incf level)))))

(defun lsp-nim-expand-less ()
(interactive)
(let ((level (plist-get lsp-nim--expand-params :level)))
(with-current-buffer lsp-nim--expand-buffer
(lsp-nim-expand (max (cl-decf level) 0)))))

(defvar lsp-nim-expand-mode-map
(-doto (make-sparse-keymap)
(define-key (kbd "+") #'lsp-nim-expand-more)
(define-key (kbd "-") #'lsp-nim-expand-less))
"Keymap for `lsp-nim-expand-mode'.")

(define-minor-mode lsp-nim-expand-mode
"Mode used for expanding"
:keymap lsp-nim-expand-mode-map
:lighter ""
:group 'lsp-nim)

(lsp-consistency-check lsp-nim)

(provide 'lsp-nim)
Expand Down

0 comments on commit b9ad057

Please sign in to comment.