emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
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

  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

  List information: https://www.orgmode.org/

* 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 public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).