Sto tentando di mappare su tutte le voci dell'organizzazione in un file e raccogliere una parte dell'intestazione se è stata abbinata a qualche regex.'string-match' non funziona in 'org-map-entries'
Il problema è che stringa-partita restituisce sempre zero. Vedo che tutto il resto funziona correttamente mentre passo a Edebug.
Qui ho ridotto il problema, per quanto posso:
(defun test()
(let ((found nil))
(org-map-entries (lambda()
(let ((heading (org-get-heading t t)))
(when (string-match "[ \t]*>>>[ \t]*\\([A-Z0-9_-]+\\)"
heading)
(push (match-string 1 heading) found))))
nil '("test.org"))
found))
Le 3 linee in test.org:
* >>> one
* two
* >>> three
stringa-partita funziona bene altrimenti:
(string-match "[ \t]*>>>[ \t]*\\([A-Z0-9_-]+\\)" ">>> one")
=> 0
Alcune cose ho cercato:
- Rimozione di proprietà di stringa befor e corrispondenza.
- Implementazione attorno a re-search-forward.
- Spostamento della corrispondenza regolare in una funzione separata.
- sostituito "org-map-entries" con "mapcar" e testato su un elenco, funziona correttamente.
sto usando GNU Emacs 24.3.1 (x86_64-unknown-linux-gnu, GTK + versione 3.4.2)
Qualche consiglio sarebbe molto apprezzato.
Quando si passa attraverso di essa con edebug, fa 'heading' presentano il valore atteso? – Malabarba
Sì, 'heading' presenta il valore previsto in edebug. – michaelJohn