akmeow
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
;;; system.el --- System integration functions -*- lexical-binding: t; -*-
|
||||
(defun my/system-cut (beg end)
|
||||
"Cut region directly to system clipboard, bypassing the kill ring."
|
||||
(interactive "r")
|
||||
(my/system-copy beg end)
|
||||
;; delete-region deletes without adding to the kill ring
|
||||
(delete-region beg end))
|
||||
|
||||
(defun my/system-copy (beg end)
|
||||
"Pure copy: Sends the active region directly to the system clipboard.
|
||||
Absolutely zero interaction with the Emacs kill ring."
|
||||
(interactive "r")
|
||||
(unless (region-active-p)
|
||||
(user-error "No active region to copy"))
|
||||
(let ((text (buffer-substring-no-properties beg end)))
|
||||
(if (display-graphic-p)
|
||||
;; Low-level GUI primitive: talks directly to the OS clipboard manager
|
||||
(gui-backend-set-selection 'CLIPBOARD text)
|
||||
;; TUI Fallback via Clipetty
|
||||
(if (fboundp 'clipetty-set-selection)
|
||||
(clipetty-set-selection text)
|
||||
(error "Clipetty not loaded")))
|
||||
(deactivate-mark)
|
||||
(message "Copied to system clipboard (pure)")))
|
||||
|
||||
(defun my/system-paste ()
|
||||
"Pure paste: Inserts text directly from the system clipboard.
|
||||
Never falls back to or checks the Emacs kill ring."
|
||||
(interactive)
|
||||
(if (display-graphic-p)
|
||||
(let ((text (or (gui-backend-get-selection 'CLIPBOARD 'STRING)
|
||||
(gui-backend-get-selection 'CLIPBOARD 'UTF8_STRING)
|
||||
(gui-backend-get-selection 'PRIMARY 'STRING)
|
||||
;; Wayland/Dolphin fallback from previous fix
|
||||
(when (executable-find "wl-paste")
|
||||
(let ((val (shell-command-to-string "wl-paste -n -t text/plain")))
|
||||
(unless (string-empty-p val) val))))))
|
||||
(if text
|
||||
(insert text)
|
||||
(user-error "System clipboard is empty")))
|
||||
;; TUI Fallback
|
||||
(message "In a terminal, use your terminal emulator's native paste shortcut (e.g., Ctrl-Shift-V).")))
|
||||
|
||||
(defun my/vterm-sync-here ()
|
||||
"Switch to vterm and instantly 'cd' to the current buffer's directory."
|
||||
(interactive)
|
||||
(let ((cwd default-directory))
|
||||
(vterm-toggle)
|
||||
(vterm-send-string (format "cd %s" (shell-quote-argument cwd)))
|
||||
(vterm-send-return)))
|
||||
|
||||
(provide 'system)
|
||||
;;unqualified-search-registries = ["docker.io"]
|
||||
Reference in New Issue
Block a user