[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Bring up a screen giving option to open a series of orgmode files
From: |
Jean Louis |
Subject: |
Re: Bring up a screen giving option to open a series of orgmode files |
Date: |
Tue, 24 Nov 2020 00:04:06 +0300 |
User-agent: |
Mutt/2.0 (3d08634) (2020-11-07) |
* Diego Zamboni <diego@zzamboni.org> [2020-11-23 12:53]:
> Hi Gerardo,
>
> Apart from what others have suggested, what you can do if you have a fixed
> list of files you want to quickly access, you could manually define
> keybindings for them. I have four main files where I capture things, so I
> define a submenu that allows me to access them quickly:
>
> (note: I got this idea originally from Sacha Chua's
> https://sachachua.com/blog/2015/02/learn-take-notes-efficiently-org-mode/)
>
> First, I define a helper function to define keybindings that open files.
> Note that this requires lexical binding to be enabled, so that the
> =lambda= creates a closure, otherwise the keybindings don't work.
>
> #+begin_src emacs-lisp
> (defun zz/add-file-keybinding (key file &optional desc)
> (let ((key key)
> (file file)
> (desc desc))
> (map! :desc (or desc file)
> key
> (lambda () (interactive) (find-file file)))))
> #+end_src
>
> (note #2: the map! macro is Doom Emacs-specific, should be replaced with
> `bind-key` or equivalent if you are not using Doom)
>
> Now I define keybindings to access my commonly-used org files.
>
> #+begin_src emacs-lisp
> (zz/add-file-keybinding "C-c z w" "~/Work/work.org.gpg" "work.org")
> (zz/add-file-keybinding "C-c z i" "~/org/ideas.org" "ideas.org")
> (zz/add-file-keybinding "C-c z p" "~/org/projects.org" "projects.org")
> (zz/add-file-keybinding "C-c z d" "~/org/diary.org" "diary.org")
> #+end_src
Another idea how to quickly access those files could be with
completion function which could also be bound to a key.
(defun my-org-files ()
(interactive)
(let* ((list '(("Work" . "~/Work/work.org.gpg")
("Ideas" . "~/org/ideas.org")
("Projects" . "~/org/projects.org")
("Diary" . "~/org/diary.org")))
(completion-ignore-case t)
(file (completing-read "My files: " list))
(file (cdr (assoc file list))))
(find-file file)))
or function that finds all org files and offers completion on such:
(defun my-all-org-files ()
(interactive)
(let* ((my-org-dir "~/Documents/Org")
(all-org (directory-files my-org-dir t "\.org$"))
(alist '())
(all-org-alist (dolist (org all-org alist)
(setf (alist-get (file-name-base org) alist) org)))
(completion-ignore-case t)
(file (completing-read "My files: " all-org-alist))
(file (cdr (assoc file alist))))
(find-file file)))
M-x my-all-org-files
Even better is when you turn on some visual completion package such as
M-x ivy-mode
or
M-x helm-mode
package ivy is in GNU ELPA
- Re: Bring up a screen giving option to open a series of orgmode files, (continued)
- Re: Bring up a screen giving option to open a series of orgmode files, Maxim Nikulin, 2020/11/30
- Re: Bring up a screen giving option to open a series of orgmode files, Jean Louis, 2020/11/30
- Message not available
- Re: Bring up a screen giving option to open a series of orgmode files, Jean Louis, 2020/11/30
- Re: Bring up a screen giving option to open a series of orgmode files, Berry, Charles, 2020/11/22
- Re: Bring up a screen giving option to open a series of orgmode files, Jean Louis, 2020/11/22
Re: Bring up a screen giving option to open a series of orgmode files, Diego Zamboni, 2020/11/23
- Re: Bring up a screen giving option to open a series of orgmode files,
Jean Louis <=
Re: Bring up a screen giving option to open a series of orgmode files, John Sturdy, 2020/11/24