From 5d675ca8bd16f178a66c76a92870dc23b81ad4a4 Mon Sep 17 00:00:00 2001 From: Carsten Dominik Date: Tue, 6 May 2008 21:18:40 +0200 Subject: [PATCH] Hmmmmmmm --- doc/org.texi | 2 -- lisp/org.el | 41 ++++++++++++++++++++++++++++++++++++++++- 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/doc/org.texi b/doc/org.texi index 040c2f05c..38c913e19 100644 --- a/doc/org.texi +++ b/doc/org.texi @@ -7301,8 +7301,6 @@ All lines between these markers are exported literally #+END_LaTeX @end example - - @node Sectioning structure, , Quoting LaTeX code, LaTeX export @subsection Sectioning structure @cindex LaTeX class diff --git a/lisp/org.el b/lisp/org.el index f6fdc81cd..a35b60b1f 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -7579,6 +7579,38 @@ This function can be used in a hook." "ORGTBL" "HTML:" "LaTeX:" "BEGIN:" "END:" "TBLFM" "BEGIN_EXAMPLE" "END_EXAMPLE")) +(defcustom org-structure-template-alist + '( + ("s" "#+begin_src ?\n\n#+end_src" "#+\n\n") + ("e" "#+begin_example\n?\n#+end_example" "\n?\n") + ("q" "#+begin_quote\n?\n#+end_quote" "\n?\n") + ("v" "#+begin_verse\n?\n#+end_verse" "\n?\n") + ("l" "#+begin_latex\n?\n#+end_latex" "\n?\n") + ("L" "#+latex: " "?") + ("h" "#+begin_html\n?\n#+end_html" "\n?\n") + ("H" "#+html: " "?") + ("a" "#+begin_ascii\n?\n#+end_ascii") + ("A" "#+ascii: ") + ("i" "#+include: " "") + ) + "FIXME" + :group 'org ;????????????????? + :type 'sexp) + +(defun org-complete-expand-structure-template (start cell) + (let ((rpl (cdr cell))) + (delete-region start (point)) + (when (string-match "\\`#\\+" rpl) + (cond + ((bolp)) + ((not (string-match "\\S-" (buffer-substring (point-at-bol) (point)))) + (delete-region (point-at-bol) (point))) + (t (newline)))) + (setq start (point)) + (insert rpl) + (if (re-search-backward "\\?" start t) (delete-char 1)))) + + (defun org-complete (&optional arg) "Perform completion on word at point. At the beginning of a headline, this completes TODO keywords as given in @@ -7593,7 +7625,8 @@ At all other locations, this simply calls the value of (interactive "P") (org-without-partial-completion (catch 'exit - (let* ((end (point)) + (let* ((a nil) + (end (point)) (beg1 (save-excursion (skip-chars-backward (org-re "[:alnum:]_@")) (point))) @@ -7602,6 +7635,12 @@ At all other locations, this simply calls the value of (point))) (confirm (lambda (x) (stringp (car x)))) (searchhead (equal (char-before beg) ?*)) + (struct + (when (and (equal (char-before beg1) ?.) + (setq a (assoc (buffer-substring beg1 (point)) + org-structure-template-alist))) + (org-complete-expand-structure-template (1- beg1) a) + (throw 'exit t))) (tag (and (equal (char-before beg1) ?:) (equal (char-after (point-at-bol)) ?*))) (prop (and (equal (char-before beg1) ?:) -- 2.11.4.GIT