org-element: Small refactoring

* lisp/org-element.el (org-element-horizontal-rule-parser,
  org-element-keyword-parser, org-element--current-element): Small
  refactoring.
This commit is contained in:
Nicolas Goaziou 2012-10-27 14:19:58 +02:00
parent f04a5bcea1
commit 1d58b0b2cd

View file

@ -1788,16 +1788,15 @@ Return a list whose CAR is `keyword' and CDR is a plist
containing `:key', `:value', `:begin', `:end' and `:post-blank'
keywords."
(save-excursion
(let ((case-fold-search t)
(begin (car affiliated))
(let ((begin (car affiliated))
(key (progn (looking-at "[ \t]*#\\+\\(\\S-+*\\):")
(upcase (org-match-string-no-properties 1))))
(value (org-trim (buffer-substring-no-properties
(match-end 0) (point-at-eol))))
(pos-before-blank (progn (forward-line) (point)))
(end (progn (skip-chars-forward " \r\t\n" limit)
(skip-chars-backward " \t")
(if (bolp) (point) (line-end-position)))))
(skip-chars-backward " \t")
(if (bolp) (point) (line-end-position)))))
(list 'keyword
(nconc
(list :key key
@ -1831,27 +1830,27 @@ keywords.
Assume point is at the beginning of the latex environment."
(save-excursion
(let* ((case-fold-search t)
(code-begin (point))
(begin (car affiliated))
(env (progn (looking-at "^[ \t]*\\\\begin{\\([A-Za-z0-9]+\\*?\\)}")
(regexp-quote (match-string 1))))
(code-end
(progn (re-search-forward
(format "^[ \t]*\\\\end{%s}[ \t]*$" env) limit t)
(forward-line)
(point)))
(value (buffer-substring-no-properties code-begin code-end))
(end (progn (skip-chars-forward " \r\t\n" limit)
(skip-chars-backward " \t")
(if (bolp) (point) (line-end-position)))))
(list 'latex-environment
(nconc
(list :begin begin
:end end
:value value
:post-blank (count-lines code-end end))
(cdr affiliated))))))
(let ((case-fold-search t)
(code-begin (point)))
(looking-at "[ \t]*\\\\begin{\\([A-Za-z0-9]+\\*?\\)}")
(if (not (re-search-forward (format "^[ \t]*\\\\end{%s}[ \t]*$"
(regexp-quote (match-string 1)))
limit t))
;; Incomplete latex environment: parse it as a paragraph.
(org-element-paragraph-parser limit affiliated)
(let* ((code-end (progn (forward-line) (point)))
(begin (car affiliated))
(value (buffer-substring-no-properties code-begin code-end))
(end (progn (skip-chars-forward " \r\t\n" limit)
(skip-chars-backward " \t")
(if (bolp) (point) (line-end-position)))))
(list 'latex-environment
(nconc
(list :begin begin
:end end
:value value
:post-blank (count-lines code-end end))
(cdr affiliated))))))))
(defun org-element-latex-environment-interpreter (latex-environment contents)
"Interpret LATEX-ENVIRONMENT element as Org syntax.
@ -3514,23 +3513,12 @@ element it has to parse."
(cond
;; LaTeX Environment.
((looking-at "[ \t]*\\\\begin{\\([A-Za-z0-9*]+\\)}[ \t]*$")
(if (save-excursion
(re-search-forward
(format "^[ \t]*\\\\end{%s}[ \t]*$"
(regexp-quote (match-string 1)))
nil t))
(org-element-latex-environment-parser limit affiliated)
(org-element-paragraph-parser limit affiliated)))
(org-element-latex-environment-parser limit affiliated))
;; Drawer and Property Drawer.
((looking-at org-drawer-regexp)
(let ((name (match-string 1)))
(cond
((not (save-excursion
(re-search-forward "^[ \t]*:END:[ \t]*$" nil t)))
(org-element-paragraph-parser limit affiliated))
((equal "PROPERTIES" name)
(org-element-property-drawer-parser limit affiliated))
(t (org-element-drawer-parser limit affiliated)))))
(if (equal (match-string 1) "PROPERTIES")
(org-element-property-drawer-parser limit affiliated)
(org-element-drawer-parser limit affiliated)))
;; Fixed Width
((looking-at "[ \t]*:\\( \\|$\\)")
(org-element-fixed-width-parser limit affiliated))