Re: refile captured to all opened Org buffer files as targets
Adam Porter writes: > org-buffer-list is a compiled Lisp function in ‘org.el’. > > (org-buffer-list PREDICATE EXCLUDE-TMP) > > Return a list of Org buffers. > PREDICATE can be ‘export’, ‘files’ or ‘agenda’. > > export restrict the list to Export buffers. > filesrestrict the list to buffers visiting Org files. > agenda restrict the list to buffers visiting agenda files. > > If EXCLUDE-TMP is non-nil, ignore temporary buffers. This is very awesome, thanks! :) -- [ stardiviner ] I try to make every word tell the meaning what I want to express. Blog: https://stardiviner.github.io/ IRC(freenode): stardiviner, Matrix: stardiviner GPG: F09F650D7D674819892591401B5DF1C95AE89AC3
Re: refile captured to all opened Org buffer files as targets
Thanks! org-web-tools--html-to-org-with-pandoc is an interesting idea. I was using elfeed-insert-html for this purpose. Also, note that your capture may be messed up when the rss content contains org-mode text. A real-case scenario from Stack Exchange rss: > I'd like to find a way to jump to a location in an org-mode file while > automatically unfolding only the heading at the location I'm jumping to and > all its parent headings (but not any sibling headings). > > For example, if I have this org-mode file: > > * A > ** AA If you insert the rss entry contents as is, two unexpected headings will be created. I use the following to escape possible org-mode text: (setq content-text (with-temp-buffer (when content (if (eq content-type 'html) (elfeed-insert-html content) (insert content))) (let ((org-babel-min-lines-for-block-output 0)) ;; handle org-mode syntax in body (org-escape-code-in-region (point-min) (point-max))) (buffer-string))) Best, Ihor stardiviner writes: > Ihor Radchenko writes: > >> [offtopic] >> >>> I recently created an org-capture template for elfeed, it is finished. >> >> Could you share your capture template? > > Sure, here it is: > > #+begin_src emacs-lisp > ;; support Org Mode Capture template > (defun my/org-capture-elfeed-title () > (with-current-buffer "*elfeed-entry*" > (elfeed-entry-title elfeed-show-entry))) > (defun my/org-capture-elfeed-date () > (with-current-buffer "*elfeed-entry*" > (format-time-string > "[%Y-%m-%d %a %H:%M]" > (seconds-to-time (elfeed-entry-date elfeed-show-entry) > (defun my/org-capture-elfeed-source () > (with-current-buffer "*elfeed-entry*" > (let ((feed (elfeed-entry-feed elfeed-show-entry))) > (elfeed-feed-title feed > (defun my/org-capture-elfeed-content () > (with-current-buffer "*elfeed-entry*" > (let* ((content (elfeed-deref (elfeed-entry-content elfeed-show-entry))) >(type (elfeed-entry-content-type elfeed-show-entry)) >(feed (elfeed-entry-feed elfeed-show-entry)) >(base-url (and feed (elfeed-compute-base (elfeed-feed-url feed) > (if content > (if (eq type 'html) > (org-web-tools--html-to-org-with-pandoc content) > (insert content)) > > (add-to-list 'org-capture-templates > '("R" "Capture elfeed [R]SS feed content to Org buffer" >entry (file "") >"* %(my/org-capture-elfeed-title) > :PROPERTIES: > :SOURCE: %(my/org-capture-elfeed-source) > :DATE(original): %(my/org-capture-elfeed-date) > :DATE: %u > :END: > > %(my/org-capture-elfeed-content)" >:empty-lines 1 >:jump-to-captured t)) > #+end_src > > If possible, I might submit this PR to elfeed.el repository. > > -- > [ stardiviner ] >I try to make every word tell the meaning what I want to express. > >Blog: https://stardiviner.github.io/ >IRC(freenode): stardiviner, Matrix: stardiviner >GPG: F09F650D7D674819892591401B5DF1C95AE89AC3 >
Re: refile captured to all opened Org buffer files as targets
stardiviner writes: > I recently created an org-capture template for elfeed, it is finished. Now I > have an idea is to refile it to all currently opened Org buffer files. So I > created an function for ~org-refile-targets~ variable. > > #+begin_src emacs-lisp > (defun org-refile-targets-all-files () > "Use all currently opened Org buffer files as org-refile targets." > (mapcar 'buffer-file-name > (seq-filter (lambda (buffer) (if-let (file (buffer-file-name > buffer)) (f-ext? file "org"))) ; filter Org buffers > (buffer-list > #+end_src > > > Then set ~org-refile-targets~ to use upper custom function > > #+begin_src emacs-lisp :eval no > (setq org-refile-targets '((nil :maxlevel . 3) ; current buffer headlies >(org-agenda-files :maxlevel . 2) ; agenda files > headlines >(org-refile-targets-all-files :maxlevel . 3) ; all > opened Org buffer files headlines >)) > #+end_src > > Can I add this as a patch to Org Mode repository? org-buffer-list is a compiled Lisp function in ‘org.el’. (org-buffer-list PREDICATE EXCLUDE-TMP) Return a list of Org buffers. PREDICATE can be ‘export’, ‘files’ or ‘agenda’. export restrict the list to Export buffers. filesrestrict the list to buffers visiting Org files. agenda restrict the list to buffers visiting agenda files. If EXCLUDE-TMP is non-nil, ignore temporary buffers.
Re: refile captured to all opened Org buffer files as targets
Ihor Radchenko writes: > [offtopic] > >> I recently created an org-capture template for elfeed, it is finished. > > Could you share your capture template? Sure, here it is: #+begin_src emacs-lisp ;; support Org Mode Capture template (defun my/org-capture-elfeed-title () (with-current-buffer "*elfeed-entry*" (elfeed-entry-title elfeed-show-entry))) (defun my/org-capture-elfeed-date () (with-current-buffer "*elfeed-entry*" (format-time-string "[%Y-%m-%d %a %H:%M]" (seconds-to-time (elfeed-entry-date elfeed-show-entry) (defun my/org-capture-elfeed-source () (with-current-buffer "*elfeed-entry*" (let ((feed (elfeed-entry-feed elfeed-show-entry))) (elfeed-feed-title feed (defun my/org-capture-elfeed-content () (with-current-buffer "*elfeed-entry*" (let* ((content (elfeed-deref (elfeed-entry-content elfeed-show-entry))) (type (elfeed-entry-content-type elfeed-show-entry)) (feed (elfeed-entry-feed elfeed-show-entry)) (base-url (and feed (elfeed-compute-base (elfeed-feed-url feed) (if content (if (eq type 'html) (org-web-tools--html-to-org-with-pandoc content) (insert content)) (add-to-list 'org-capture-templates '("R" "Capture elfeed [R]SS feed content to Org buffer" entry (file "") "* %(my/org-capture-elfeed-title) :PROPERTIES: :SOURCE: %(my/org-capture-elfeed-source) :DATE(original): %(my/org-capture-elfeed-date) :DATE: %u :END: %(my/org-capture-elfeed-content)" :empty-lines 1 :jump-to-captured t)) #+end_src If possible, I might submit this PR to elfeed.el repository. -- [ stardiviner ] I try to make every word tell the meaning what I want to express. Blog: https://stardiviner.github.io/ IRC(freenode): stardiviner, Matrix: stardiviner GPG: F09F650D7D674819892591401B5DF1C95AE89AC3
Re: refile captured to all opened Org buffer files as targets
I improved command to get ride of =f.el= library function: #+begin_src emacs-lisp (defun org-refile-targets-all-files () "Use all currently opened Org buffer files as org-refile targets." (mapcar 'buffer-file-name (seq-filter ; filter Org buffers (lambda (buffer) (if-let (file (buffer-file-name buffer)) (string-equal (file-name-extension file) "org") ;; (f-ext? file "org") )) (buffer-list #+end_src Here is the configured option: #+begin_src emacs-lisp (setq org-refile-targets '((nil :maxlevel . 3) ; current buffer headlines (org-agenda-files :maxlevel . 2) ; agenda files headlines (org-refile-targets-all-files :maxlevel . 3) ; all opened Org buffer files headlines )) #+end_src I think this can be an option for user who might think this is useful like in my situation. (I want to refile capture elfeed RSS entry to one of my opened Org buffer's specific headline.) -- [ stardiviner ] I try to make every word tell the meaning what I want to express. Blog: https://stardiviner.github.io/ IRC(freenode): stardiviner, Matrix: stardiviner GPG: F09F650D7D674819892591401B5DF1C95AE89AC3
Re: refile captured to all opened Org buffer files as targets
[offtopic] > I recently created an org-capture template for elfeed, it is finished. Could you share your capture template? stardiviner writes: > I recently created an org-capture template for elfeed, it is finished. Now I > have an idea is to refile it to all currently opened Org buffer files. So I > created an function for ~org-refile-targets~ variable. > > #+begin_src emacs-lisp > (defun org-refile-targets-all-files () > "Use all currently opened Org buffer files as org-refile targets." > (mapcar 'buffer-file-name > (seq-filter (lambda (buffer) (if-let (file (buffer-file-name > buffer)) (f-ext? file "org"))) ; filter Org buffers > (buffer-list > #+end_src > > Then set ~org-refile-targets~ to use upper custom function > > #+begin_src emacs-lisp :eval no > (setq org-refile-targets '((nil :maxlevel . 3) ; current buffer headlies >(org-agenda-files :maxlevel . 2) ; agenda files > headlines >(org-refile-targets-all-files :maxlevel . 3) ; all > opened Org buffer files headlines >)) > #+end_src > > Can I add this as a patch to Org Mode repository? > > -- > [ stardiviner ] >I try to make every word tell the meaning what I want to express. > >Blog: https://stardiviner.github.io/ >IRC(freenode): stardiviner, Matrix: stardiviner >GPG: F09F650D7D674819892591401B5DF1C95AE89AC3 > > -- Ihor Radchenko, PhD, Center for Advancing Materials Performance from the Nanoscale (CAMP-nano) State Key Laboratory for Mechanical Behavior of Materials, Xi'an Jiaotong University, Xi'an, China Email: yanta...@gmail.com, ihor_radche...@alumni.sutd.edu.sg
refile captured to all opened Org buffer files as targets
I recently created an org-capture template for elfeed, it is finished. Now I have an idea is to refile it to all currently opened Org buffer files. So I created an function for ~org-refile-targets~ variable. #+begin_src emacs-lisp (defun org-refile-targets-all-files () "Use all currently opened Org buffer files as org-refile targets." (mapcar 'buffer-file-name (seq-filter (lambda (buffer) (if-let (file (buffer-file-name buffer)) (f-ext? file "org"))) ; filter Org buffers (buffer-list #+end_src Then set ~org-refile-targets~ to use upper custom function #+begin_src emacs-lisp :eval no (setq org-refile-targets '((nil :maxlevel . 3) ; current buffer headlies (org-agenda-files :maxlevel . 2) ; agenda files headlines (org-refile-targets-all-files :maxlevel . 3) ; all opened Org buffer files headlines )) #+end_src Can I add this as a patch to Org Mode repository? -- [ stardiviner ] I try to make every word tell the meaning what I want to express. Blog: https://stardiviner.github.io/ IRC(freenode): stardiviner, Matrix: stardiviner GPG: F09F650D7D674819892591401B5DF1C95AE89AC3