References

History

  • [2025-03-27 Thu 12:35]

DONE 11:18 ๋ฒ„๊ทธํ”ฝ์Šค ํ•„์š” - vertico childframe

๋ฌธ์ œ๊ฐœ์š”

์“ฐ๊ณ  ์žˆ๋Š” ๋…ธํŠธ์— ๊ธฐ์กด ๋…ธํŠธ๋ฅผ ์—ฐ๊ฒฐํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ํ‚ค๋ณด๋“œ๋กœ ๋ญ ํ•˜๋‚˜ ๋ˆ„๋ฅด๋ฉด ๋œ๋‹ค. ๋…ธํŠธ ๋ชฉ๋ก์ด ๋‚˜์˜จ๋‹ค.

๊ทผ๋ฐ ๋’ค์— ๋•์ง€๋•์ง€ ์ •๋ณด๊ฐ€ ๋ถ™์–ด ์žˆ๋‹ค. ์ง€์ €๋ถ„ํ•˜๋‹ค. ๋ถˆํŽธํ•˜๋‹ค. ํŒŒ์ผ๋ช…๋งŒ ๋‚˜์˜ค๋ฉด ๋œ๋‹ค. ํŒŒ์ผ๋ช…์— ๋‹ค ๋“ค์–ด ์žˆ์œผ๋‹ˆ๊นŒ.

๋Œ€๋žต ์ด ์ •๋„๋ฉด ์ถฉ๋ถ„ํ•˜๋‹ค.

๊ทธ๋Ÿผ์—๋„ ์ข€ ๋ฐ”๊พธ๊ณ  ์‹ถ๋‹ค. ํŠนํžˆ ๋…ธํŠธ ๋ชฉ๋ก์˜ ์ˆœ์„œ๋ฅผ ์–ด๋–ป๊ฒŒ? ์•ŒํŒŒ๋ฒณ ์ˆœ์œผ๋กœ? ํ•œ๊ธ€ ์ˆœ์œผ๋กœ? ์ตœ๊ทผ ์ˆ˜์ • ํ•œ ๋…ธํŠธ ์ˆœ์„œ๋กœ ์ •๋ ฌํ•˜๋Š” ๊ฒƒ์€? ์•„๋ฌด๋ ด ๋‹ค ๋œ๋‹ค. ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ์ ์šฉํ•˜๋ฉด ๋œ๋‹ค.

์Šคํฌ๋ฆฐ์ƒท

>

|2025-03-27 Thu 12:35|

@user ์กฐ์ง๋ชจ๋“œ ํŒŒ์ผ์„ ๊ฒ€์ƒ‰ ํ•  ๋•Œ, marginalia annotator category๋ฅผ ์ตœ๊ทผ ์ˆ˜์ •ํ•œ ํŒŒ์ผ ๋ชฉ๋ก ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ ํ•˜๋„๋ก ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์ค˜.

@assistant ์กฐ์ง๋ชจ๋“œ์—์„œ ํŠน์ • ์นดํ…Œ๊ณ ๋ฆฌ(marginalia annotator category)๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ตœ๊ทผ ์ˆ˜์ •ํ•œ ํŒŒ์ผ ๋ชฉ๋ก์„ ์ •๋ ฌํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” Emacs Lisp์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” ๊ทธ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

(defun org-sort-recently-modified-marginalia-annotator-category ()
  "Marginalia Annotator Category๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ตœ๊ทผ ์ˆ˜์ •ํ•œ ํŒŒ์ผ ๋ชฉ๋ก์„ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค."
  (interactive)
  (let ((files (org-agenda-files))
        (sorted-files nil))
    (dolist (file files)
      (with-current-buffer (find-file-noselect file)
        (let ((category (org-get-category))
              (modified-time (nth 5 (file-attributes file))))
          (when (string= category "Marginalia Annotator")
            (push (cons file modified-time) sorted-files)))))
    (setq sorted-files (sort sorted-files (lambda (a b) (time-less-p (cdr b) (cdr a)))))
    (mapc (lambda (file) (message "%s" (car file))) sorted-files)))

์ด ํ•จ์ˆ˜๋Š” org-agenda-files๋ฅผ ํ†ตํ•ด ํ˜„์žฌ ์กฐ์ง๋ชจ๋“œ์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ํŒŒ์ผ ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ๊ฐ ํŒŒ์ผ์˜ ์นดํ…Œ๊ณ ๋ฆฌ๊ฐ€ โ€œMarginalia Annotatorโ€์ธ ๊ฒฝ์šฐ, ํŒŒ์ผ์˜ ์ˆ˜์ • ์‹œ๊ฐ„์„ ๊ธฐ์ค€์œผ๋กœ ๋ชฉ๋ก์„ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค. ์ •๋ ฌ๋œ ํŒŒ์ผ ๋ชฉ๋ก์€ ๋ฉ”์‹œ์ง€๋กœ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.

