From: Nicolas Goaziou <mail@nicolasgoaziou.fr>
To: Eric Abrahamsen <eric@ericabrahamsen.net>
Cc: emacs-orgmode@gnu.org
Subject: Re: function for inserting a block
Date: Sun, 05 Nov 2017 10:06:20 +0100 [thread overview]
Message-ID: <87efpd9jsj.fsf@nicolasgoaziou.fr> (raw)
In-Reply-To: <87she0ikmo.fsf@ericabrahamsen.net> (Eric Abrahamsen's message of "Mon, 30 Oct 2017 10:57:35 -0700")
Hello,
Eric Abrahamsen <eric@ericabrahamsen.net> writes:
> From 055af9e9545947b9aeccc3370c8b67a237eea5d8 Mon Sep 17 00:00:00 2001
> From: Eric Abrahamsen <eric@ericabrahamsen.net>
> Date: Mon, 30 Oct 2017 10:55:29 -0700
> Subject: [PATCH] Replace easy templates with org-insert-structure-template
>
> * lisp/org.el (org-insert-structure-template): New function for
> wrapping region (or element at point) in a begin/end block.
> (org-structure-predefined-blocks): New option holding predefined
> blocks, for completion.
> (org-try-structure-completion,
> org-complete-expand-structure-template): Remove functions.
> * doc/org.texi (Inserting structure templates): Document.
> * testing/lisp/test-org.el (test-org/insert-template): New test.
Thank you. I applied your patch with the changes below.
> -* Info directory file:: Installing a manual in Info file hierarchy.
> +* Info directory file:: Installing a manual in Info file hierarchy.
Ignored.
> -* Easy templates:: Quick insertion of structural elements
> +* Inserting structure templates:: Wrapping text in code blocks
I used "Structure templates" instead of "Inserting structure templates"
and updated the rest of the "org.texi" accordingly.
> -@node Introduction
> +@node Introduction, Document structure, Top, Top
There is a lot of noise like this in your patch. I removed it.
> +With just a few keystrokes, it's possible to insert empty structural blocks,
> +such as @code{#+begin_src} and @code{#+end_src}, or to wrap existing text in
> +such a block.
Manual's conventions require to use uppercase keywords: #+BEGIN_SRC,
even though the function inserts them in lowercase.
> +@defun org-insert-structure-template
> +@kindex C-c C-x w
Manual uses
@table @kbd
@orgcmd(C-c C-x w, org-insert-structure-template)
@end table
instead.
> +Prompt for a type of block structure, and insert the block at point. If the
> +region is active, it will be wrapped in the block. First prompts the user
"it is wrapped in the block"
GNU Manuals's convention is to favor present tense over future one.
> +@vindex org-structure-template-alist
> +Available structure types are defined in @code{org-structure-template-alist},
> +see the docstring for adding or changing values.
> +
> +@multitable @columnfractions 0.2 0.8
> +@item @kbd{s} @tab @code{src}
> +@item @kbd{e} @tab @code{example}
> +@item @kbd{E} @tab @code{export}
> +@item @kbd{q} @tab @code{quote}
> +@item @kbd{v} @tab @code{verse}
> +@item @kbd{c} @tab @code{center}
> +@item @kbd{C} @tab @code{comment}
> +@item @kbd{l} @tab @code{export latex}
> +@item @kbd{h} @tab @code{export html}
> +@item @kbd{a} @tab @code{export ascii}
@code{src} -> @samp{#+BEGIN_SRC}
...
I also re-ordered the entries.
> + '((?s . "src")
> + (?e . "example")
> + (?E . "export")
> + (?q . "quote")
> + (?v . "verse")
> + (?c . "center")
> + (?C . "comment")
> + (?l . "export latex")
> + (?h . "export html")
> + (?a . "export ascii"))
> "Structure completion elements.
I re-ordered the entries.
> -This is a list of abbreviation keys and values. The value gets inserted
> -if you type `<' followed by the key and then press the completion key,
> -usually `TAB'. %file will be replaced by a file name after prompting
> -for the file using completion. The cursor will be placed at the position
> -of the `?' in the template.
> -There are two templates for each key, the first uses the original Org syntax,
> -the second uses Emacs Muse-like syntax tags. These Muse-like tags become
> -the default when the /org-mtags.el/ module has been loaded. See also the
> -variable `org-mtags-prefer-muse-templates'."
> +This is an alist of characters and values. When
> +`org-insert-structure-template' is called, an additional key is
> +read. The key is first looked up in this alist, and the
> +corresponding structure is inserted, with \"#+begin\" and
> +\"#+end\" added automatically."
"#+BEGIN_" and "#+END_".
> :group 'org-completion
> :type '(repeat
> - (list
> - (string :tag "Key")
> + (cons
> + (character :tag "Key")
> (string :tag "Template")))
> - :version "26.1"
> :package-version '(Org . "8.3"))
"8.3" -> "9.2"
> +(defun org-insert-structure-template (type)
> + "Insert a block structure of the type #+begin_foo/#+end_foo.
> +First read a character, which can be one of the keys in
> +`org-structure-template-alist'. When it is <TAB>, prompt the
> +user for a string to use. With an active region, wrap the region
> +in the block. Otherwise, insert an empty block."
> + (interactive
> + (list
> + (let* ((key (read-key "Key: "))
> + (struct-string
> + (or (cdr (assq key org-structure-template-alist))
> + (and (= key ?\t)
> + (read-string "Structure type: "))
> + (error "'%c' has no structure definition" key))))
(user-error "`%c' ...")
> + struct-string)))
> + (let ((s (if (use-region-p)
> + (region-beginning)
> + (point)))
> + (e (copy-marker (if (use-region-p)
> + (region-end)
> + (point))
> + t))
I also bound (use-region-p) to `region?'.
> + (should
> + (string= "#+begin_foo\nI'm a paragraph\n\nI'm a second paragrah\n#+end_foo\n"
> + (org-test-with-temp-text "I'm a paragraph\n\nI'm a second paragrah"
> + (goto-char (point-min))
The line above is not necessary, I removed it.
Regards,
--
Nicolas Goaziou
next prev parent reply other threads:[~2017-11-05 9:06 UTC|newest]
Thread overview: 104+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-09-03 0:25 function for inserting a block Eric Abrahamsen
2017-09-03 2:21 ` Adam Porter
2017-09-03 3:06 ` Kaushal Modi
2017-09-03 3:34 ` Eric Abrahamsen
2017-09-03 8:10 ` Nicolas Goaziou
2017-09-03 8:19 ` Adam Porter
2017-09-03 8:23 ` Nicolas Goaziou
2017-09-03 15:56 ` Eric Abrahamsen
2017-09-03 18:31 ` Josiah Schwab
2017-09-03 19:28 ` Eric Abrahamsen
2017-09-03 20:26 ` Josiah Schwab
2017-09-03 20:44 ` Eric Abrahamsen
2017-09-08 18:52 ` Eric Abrahamsen
2017-09-10 12:44 ` Nicolas Goaziou
2017-09-10 18:39 ` Eric Abrahamsen
2017-09-29 20:09 ` Nicolas Goaziou
2017-09-30 20:26 ` Eric Abrahamsen
2017-10-05 14:47 ` Nicolas Goaziou
2017-10-07 20:03 ` Eric Abrahamsen
2017-10-14 10:52 ` Nicolas Goaziou
2017-10-16 19:46 ` Eric Abrahamsen
2017-10-16 19:59 ` Eric Abrahamsen
2017-10-17 7:46 ` Nicolas Goaziou
2017-10-17 16:27 ` Eric Abrahamsen
2017-10-17 21:33 ` Nicolas Goaziou
2017-10-17 21:43 ` Eric Abrahamsen
2017-10-17 22:03 ` Eric Abrahamsen
2017-10-18 6:45 ` Carsten Dominik
2017-10-18 14:58 ` Eric Abrahamsen
2017-10-19 15:47 ` Carsten Dominik
2017-10-20 18:04 ` Eric Abrahamsen
2017-10-20 18:39 ` Kaushal Modi
2017-10-20 19:02 ` Kaushal Modi
2017-10-20 21:15 ` Eric Abrahamsen
2017-10-20 21:13 ` Eric Abrahamsen
2017-10-20 21:43 ` Kaushal Modi
2017-10-21 11:30 ` Xebar Saram
2017-10-21 11:59 ` Marco Wahl
2017-10-21 13:32 ` Xebar Saram
2017-10-21 15:56 ` Eric Abrahamsen
2017-10-23 10:52 ` Kaushal Modi
2017-10-23 14:00 ` Carsten Dominik
2017-10-23 14:46 ` Kaushal Modi
2017-10-23 15:11 ` Eric Abrahamsen
2017-10-23 16:55 ` Nicolas Goaziou
2017-10-24 0:18 ` Eric Abrahamsen
2017-10-24 0:20 ` Eric Abrahamsen
2017-10-24 12:10 ` Nicolas Goaziou
2017-10-28 22:27 ` Eric Abrahamsen
2017-10-30 11:05 ` Nicolas Goaziou
2017-10-30 15:08 ` Eric S Fraga
2017-10-30 16:22 ` Eric Abrahamsen
2017-10-30 17:57 ` Eric Abrahamsen
2017-11-05 9:06 ` Nicolas Goaziou [this message]
2017-11-05 14:24 ` Kaushal Modi
2017-11-05 14:37 ` Kaushal Modi
2017-11-06 13:48 ` Nicolas Goaziou
2017-11-06 16:23 ` Kaushal Modi
2017-11-05 21:25 ` Eric Abrahamsen
2017-12-10 9:36 ` Thorsten Jolitz
2017-10-22 9:54 ` Nicolas Goaziou
2017-10-22 17:49 ` Eric Abrahamsen
2017-11-08 11:20 ` Bastien
2017-11-08 11:44 ` Nicolas Goaziou
2017-11-08 12:14 ` Bastien
2017-11-08 12:25 ` Restore old easy template feature (Re: function for inserting a block) Kaushal Modi
2017-11-08 12:43 ` Kaushal Modi
2017-11-08 14:08 ` Bastien Guerry
2017-12-18 22:07 ` Matt Price
2017-12-19 1:44 ` Eric Abrahamsen
2017-12-19 10:04 ` Rasmus
2017-12-19 17:49 ` Matt Price
2017-11-08 13:35 ` Nicolas Goaziou
2017-11-08 13:34 ` function for inserting a block Nicolas Goaziou
2017-11-08 14:34 ` Bastien Guerry
2017-11-08 16:01 ` Eric Abrahamsen
2017-11-08 16:33 ` William Denton
2017-11-08 14:07 ` Rasmus
2017-11-08 17:09 ` Berry, Charles
2017-11-08 17:28 ` Nicolas Goaziou
2017-11-08 18:24 ` Thomas S. Dye
2017-11-08 18:51 ` Takaaki Ishikawa
2017-11-08 20:10 ` Eric Abrahamsen
2017-11-08 22:28 ` Nicolas Goaziou
2017-11-09 4:31 ` Thomas S. Dye
2017-11-09 7:55 ` Carsten Dominik
2017-11-12 4:35 ` Matt Lundin
2017-11-12 6:08 ` numbchild
2017-11-09 14:46 ` Rasmus
2017-11-09 16:11 ` Rasmus
2017-11-09 16:50 ` Eric Abrahamsen
2017-11-10 9:31 ` Rasmus
2017-11-10 17:27 ` Eric Abrahamsen
2017-11-11 16:51 ` Thomas S. Dye
2017-11-14 21:36 ` Eric Abrahamsen
2017-11-15 13:13 ` numbchild
2017-11-15 16:24 ` Eric Abrahamsen
2017-11-17 16:19 ` numbchild
2017-11-17 19:14 ` Eric Abrahamsen
2017-11-18 0:09 ` numbchild
2017-11-20 13:40 ` Rasmus
2017-11-20 16:49 ` Eric Abrahamsen
2017-11-11 4:13 ` stardiviner
[not found] <mailman.107.1510246818.12116.emacs-orgmode@gnu.org>
2017-11-10 4:19 ` James Harkins
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87efpd9jsj.fsf@nicolasgoaziou.fr \
--to=mail@nicolasgoaziou.fr \
--cc=emacs-orgmode@gnu.org \
--cc=eric@ericabrahamsen.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.