Merge branch 'complete-structure-meta-code'
Conflicts: ChangeLog
This commit is contained in:
commit
38cc3e2a48
|
@ -10,6 +10,11 @@
|
|||
(org-set-property): Use `org-completing-read' instead of
|
||||
`completing-read'.
|
||||
|
||||
* lisp/org.el (org-complete-expand-structure-template): New,
|
||||
experimental function.
|
||||
(org-structure-template-alist): New, experimental option.
|
||||
(org-complete): Call `org-complete-expand-structure-template'.
|
||||
|
||||
2008-05-06 Bastien Guerry <bzg@altern.org>
|
||||
|
||||
* lisp/org-export-latex.el (org-export-latex-preprocess): Added
|
||||
|
|
|
@ -7319,8 +7319,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
|
||||
|
|
|
@ -2385,7 +2385,7 @@ PUB-DIR is set, use this as the publishing directory."
|
|||
table-buffer table-orig-buffer
|
||||
ind item-type starter didclose
|
||||
rpl path desc descp desc1 desc2 link
|
||||
snumber fnc
|
||||
snumber fnc item-tag
|
||||
)
|
||||
|
||||
(let ((inhibit-read-only t))
|
||||
|
@ -2795,7 +2795,7 @@ lang=\"%s\" xml:lang=\"%s\">
|
|||
starter (if (match-beginning 2)
|
||||
(substring (match-string 2 line) 0 -1))
|
||||
line (substring line (match-beginning 5))
|
||||
item-tag)
|
||||
item-tag nil)
|
||||
(if (string-match "\\(.*?\\) ::[ \t]*" line)
|
||||
(setq item-type "d"
|
||||
item-tag (match-string 1 line)
|
||||
|
|
56
lisp/org.el
56
lisp/org.el
|
@ -7580,6 +7580,53 @@ 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")
|
||||
("e" "#+begin_example\n?\n#+end_example")
|
||||
("q" "#+begin_quote\n?\n#+end_quote")
|
||||
("v" "#+begin_verse\n?\n#+end_verse")
|
||||
("l" "#+begin_latex\n?\n#+end_latex")
|
||||
("L" "#+latex: ")
|
||||
("h" "#+begin_html\n?\n#+end_html")
|
||||
("H" "#+html: ")
|
||||
("a" "#+begin_ascii\n?\n#+end_ascii")
|
||||
("A" "#+ascii: ")
|
||||
("i" "#+include: %file ?")
|
||||
)
|
||||
"Structure completion elements.
|
||||
This is a list of abbreviation keys and values. The value gets inserted
|
||||
it you type @samp{.} followed by the key and then the completion key,
|
||||
usually `M-TAB'. %file will be replaced by a file name after prompting
|
||||
for the file uning completion.
|
||||
This is an experimental feature, it is undecided if it is going to stay in."
|
||||
:group 'org-completion
|
||||
:type '(repeat
|
||||
(string :tag "Key") (string :tag "Template")))
|
||||
|
||||
(defun org-complete-expand-structure-template (start cell)
|
||||
"Expand a structure template."
|
||||
(let ((rpl (nth 1 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))
|
||||
(if (string-match "%file" rpl)
|
||||
(setq rpl (replace-match
|
||||
(concat
|
||||
"\""
|
||||
(save-match-data
|
||||
(abbreviate-file-name (read-file-name "Include file: ")))
|
||||
"\"")
|
||||
t t rpl)))
|
||||
(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
|
||||
|
@ -7594,7 +7641,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)))
|
||||
|
@ -7603,6 +7651,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) ?:)
|
||||
|
|
Loading…
Reference in New Issue