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 )