emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Marco Wahl <marcowahlsoft@gmail.com>
To: emacs-orgmode@gnu.org
Cc: Xebar Saram <zeltakc@gmail.com>
Subject: Re: function for inserting a block
Date: Sat, 21 Oct 2017 13:59:01 +0200	[thread overview]
Message-ID: <84o9p07lve.fsf@gmail.com> (raw)
In-Reply-To: CAOQHXPqjF1uNQzJtOqGCpFEBUeveH3z43KRsgDediZ4gqduV-Q@mail.gmail.com

Hi!

Xebar Saram <zeltakc@gmail.com> writes:

> this looks really cool and would love to try. as a non technical user, how
> does one use the patch to get the functionality? is there a way to create a
> clean function only version from the patch i can try?

You could simply pick the relevant parts from the patch and evaluate
them.

Concretely you could do:

1. Copy Eric's code to empty buffer *scratch*.  The relevant code is

#+BEGIN_SRC elisp
(defcustom org-structure-predefined-blocks
  '("SRC" "EXAMPLE" "QUOTE" "VERSE" "VERBATIM" "CENTER" "COMMENT" "EXPORT")
  "Block structure completion names."
  :group 'org-completion
  :type '(repeat string)
  :package-version '(Org . "9.1.3"))

(defun org-insert-structure-template (&optional type)
  "Insert a block structure of the type #+BEGIN_FOO/#+END_FOO.
Prompts for a block type, and inserts the block.  With an active
region, wrap the region in the block.  With an element under
point, wrap the element in the block.  Otherwise, insert an empty
block."
  (interactive)
  (setq type (or type (completing-read "Block type: "
				       org-structure-predefined-blocks)))
  (unless (use-region-p)
    (when (org-element-at-point)
      (org-mark-element)))
  (let ((s (if (use-region-p)
	       (region-beginning)
	     (point)))
	(e (copy-marker (if (use-region-p)
			    (region-end)
			  (point))
			t))
	column)
    (when (string-equal (downcase type) "example")
      (org-escape-code-in-region s e))
    (goto-char s)
    (setq column (current-indentation))
    (beginning-of-line)
    (indent-to column)
    (insert (format "#+BEGIN_%s\n" type))
    (goto-char e)
    (if (bolp)
	(progn
	  (skip-chars-backward " \n\t")
	  (forward-line))
      (end-of-line)
      (insert "\n"))
    (indent-to column)
    (insert (format "#+END_%s\n"
		    type))
    (set-marker e nil)))

(org-defkey org-mode-map "\C-c\C-xw"    'org-insert-structure-template)
#+END_SRC

2. In buffer *scratch* do

    M-x eval-buffer

3. Voila!  Check out C-c C-x w in an org mode buffer.


Best regards
            Marco

  reply	other threads:[~2017-10-21 11:59 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 [this message]
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
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=84o9p07lve.fsf@gmail.com \
    --to=marcowahlsoft@gmail.com \
    --cc=emacs-orgmode@gnu.org \
    --cc=zeltakc@gmail.com \
    /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).