2023-04-08 16:53:12 +00:00
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
; generic functions
|
|
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
; open org agenda in top side window
|
2023-04-08 19:02:06 +00:00
|
|
|
; BUGGED AND UNUSED, agenda does NOT work properly in side windows
|
2023-04-08 16:53:12 +00:00
|
|
|
(defun kmn/org-agenda-on-top ()
|
|
|
|
(defvar parameters
|
|
|
|
'(window-parameters . ((no-other-window . t)
|
|
|
|
(no-delete-other-windows . t))))
|
|
|
|
|
|
|
|
(setq fit-window-to-buffer-horizontally t)
|
|
|
|
(setq window-resize-pixelwise t)
|
|
|
|
|
|
|
|
(interactive)
|
|
|
|
(display-buffer-in-side-window
|
|
|
|
(get-buffer "*Org Agenda*") `((side . top) (slot . 0)
|
|
|
|
(window-width . fit-window-to-buffer)
|
|
|
|
(preserve-size . (t . nil)) , parameters))
|
|
|
|
)
|
|
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
; open dired with default directory in left side window
|
2023-04-08 18:52:14 +00:00
|
|
|
(defun kmn/dired-directory-on-left (&optional dir_path)
|
2023-04-08 16:53:12 +00:00
|
|
|
(defvar parameters
|
|
|
|
'(window-parameters . ((no-other-window . t)
|
|
|
|
(no-delete-other-windows . t))))
|
|
|
|
|
|
|
|
(setq fit-window-to-buffer-horizontally t)
|
|
|
|
(setq window-resize-pixelwise t)
|
|
|
|
|
|
|
|
"Display `default-directory' in side window on left, hiding details."
|
|
|
|
(interactive)
|
2023-04-08 18:52:14 +00:00
|
|
|
(let ((buffer (dired-noselect (or dir_path (setq dir_path default-directory)))))
|
2023-04-08 16:53:12 +00:00
|
|
|
(with-current-buffer buffer (dired-hide-details-mode t))
|
|
|
|
(display-buffer-in-side-window
|
|
|
|
buffer `((side . left) (slot . -1)
|
|
|
|
(window-width . fit-window-to-buffer)
|
|
|
|
(preserve-size . (t . nil)) , parameters)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
2023-04-08 18:52:14 +00:00
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
; show scratch buffer
|
|
|
|
(defun kmn/show-buffer-scratch ()
|
|
|
|
(interactive)
|
|
|
|
; start with scratch buffer active
|
|
|
|
(switch-to-buffer (get-buffer "*scratch*"))
|
|
|
|
; default scratch buffer has 2 comments @ top of file, jump past them
|
|
|
|
(with-no-warnings (goto-line 3))
|
|
|
|
)
|
|
|
|
|
2023-04-08 16:53:12 +00:00
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
; quick reference notes as a pop up window
|
|
|
|
(defun kmn/popwin-quick-ref ()
|
|
|
|
(interactive)
|
|
|
|
(when (eq system-type 'windows-nt)
|
|
|
|
(popwin:find-file "~/org/_quick_reference.org"))
|
|
|
|
(when kmn/is-termux
|
|
|
|
(popwin:find-file "~/storage/shared/org/_quick_reference.org")))
|
|
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
; scratch buffer as a pop up window
|
|
|
|
(defun kmn/popwin-scratch ()
|
|
|
|
(interactive)
|
|
|
|
(popwin:display-buffer "*scratch*")
|
|
|
|
)
|
|
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
; modern home/end via C-a and C-e
|
|
|
|
(defun kmn/smart-beginning-of-line ()
|
|
|
|
"Move point to `beginning-of-line'. If repeat command it cycle
|
|
|
|
position between `back-to-indentation' and `beginning-of-line'."
|
|
|
|
(interactive "^")
|
|
|
|
(if (eq last-command 'my--smart-beginning-of-line)
|
|
|
|
(if (= (line-beginning-position) (point))
|
|
|
|
(back-to-indentation)
|
|
|
|
(beginning-of-line))
|
|
|
|
(back-to-indentation)))
|
|
|
|
|
|
|
|
(defun kmn/smart-end-of-line ()
|
|
|
|
"Move point to `end-of-line'. If repeat command it cycle
|
|
|
|
position between last non-whitespace and `end-of-line'."
|
|
|
|
(interactive "^")
|
|
|
|
(if (and (eq last-command 'kmn/my--smart-end-of-line)
|
|
|
|
(= (line-end-position) (point)))
|
|
|
|
(skip-syntax-backward " " (line-beginning-position))
|
|
|
|
(end-of-line)))
|
|
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
; function to kill all non special, non active buffers
|
|
|
|
(defun kmn/kill-other-buffers ()
|
2023-04-08 18:52:14 +00:00
|
|
|
"Kill all buffers but the current one. Don't mess with special buffers. Kill dired buffers"
|
2023-04-08 16:53:12 +00:00
|
|
|
(interactive)
|
2023-04-08 18:52:14 +00:00
|
|
|
; dired buffer cleanup
|
|
|
|
(mapc
|
|
|
|
(lambda (buffer)
|
|
|
|
(when (eq 'dired-mode (buffer-local-value 'major-mode buffer))
|
|
|
|
(kill-buffer buffer)))
|
|
|
|
(buffer-list))
|
|
|
|
; non special buffer cleanup
|
2023-04-08 16:53:12 +00:00
|
|
|
(dolist (buffer (buffer-list))
|
|
|
|
(unless (or (eql buffer (current-buffer)) (not (buffer-file-name buffer)))
|
|
|
|
(kill-buffer buffer))))
|
|
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
; find/replace all (interactive)
|
|
|
|
(defun kmn/query-replace-region-or-from-top ()
|
|
|
|
"If marked, query-replace for the region, else for the whole buffer (start from the top)"
|
|
|
|
(interactive)
|
|
|
|
(progn
|
|
|
|
(let ((orig-point (point)))
|
|
|
|
(if (use-region-p)
|
|
|
|
(call-interactively 'query-replace)
|
|
|
|
(save-excursion
|
|
|
|
(goto-char (point-min))
|
|
|
|
(call-interactively 'query-replace)))
|
|
|
|
(message "Back to old point.")
|
|
|
|
(goto-char orig-point))))
|