์ด ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด Emacs์—์„œ M-x org-sort-recently-modified-marginalia-annotator-category๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ฃผ์˜: ์ด ํ•จ์ˆ˜๋Š” ํŒŒ์ผ์˜ ์นดํ…Œ๊ณ ๋ฆฌ๊ฐ€ ์ •ํ™•ํžˆ โ€œMarginalia Annotatorโ€์ธ ๊ฒฝ์šฐ์—๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์นดํ…Œ๊ณ ๋ฆฌ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ํ•จ์ˆ˜ ๋‚ด์˜ category ๋ฌธ์ž์—ด์„ ํ•ด๋‹น ์ด๋ฆ„์œผ๋กœ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@user

TODO 11:18 ๋ฒ„๊ทธํ”ฝ์Šค ํ•„์š” - vertico childframe

[2025-03-27 Thu 13:37] ์—ฌ๊ธฐ์— ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ์ •์˜ํ•ด์„œ ๋„ฃ์–ด์•ผ ํ•œ๋‹ค. ์ƒ˜ํ”Œ์€ ๋‹ค ๊ตฌํ–ˆ๋‹ค. ๊ทผ๋ฐ ๋„ฃ๊ณ  ๋ญ ํ•˜๋Š”๋ฐ 1์‹œ๊ฐ„ ๊ฑธ๋ฆด ๊ฒƒ ๊ฐ™๋‹ค. ์ž ์‹œ ๋Œ€๊ธฐ.

/home/junghan/doomemacs-git/modules/completion/vertico/config.el

๋‘ ์ด๋งฅ์Šค ์นดํ…Œ๊ณ ๋ฆฌ

(pushnew! marginalia-command-categories
            '(+default/find-file-under-here . file)
            '(doom/find-file-in-emacsd . project-file)
            '(doom/find-file-in-other-project . project-file)
            '(doom/find-file-in-private-config . file)
            '(doom/describe-active-minor-mode . minor-mode)
            '(flycheck-error-list-set-filter . builtin)
            '(persp-switch-to-buffer . buffer)
            '(projectile-find-file . project-file)
            '(projectile-recentf . project-file)
            '(projectile-switch-to-buffer . buffer)
            '(projectile-switch-project . project-file))

์—„์ฒญ๋‚œ ์ฃผ์ œ์ด๋ฉฐ ์ค‘์š”ํ•œ ์ฃผ์ œ๋‹ค

;;;; marginalia-file and vertico sort modified
 
(progn
  (defun gr/marginalia--annotate-local-file (cand)
    "Annotate local file CAND.
Removes modes, which Iโ€™ve never needed or wanted."
    (marginalia--in-minibuffer
      (when-let (attrs (ignore-errors
                         ;; may throw permission denied errors
                         (file-attributes (substitute-in-file-name
                                           (marginalia--full-candidate cand))
                                          'integer)))
        (marginalia--fields
         ((marginalia--file-size attrs) :face 'marginalia-size :width -7)
         ((marginalia--time (file-attribute-modification-time attrs))
          :face 'marginalia-date :width -12)
         ;; File owner at the right
         ((marginalia--file-owner attrs) :face 'marginalia-file-owner)))))
 
  (defun gr/marginalia-annotate-file (cand)
    "Annotate file CAND with its size, modification time and other attributes.
These annotations are skipped for remote paths."
    (if-let (remote (or (marginalia--remote-file-p cand)
                        (when-let (win (active-minibuffer-window))
                          (with-current-buffer (window-buffer win)
                            (marginalia--remote-file-p (minibuffer-contents-no-properties))))))
        (marginalia--fields (remote :format "*%s*" :face 'marginalia-documentation))
      (gr/marginalia--annotate-local-file cand)))
 
  ;; ์ˆœ์„œ๋ฅผ ๋ฐ”๊พธ๋ฉด ๋œ๋‹ค.
  (add-to-list 'marginalia-annotator-registry
               '(file gr/marginalia-annotate-file marginalia-annotate-file builtin none))
  )
 
 

vertico multiform

 
;;;; vertico sort modified
 
(progn
 
  ;; (setq vertico-multiform-categories nil)
  ;; (setq vertico-multiform-categories
  ;;       '(
  ;;         ;; (file (vertico-sort-function . sort-directories-first))
  ;;         ;; (file (vertico-sort-function . gr/sort-modified))
  ;;         (file (+vertico-transform-functions . +vertico-highlight-directory))
  ;;         ))
 
  ;; Sort directories before files
  (defun sort-directories-first (files)
    (setq files (vertico-sort-history-length-alpha files))
    (nconc (seq-filter (lambda (x) (string-suffix-p "/" x)) files)
           (seq-remove (lambda (x) (string-suffix-p "/" x)) files)))
 
  (defun gr/sort-modified (list)
    "Sort LIST of files for latest modified."
    (let ((ht (make-hash-table :test #'equal :size 5000)))
      (dolist (x list)
        (puthash x (file-attribute-modification-time (file-attributes x)) ht))
      (sort list
            (lambda (a b)
              (let ((one
                     (gethash a ht))
                    (two
                     (gethash b ht)))
                (time-less-p two one))))))
 
  (defun vertico-sort-modified ()
    (interactive)
    (setq-local vertico-sort-override-function
                (and (not vertico-sort-override-function)
                     #'gr/sort-modified)
                vertico--input t))
  (keymap-set vertico-map "M-," #'vertico-sort-modified)
  )