Compare commits

...

10 commits

Author SHA1 Message Date
Benson Chu
d9136aaf52 Let all of these be dedicated 2026-01-27 14:53:39 -06:00
Benson Chu
35b6a3e108 Track what date project is created 2026-01-27 14:51:01 -06:00
Benson Chu
eafeaccf5c I forgot why I did this refactor 2026-01-27 14:50:41 -06:00
Benson Chu
781190964a Return whether the tab was really closed 2026-01-27 14:50:13 -06:00
Benson Chu
56ff85b49a HOLD are similar to invisible 2026-01-27 14:49:51 -06:00
Benson Chu
45d329978e Oh, this should've been committed long ago 2026-01-27 14:49:00 -06:00
Benson Chu
ee7a2a8799 Gosh, get out of my way! 2026-01-27 14:48:00 -06:00
Benson Chu
69afeba124 Scroll only once 2025-11-24 15:50:08 -06:00
Benson Chu
98fcdff36e I want olivetti in conf-mode too 2025-11-20 14:39:22 -06:00
Benson Chu
115b3f977d Check for which branch naming style 2025-11-04 10:21:24 -06:00
9 changed files with 87 additions and 25 deletions

View file

@ -37,7 +37,8 @@
display-buffer-in-side-window
(side . right)
(slot . 1)
(window-parameters . ((no-delete-other-windows . t)))
(window-parameters . ((no-delete-other-windows . t)
(dedicated . t)))
(window-width . 80)))
(add-to-list 'display-buffer-alist
@ -45,7 +46,8 @@
display-buffer-in-side-window
(side . right)
(slot . 2)
(window-parameters . ((no-delete-other-windows . t)))
(window-parameters . ((no-delete-other-windows . t)
(dedicated . t)))
(window-width . 100)))
;; TODO: This should be fixed in future versions of emacs
@ -60,7 +62,8 @@
display-buffer-in-side-window
(side . right)
(slot . 3)
(window-parameters . ((no-delete-other-windows . t)))
(window-parameters . ((no-delete-other-windows . t)
(dedicated . t)))
(window-width . 100)))
(add-to-list 'display-buffer-alist
@ -68,7 +71,8 @@
display-buffer-in-side-window
(side . right)
(slot . 4)
(window-parameters . ((no-delete-other-windows . t)))
(window-parameters . ((no-delete-other-windows . t)
(dedicated . t)))
(window-width . 80)))
(add-to-list 'display-buffer-alist

View file

@ -319,6 +319,9 @@
:after
'update-window-third-height)
;; (global-set-key (kbd "C-V") #'(lambda () (interactive "") (scroll-down-command 1)))
;; (global-set-key (kbd "M-V") #'(lambda () (interactive) (scroll-up-command 1)))
;; Word navigation
(global-set-key (kbd "M-f") 'forward-to-word)
(global-set-key (kbd "M-F") 'forward-word)
@ -974,6 +977,7 @@
(use-package olivetti
:commands (olivetti-mode)
:hook ((prog-mode . olivetti-mode)
(conf-mode . olivetti-mode)
(org-mode . olivetti-mode)
(dired-mode . olivetti-mode)
(org-agenda-mode . olivetti-mode)

View file

@ -28,6 +28,7 @@
(interactive (list (lls/conf-get 'root-dir)))
(when (not (require 'my-tablegen-mode nil t))
(load-file (expand-file-name "llvm/utils/emacs/tablegen-mode.el" root-dir)))
(define-key tablegen-mode-map (kbd "M-s") nil)
(when (not (require 'my-llvm-mode nil t))
(load-file (expand-file-name "llvm/utils/emacs/llvm-mode.el" root-dir)))
(load-file (expand-file-name "llvm/utils/emacs/emacs.el" root-dir))

View file

@ -58,13 +58,22 @@
(defun magit-show-ancestor-merges (revs &optional args files)
(interactive (cons (magit-read-starting-point "Ancestry path for: ")
(magit-diff-arguments)))
(let ((flags "--merges --oneline --reverse --ancestry-path"))
(let ((flags "--merges --oneline --reverse --ancestry-path")
(tip (->>
(magit-list-remote-branches)
(remove-if-not
(lambda (x)
(string-match-p "origin/master\\|main" x)))
(car))))
(async-shell-command
(shell-and
(format "git --no-pager log --oneline %s~1..%s"
revs revs)
(format "git --no-pager log %s %s..origin/main | cut -c -70 | head -n 10"
flags revs)))))
(format "git --no-pager log %s %s..%s -- | cut -c -70 | head -n 10"
flags revs
(progn
(string-match "^refs/remotes/\\(.*\\)" tip)
(match-string 1 tip)))))))
(transient-append-suffix 'magit-worktree "b"
'("B" "[async] worktree" my/magit-worktree-checkout))

View file

@ -49,6 +49,36 @@
(defvar mvt/regex
(rx (and "*" (group (+ nonl)) "-vterm<" (group (+ digit)) ">" "*")))
;; Maybe instead of this, we should do an add-buffer instead
(defun mvt/find-available-name (tab-name)
(let ((mvti (gethash (intern tab-name) mvt/info))
final-name)
(while (not final-name)
(let* ((index (or (pop (slot-value mvti 'free-numbers))
(cl-incf (slot-value mvti 'max-number))))
(name (mvt/format-buffer-name tab-name index)))
(when (not (get-buffer name))
(setq final-name name))))
final-name))
(defun mvt/add-buffer (tab-name vterm-buffer)
(interactive
(list (alist-get 'name (tab-bar--current-tab))
(vterm--internal #'ignore)))
(let* ((mvti (gethash (intern tab-name) mvt/info))
(name (mvt/find-available-name tab-name))
vterm-name)
(with-current-buffer vterm-buffer
(mvt/minor-mode)
(rename-buffer name))
(-->
vterm-buffer
(setf (slot-value mvti 'recent-buffer)
it)
(if (called-interactively-p)
(switch-to-buffer it)
it))))
(defun mvt/create-buffer (tab-name)
(interactive
(list (alist-get 'name (tab-bar--current-tab))))
@ -70,14 +100,23 @@
it))))
(defun mvt/get-all-buffers (tab-name)
(->> (buffer-list)
(--> (buffer-list)
(remove-if-not
(lambda (buff)
(with-current-buffer buff
(and (eq major-mode 'vterm-mode)
(string-match-p
(rx "*" (literal tab-name) "-vterm<" (+ digit) ">*")
(buffer-name buff))))))))
(buffer-name buff)))))
it)
(sort
it
:key
(lambda (buff)
(let ((name (buffer-name buff)))
(string-match (rx "*" (literal tab-name) "-vterm<" (group (+ digit)) ">*")
name)
(string-to-number (match-string 1 name)))))))
;; (defun mvt/get-all-buffers (tab-name)
;; (let* ((tab-sym (intern tab-name))
@ -147,7 +186,7 @@
(defvar mvt/minor-mode-map
(let ((map (make-sparse-keymap)))
(define-key map (kbd "M-n") #'mvt/next)
(define-key map (kbd "M-c") #'mvt/create-buffer)
(define-key map (kbd "M-c") #'mvt/add-buffer)
map))
(define-minor-mode mvt/minor-mode ""
@ -168,7 +207,7 @@
(buffer-live-p buffer)
(not arg)
buffer)
(mvt/create-buffer tab-name))))))
(call-interactively #'mvt/add-buffer))))))
(defun mvt/find-all-terms-in-tab (tab-name)
(remove-if-not #'(lambda (b)
@ -198,7 +237,7 @@
(defun mvt/close-tab (orig)
(let ((current-tab-name (alist-get 'name (tab-bar--current-tab))))
(when (funcall orig)
(dolist (b (mvt/find-all-terms-in-tab old-tab-name))
(dolist (b (mvt/find-all-terms-in-tab current-tab-name))
(with-current-buffer b
(vterm-send-C-d))))))

View file

@ -51,7 +51,7 @@
;; All todo children are done? Stuck!
(not (olc/any-todo-children?
(not (member (cdr (opr/get-type-and-state))
'(done wait invis))))))
'(done wait invis hold))))))
'stuck
'active)))

View file

@ -62,13 +62,17 @@
(let ((type (opr/get-type)))
(pcase type
('project
(when (eq 'stuck (opr/type-of-project))
(pcase (opr/type-of-project)
('stuck
(let ((res (-> (point)
(org-element-headline-parser)
(org-ql--add-markers)
(my/get-project-stuck-displayables)
(reverse))))
(setf display (append res display)))))
(setf display (append res display))))
('hold
(push (org-ql--add-markers (org-element-headline-parser (point)))
nothing))))
('task
(cond
((eq 'stuck (opr/type-of-task))

View file

@ -74,9 +74,10 @@
(defun close-tab-switch ()
(interactive)
(let ((old-name (alist-get 'name (tab-bar--current-tab))))
(when (y-or-n-p (format "Close tab \"%s\"? "
(aprog1 (y-or-n-p (format "Close tab \"%s\"? "
old-name))
(tab-bar-close-tab))))
(when it
(tab-bar-close-tab)))))
(defun tab-bar-report ()
(interactive)

View file

@ -540,11 +540,11 @@
(defvar my/project-templates
'(("p" "project" plain ""
:if-new (file+head "%<%Y%m%d%H%M%S>-${slug}.org"
"#+title: ${title}: %^{Description}\n#+category: ${title}\n#+filetags: Project active")
"#+title: ${title}: %^{Description}\n#+category: ${title}\n#+date: %t\n#+filetags: Project active")
:unnarrowed t)
("s" "sandbox" plain ""
:if-new (file+head "%<%Y%m%d%H%M%S>-${slug}.org"
"#+title: ${title}: %^{Description}\n#+category: ${title}\n#+filetags: Project active\n#+PROPERTY: header-args:bash :dir /scratch/benson/sandbox/${title} :results output verbatim :exports results :noweb yes"))))
"#+title: ${title}: %^{Description}\n#+category: ${title}\n#+date: %t\n#+filetags: Project active\n#+PROPERTY: header-args:bash :dir /scratch/benson/sandbox/${title} :results output verbatim :exports results :noweb yes"))))
(defun my/org-roam-find-projects ()
(interactive)