Skip to content

Commit

Permalink
Refactor mark ring functions.
Browse files Browse the repository at this point in the history
  • Loading branch information
manateelazycat committed May 4, 2024
1 parent 4e1823f commit 471012f
Showing 1 changed file with 20 additions and 12 deletions.
32 changes: 20 additions & 12 deletions lsp-bridge.el
Original file line number Diff line number Diff line change
Expand Up @@ -391,7 +391,7 @@ After set `lsp-bridge-completion-obey-trigger-characters-p' to nil, you need use
(defvar lsp-bridge-internal-process nil)
(defvar lsp-bridge-internal-process-prog nil)
(defvar lsp-bridge-internal-process-args nil)
(defvar position-before-jump nil)
(defvar lsp-bridge-position-before-jump nil)

(defcustom lsp-bridge-name "*lsp-bridge*"
"Name of LSP-Bridge buffer."
Expand Down Expand Up @@ -1776,9 +1776,9 @@ Off by default."
(interactive)
(cond
((acm-is-elisp-mode-p)
(lsp-bridge-define--jump-record-postion)
(lsp-bridge--record-mark-ring)
(acm-backend-elisp-find-def)
(setq-local lsp-bridge-mark-ring (append (list position-before-jump) mark-ring)))
(lsp-bridge--set-mark-ring-in-new-buffer))
(t
(setq-local lsp-bridge-jump-to-def-in-other-window nil)
(lsp-bridge-call-file-api "find_define" (lsp-bridge--position)))))
Expand All @@ -1787,9 +1787,9 @@ Off by default."
(interactive)
(cond
((acm-is-elisp-mode-p)
(lsp-bridge-define--jump-record-postion)
(lsp-bridge--record-mark-ring)
(acm-backend-elisp-find-def)
(setq-local lsp-bridge-mark-ring (append (list position-before-jump) mark-ring)))
(lsp-bridge--set-mark-ring-in-new-buffer))
(t
(setq-local lsp-bridge-jump-to-def-in-other-window t)
(lsp-bridge-call-file-api "find_define" (lsp-bridge--position)))))
Expand Down Expand Up @@ -1941,20 +1941,28 @@ Off by default."

(setq-local lsp-bridge-prohibit-completion t))

(defun lsp-bridge-define--jump-record-postion ()
(defun lsp-bridge--record-mark-ring ()
"For implement jump and return back, we need call `lsp-bridge--record-mark-ring' in old buffer before jump.
Then we need call `lsp-bridge--set-mark-ring-in-new-buffer' in new buffer after jump.
`lsp-bridge--record-mark-ring' and `lsp-bridge--set-mark-ring-in-new-buffer' functions must be used in pairs."
;; Record postion.
(let ((marker (set-marker (mark-marker) (point) (current-buffer))))
(setq position-before-jump (copy-marker marker)))
(setq lsp-bridge-position-before-jump (copy-marker marker)))
(setq mark-ring lsp-bridge-mark-ring))

(defun lsp-bridge--set-mark-ring-in-new-buffer ()
(setq-local lsp-bridge-mark-ring (append (list lsp-bridge-position-before-jump) mark-ring)))

(defun lsp-bridge-find-window-match-filename (filename)
(cl-dolist (window (window-list))
(when (string-equal filename (buffer-file-name (window-buffer window)))
(cl-return window))))

(defun lsp-bridge-define--jump (filename filehost position)
(let (position-before-jump)
(lsp-bridge-define--jump-record-postion)
(let (lsp-bridge-position-before-jump)
(lsp-bridge--record-mark-ring)

(if (or (string-equal filehost "") lsp-bridge-enable-with-tramp)
(progn
Expand All @@ -1972,7 +1980,7 @@ Off by default."
))

;; Init jump history in new buffer.
(setq-local lsp-bridge-mark-ring (append (list position-before-jump) mark-ring))
(lsp-bridge--set-mark-ring-in-new-buffer)

(lsp-bridge-define--jump-flash position))
(lsp-bridge-call-async "open_remote_file" (format "%s:%s" filehost filename) position))
Expand Down Expand Up @@ -2824,7 +2832,7 @@ SSH tramp file name is like /ssh:user@host#port:path"
(select-window lsp-bridge-remote-file-window)
(setq lsp-bridge-remote-file-window nil)))
(let ((buf-name (format "[LBR] %s" (file-name-nondirectory path))))
(lsp-bridge-define--jump-record-postion)
(lsp-bridge--record-mark-ring)

(with-current-buffer (get-buffer-create buf-name)
(text-mode)
Expand All @@ -2849,7 +2857,7 @@ SSH tramp file name is like /ssh:user@host#port:path"
(switch-to-buffer buf-name)

(unless (equal position (list :line 0 :character 0))
(setq-local lsp-bridge-mark-ring (append (list position-before-jump) mark-ring))
(lsp-bridge--set-mark-ring-in-new-buffer)

(lsp-bridge-define--jump-flash position))

Expand Down

0 comments on commit 471012f

Please sign in to comment.