From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marco Wahl Subject: Re: function for inserting a block Date: Sat, 21 Oct 2017 13:59:01 +0200 Message-ID: <84o9p07lve.fsf@gmail.com> References: <877exghblx.fsf@ericabrahamsen.net> <874lsabdop.fsf@ericabrahamsen.net> <87vak1l11m.fsf@nicolasgoaziou.fr> <87r2uoc4q7.fsf@ericabrahamsen.net> <87bmllk5xy.fsf@nicolasgoaziou.fr> <878tgmwwsa.fsf@ericabrahamsen.net> <87po9q2e8k.fsf@nicolasgoaziou.fr> <87tvyyvpst.fsf@ericabrahamsen.net> <87fuaiz069.fsf@nicolasgoaziou.fr> <87lgk9eo4d.fsf@ericabrahamsen.net> <87fuahxxvs.fsf@nicolasgoaziou.fr> <87r2u1cuwj.fsf@ericabrahamsen.net> <87infdctzq.fsf@ericabrahamsen.net> <87k1zsbizs.fsf@ericabrahamsen.net> <87k1zp4rxj.fsf@ericabrahamsen.net> <871slx4j6p.fsf@ericabrahamsen.net> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:47264) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e5sRD-0000HJ-6O for emacs-orgmode@gnu.org; Sat, 21 Oct 2017 07:59:37 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1e5sRA-0006vx-3I for emacs-orgmode@gnu.org; Sat, 21 Oct 2017 07:59:35 -0400 Received: from [195.159.176.226] (port=57671 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1e5sR9-0006tC-SG for emacs-orgmode@gnu.org; Sat, 21 Oct 2017 07:59:32 -0400 Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1e5sQq-0006M7-DE for emacs-orgmode@gnu.org; Sat, 21 Oct 2017 13:59:12 +0200 List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: emacs-orgmode@gnu.org Cc: Xebar Saram Hi! Xebar Saram 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