Skip to content

Commit ab682a5

Browse files
committed
Add cquery-tree-yank-path and fix cquery-tree-press
1 parent a3244fe commit ab682a5

File tree

1 file changed

+36
-24
lines changed

1 file changed

+36
-24
lines changed

cquery-tree.el

Lines changed: 36 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -261,8 +261,9 @@
261261
"Jump to the location."
262262
(interactive)
263263
(-when-let* ((workspace lsp--cur-workspace)
264-
(node (cquery-tree--node-at-point)))
265-
(with-selected-window cquery-tree--origin-win
264+
(node (cquery-tree--node-at-point))
265+
(win (get-buffer-window cquery-tree--origin-buffer)))
266+
(with-selected-window win
266267
(when split-fn
267268
(funcall split-fn))
268269
(find-file (car (cquery-tree-node-location node)))
@@ -280,19 +281,22 @@
280281
"Switch window and jump to the location."
281282
(interactive)
282283
(cquery-tree-press)
283-
(select-window cquery-tree--origin-win))
284+
(when-let* ((win (get-buffer-window cquery-tree--origin-buffer)))
285+
(select-window win)))
284286

285287
(defun cquery-tree-press-and-horizontal-split ()
286288
"Split window horizontally and jump to the location."
287289
(interactive)
288290
(cquery-tree-press #'split-window-horizontally)
289-
(select-window cquery-tree--origin-win))
291+
(when-let* ((win (get-buffer-window cquery-tree--origin-buffer)))
292+
(select-window win)))
290293

291294
(defun cquery-tree-press-and-vertical-split ()
292295
"Split window vertically and jump to the location."
293296
(interactive)
294297
(cquery-tree-press #'split-window-vertically)
295-
(select-window cquery-tree--origin-win))
298+
(when-let* ((win (get-buffer-window cquery-tree--origin-buffer)))
299+
(select-window win)))
296300

297301
(defun cquery-tree-next-line (&optional arg)
298302
(interactive "p")
@@ -343,36 +347,44 @@
343347
(defun cquery-tree-quit ()
344348
(interactive)
345349
(when-let* ((buf cquery-tree--origin-buffer)
346-
(opoint cquery-tree--opoint))
350+
(opoint cquery-tree--opoint)
351+
(_ (window-live-p cquery-tree--origin-win)))
347352
(with-selected-window cquery-tree--origin-win
348353
(switch-to-buffer buf)
349354
(goto-char opoint)))
350355
(quit-window))
351356

357+
(defun cquery-tree-yank-path ()
358+
(interactive)
359+
(--if-let (-some-> (cquery-tree--node-at-point) (cquery-tree-node-location) (car) (kill-new))
360+
(message (format "Yanked path: %s" (propertize it 'face 'font-lock-string-face)))
361+
(user-error "There is nothing to copy here")))
362+
352363
;; ---------------------------------------------------------------------
353364
;; Mode
354365
;; ---------------------------------------------------------------------
355366

356367
(defvar cquery-tree-mode-map
357368
(let ((map (make-sparse-keymap)))
358-
(define-key map (kbd "<tab>") 'cquery-tree-toggle-expand)
359-
(define-key map [mouse-1] 'cquery-tree-toggle-expand)
360-
(define-key map (kbd "c") 'cquery-tree-toggle-calling)
361-
(define-key map (kbd "f") 'cquery-tree-press)
362-
(define-key map (kbd "h") 'cquery-tree-collapse-or-select-parent)
363-
(define-key map (kbd "j") 'cquery-tree-next-line)
364-
(define-key map (kbd "k") 'cquery-tree-prev-line)
365-
(define-key map (kbd "J") 'cquery-tree-next-sibling)
366-
(define-key map (kbd "K") 'cquery-tree-prev-sibling)
367-
(define-key map (kbd "l") 'cquery-tree-expand-or-set-root)
368-
(define-key map (kbd "oh") 'cquery-tree-press-and-horizontal-split)
369-
(define-key map (kbd "ov") 'cquery-tree-press-and-vertical-split)
370-
(define-key map (kbd "oo") 'cquery-tree-press-and-switch)
371-
(define-key map (kbd "q") 'cquery-tree-quit)
372-
(define-key map (kbd "Q") 'quit-window)
373-
(define-key map (kbd "RET") 'cquery-tree-press-and-switch)
374-
(define-key map (kbd "<left>") 'cquery-tree-collapse-or-select-parent)
375-
(define-key map (kbd "<right>") 'cquery-tree-expand-or-set-root)
369+
(define-key map (kbd "<tab>") #'cquery-tree-toggle-expand)
370+
(define-key map [mouse-1] #'cquery-tree-toggle-expand)
371+
(define-key map (kbd "c") #'cquery-tree-toggle-calling)
372+
(define-key map (kbd "f") #'cquery-tree-press)
373+
(define-key map (kbd "h") #'cquery-tree-collapse-or-select-parent)
374+
(define-key map (kbd "j") #'cquery-tree-next-line)
375+
(define-key map (kbd "k") #'cquery-tree-prev-line)
376+
(define-key map (kbd "J") #'cquery-tree-next-sibling)
377+
(define-key map (kbd "K") #'cquery-tree-prev-sibling)
378+
(define-key map (kbd "l") #'cquery-tree-expand-or-set-root)
379+
(define-key map (kbd "oh") #'cquery-tree-press-and-horizontal-split)
380+
(define-key map (kbd "ov") #'cquery-tree-press-and-vertical-split)
381+
(define-key map (kbd "oo") #'cquery-tree-press-and-switch)
382+
(define-key map (kbd "q") #'cquery-tree-quit)
383+
(define-key map (kbd "Q") #'quit-window)
384+
(define-key map (kbd "yy") #'cquery-tree-yank-path)
385+
(define-key map (kbd "RET") #'cquery-tree-press-and-switch)
386+
(define-key map (kbd "<left>") #'cquery-tree-collapse-or-select-parent)
387+
(define-key map (kbd "<right>") #'cquery-tree-expand-or-set-root)
376388
map)
377389
"Keymap for `cquery-tree-mode'.")
378390

0 commit comments

Comments
 (0)