Ok, I found how to correct it: (defun proposition_org/extract_posts (x) "file_name → [proposition_org]" (let ((file_name (expand-file-name x))) (cond ((file-exists-p file_name) (with-temp-buffer (insert-file-contents file_name) (org-mode) ;; <--- THIS IS WHAT WAS MISSING (proposition_org/list_propositions_in_buffer))) (t '())))) Best, PHF ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐ On July 21, 2018 6:28 PM, Pierre-Henry F. wrote: > Hello dear list and thank you for looking at this stuff down below as > well as org-mode and many other things. > > Best, > PHF > > I get: > > Debugger entered--Lisp error: (wrong-type-argument stringp nil) > looking-at(nil) > org-agenda-skip() > org-scan-tags(proposition_org/if_proposition_then_get_content_else_nil t nil nil) > org-map-entries(proposition_org/if_proposition_then_get_content_else_nil t) > (seq-filter 'not (org-map-entries 'proposition_org/if_proposition_then_get_content_else_nil t)) > proposition_org/list_propositions_in_buffer() > (progn (insert-file-contents file_name) (proposition_org/list_propositions_in_buffer)) > (unwind-protect (progn (insert-file-contents file_name) (proposition_org/list_propositions_in_buffer)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))) > (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (insert-file-contents file_name) (proposition_org/list_propositions_in_buffer)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))) > (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (insert-file-contents file_name) (proposition_org/list_propositions_in_buffer)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))))) > (cond ((file-exists-p file_name) (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (insert-file-contents file_name) (proposition_org/list_propositions_in_buffer)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))))) (t 'nil)) > (let ((file_name (expand-file-name x))) (cond ((file-exists-p file_name) (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (insert-file-contents file_name) (proposition_org/list_propositions_in_buffer)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))))) (t 'nil))) > proposition_org/extract_posts("~/tmp.org") > (message (proposition_org/extract_posts "~/tmp.org")) > eval((message (proposition_org/extract_posts "~/tmp.org")) nil) > elisp--eval-last-sexp(nil) > eval-last-sexp(nil) > funcall-interactively(eval-last-sexp nil) > call-interactively(eval-last-sexp nil nil) > command-execute(eval-last-sexp) > > By executing this program: > > ;; Import > > (require 'seq) > (require 'cl-lib) > (require 'org) > > ;; Define > > (defun proposition_org/extract_posts (x) > "file_name → [proposition_org]" > (let ((file_name (expand-file-name x))) > (cond ((file-exists-p file_name) > (with-temp-buffer > (insert-file-contents file_name) > (proposition_org/list_propositions_in_buffer))) > (t '())))) > > (defun proposition_org/list_propositions_in_buffer () > "current_buffer → [proposition_org]" > > (seq-filter 'not (org-map-entries 'proposition_org/if_proposition_then_get_content_else_nil t))) > > (defun proposition_org/if_proposition_then_get_content_else_nil () > "current_heading → nil | proposition_org" > (cond ((proposition_org/is_publication) (proposition_org/get_content)) > (t nil))) > > (defun proposition_org/get_content () > "current_heading → string" > (org-narrow-to-subtree) > (let ((content (buffer-string))) > (widen) > content)) > > (defun proposition_org/is_publication () > "current_heading → boolean" > (eq (proposition_org/is_proposition_properties (org-entry-properties)) 'true)) > > (defun proposition_org/is_proposition_properties (properties) > "properties ≡ [[key,value]] > > properties → 'true | 'false" > > (let ((proposition_properties_pattern > (list > (cons > (lambda (x) (equal "PUBLIC" x)) > (lambda (x) (equal "true" x))) > > (cons > (lambda (x) (equal "TARGET_ID" x)) > (lambda (x) (stringp x))) > > (cons > (lambda (x) (equal "PREVIOUS_VERSION" x)) > (lambda (x) (stringp x))) > > (cons > (lambda (x) (equal "AUTHOR" x)) > (lambda (x) (stringp x))) > > (cons > (lambda (x) (equal "TYPE_NAME" x)) > (lambda (x) (equal "proposition_org" x))) > > (cons > (lambda (x) (equal "TYPE_ID" x)) > (lambda (x) (equal "af7658fc-0541-4cbe-8a5c-04fd5cde74ff" x)))))) > > (proposition_org/properties_has_pattern properties proposition_properties_pattern))) > > (defun proposition_org/properties_has_pattern (properties patterns &optional result) > "properties ≡ [[key,value]] > patterns ≡ [[predicate,predicate]] > > properties patterns → 'true | 'false" > (proposition_org/to_truth > (cond ((null result) (proposition_org/properties_has_pattern properties patterns 'true)) > ((eq result 'false) result) > ((null patterns) result) > (t (proposition_org/properties_has_pattern > properties > (cdr patterns) > (proposition_org/to_truth > (cl-some > (lambda (prop) (proposition_org/to_boolean (proposition_org/verify prop (car patterns)))) > properties))))))) > > (defun proposition_org/to_truth (x) > (cond ((or (eq x 'false) (eq x 'true)) x) > (x 'true) > ((not x) 'false))) > > (defun proposition_org/to_boolean (x) > (cond ((eq x 'true) t) > ((eq x 'false) nil) > (t (error "Expecting 'true or 'false but got something else.")))) > > (defun proposition_org/verify (property pattern) > (proposition_org/to_truth > (and (funcall (car pattern) (car property)) > (funcall (cdr pattern) (cdr property))))) > > ;; Export > > (message (proposition_org/extract_posts "~/tmp.org")) > > With ~/tmp.org pointing at this org file: > > * post_1 > :PROPERTIES: > :PUBLIC: true > :TARGET_ID: ab595e70-b729-4524-b614-fc4d46b50152 > :PREVIOUS_VERSION: > :AUTHOR: XXX > :TYPE_NAME: proposition_org > :TYPE_ID: af7658fc-0541-4cbe-8a5c-04fd5cde74ff > :END: > > Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Praesent libero orci, auctor sed, faucibus > vestibulum, gravida vitae, arcu. Nunc posuere. Suspendisse potenti. Praesent in arcu ac nisl > ultricies ultricies. Fusce eros. Sed pulvinar vehicula ante. Maecenas urna dolor, egestas vel, > tristique et, porta eu, leo. Curabitur vitae sem eget arcu laoreet vulputate. Cras orci neque, > faucibus et, rhoncus ac, venenatis ac, magna. Aenean eu lacus. Aliquam luctus facilisis > augue. Nullam fringilla consectetuer sapien. Aenean neque augue, bibendum a, feugiat id, lobortis > vel, nunc. Suspendisse in nibh quis erat condimentum pretium. Vestibulum tempor odio et leo. Sed > sodales vestibulum justo. Cras convallis pellentesque augue. In eu magna. In pede turpis, feugiat > pulvinar, sodales eget, bibendum consectetuer, magna. Pellentesque vitae augue. > > * post_2 > > lol ! > xd > > * post_3 > > why > > Emacs : GNU Emacs 26.1 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.18.9) > of 2018-05-29 > Package: Org mode version 9.1.13 (9.1.13-elpa @ /home/nomos/.emacs.d/elpa/org-20180716/) > > current state: > ============== > (setq > org-src-mode-hook '(org-src-babel-configure-edit-buffer org-src-mode-configure-edit-buffer) > org-after-todo-state-change-hook '(org-clock-out-if-current) > org-metadown-hook '(org-babel-pop-to-session-maybe) > org-clock-out-hook '(org-clock-remove-empty-clock-drawer) > org-refile-targets '((nil :maxlevel . 2)) > org-enforce-todo-dependencies t > org-modules '(org-bbdb org-bibtex org-docview org-gnus org-habit org-id org-info org-irc org-mhe > org-rmail org-w3m) > org-mode-hook '(org-clock-load org-shortcuts er/add-org-mode-expansions > #[0 "\300\301\302\303\304$\207" > [add-hook change-major-mode-hook org-show-block-all append local] 5] > #[0 "\300\301\302\303\304$\207" > [add-hook change-major-mode-hook org-babel-show-result-all append local] 5] > org-babel-result-hide-spec org-babel-hide-all-hashes) > org-clock-persist 'history > org-archive-hook '(org-attach-archive-delete-maybe) > org-confirm-elisp-link-function 'yes-or-no-p > org-agenda-todo-list-sublevels nil > org-agenda-before-write-hook '(org-agenda-add-entry-text) > org-metaup-hook '(org-babel-load-in-session-maybe) > org-bibtex-headline-format-function #[257 "\300\236A\207" [:title] 3 "\n\n(fn ENTRY)"] > org-babel-pre-tangle-hook '(save-buffer) > org-tab-first-hook '(org-babel-hide-result-toggle-maybe org-babel-header-arg-expand) > org-hide-leading-stars t > org-clock-clocktable-default-properties '(:maxlevel 3 :scope file) > org-log-done t > org-export-backends '(ascii beamer html icalendar latex org md) > org-agenda-span 'month > org-src-lang-modes '(("ocaml" . tuareg) ("elisp" . emacs-lisp) ("ditaa" . artist) > ("asymptote" . asy) ("dot" . graphviz-dot) ("sqlite" . sql) > ("calc" . fundamental) ("C" . c) ("js" . js2) ("cpp" . c++) ("C++" . c++) > ("screen" . shell-script)) > org-occur-hook '(org-first-headline-recenter) > org-agenda-mode-hook '((lambda nil (local-set-key (kbd "") (quote org-agenda-goto)))) > org-log-into-drawer t > org-cycle-hook '(org-cycle-hide-archived-subtrees org-cycle-hide-drawers org-cycle-show-empty-lines > org-optimize-window-after-visibility-change) > org-todo-keywords '("S(s!)" "D(d@/!)" "U(u)" "TODO(t)" "|" "DONE(o!)" "C(c@)") > org-speed-command-hook '(org-speed-command-activate org-babel-speed-command-activate) > org-capture-before-finalize-hook '(user/before-finalize-capture-hooks) > org-babel-tangle-lang-exts '(("latex" . "tex") ("emacs-lisp" . "el") ("elisp" . "el")) > org-confirm-shell-link-function 'yes-or-no-p > org-link-parameters '(("w3m" :store org-w3m-store-link) > ("rmail" :follow org-rmail-open :store org-rmail-store-link) > ("mhe" :follow org-mhe-open :store org-mhe-store-link) > ("irc" :follow org-irc-visit :store org-irc-store-link) > ("info" :follow org-info-open :export org-info-export :store > org-info-store-link) > ("id" :follow org-id-open) > ("gnus" :follow org-gnus-open :store org-gnus-store-link) > ("docview" :follow org-docview-open :export org-docview-export :store > org-docview-store-link) > ("bibtex" :follow org-bibtex-open :store org-bibtex-store-link) > ("bbdb" :follow org-bbdb-open :export org-bbdb-export :complete > org-bbdb-complete-link :store org-bbdb-store-link) > ("file+sys") ("file+emacs") ("doi" :follow org--open-doi-link) > ("elisp" :follow org--open-elisp-link) > ("file" :complete org-file-complete-link) > ("ftp" :follow (lambda (path) (browse-url (concat "ftp:" path)))) > ("help" :follow org--open-help-link) > ("http" :follow (lambda (path) (browse-url (concat "http:" path)))) > ("https" :follow (lambda (path) (browse-url (concat "https:" path)))) > ("mailto" :follow (lambda (path) (browse-url (concat "mailto:" path)))) > ("news" :follow (lambda (path) (browse-url (concat "news:" path)))) > ("shell" :follow org--open-shell-link)) > org-agenda-skip-scheduled-if-done t > org-todo-keyword-faces '(("U" :foreground "red" :weight bold) > ("D" :foreground "DarkOrange" :weight bold) > ("S" :foreground "SpringGreen" :weight bold) > ("DONE" :foreground "DeepSkyBlue" :weight bold) > ("C" :foreground "white" :weight bold) > ("TODO" :foreground "red" :weight bold)) > org-confirm-babel-evaluate 'my-org-confirm-babel-evaluate > org-deadline-warning-days 0 > org-link-search-must-match-exact-headline nil > org-list-indent-offset 2 > org-agenda-show-future-repeats 'next > )