Próbuję odwzorować wszystkie wpisy z organizacji w pliku i zebrać część nagłówka, jeśli jest dopasowana przez niektóre wyrażenie regularne."Dopasowywanie ciągów znaków" nie działa w "wpisach na mapie org"
Problem polega na tym, że dopasowanie łańcuchowe zawsze zwraca zero. Widzę, że wszystko inne działa poprawnie, kiedy przechodzę przez edebug.
Tu zmniejszyły problem tak daleko, jak tylko mogę:
(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))
Linie 3 w test.org: Prace
* >>> one
* two
* >>> three
string-mecz w porządku inaczej:
(string-match "[ \t]*>>>[ \t]*\\([A-Z0-9_-]+\\)" ">>> one")
=> 0
Kilka rzeczy, które próbowałem:
- Usuwanie właściwości ciągów przed e dopasowanie.
- Zamiast tego należy wykonać ponowne wyszukiwanie.
- Przeniesienie dopasowania regex do oddzielnej funkcji.
- zastąpione "wpisy mapy org" z "mapcar" i przetestowane na liście, działa poprawnie.
Używam Emacsa 24.3.1 (x86_64-unknown-linux-gnu, GTK + w wersji 3.4.2)
Wszelkie wskazówki będą mile widziane.
Kiedy przechodzisz przez edebug, czy "nagłówek" przedstawia oczekiwaną wartość? – Malabarba
Tak, 'heading' przedstawia oczekiwaną wartość w edebug. – michaelJohn