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. <[email protected]> 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 "<tab>") (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
> )