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
)