From mboxrd@z Thu Jan 1 00:00:00 1970 From: Karl Voit Subject: A short introduction to YASnippet (was: [Bug] Yasnippet/Org: properties messed up when expanding $1) Date: Mon, 11 Feb 2013 17:31:42 +0100 Message-ID: <2013-02-11T17-16-57@devnull.Karl-Voit.at> References: <2013-02-07T12-39-18@devnull.Karl-Voit.at> <2013-02-10T18-48-03@devnull.Karl-Voit.at> <87txpig8w7.fsf@bzg.ath.cx> Reply-To: news1142@Karl-Voit.at Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Return-path: Received: from eggs.gnu.org ([208.118.235.92]:51012) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1U4wIO-0001TQ-FL for emacs-orgmode@gnu.org; Mon, 11 Feb 2013 11:31:57 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1U4wIM-00032k-AN for emacs-orgmode@gnu.org; Mon, 11 Feb 2013 11:31:56 -0500 Received: from plane.gmane.org ([80.91.229.3]:34301) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1U4wIM-00032R-3R for emacs-orgmode@gnu.org; Mon, 11 Feb 2013 11:31:54 -0500 Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1U4wId-00044S-Kn for emacs-orgmode@gnu.org; Mon, 11 Feb 2013 17:32:11 +0100 Received: from mail.michael-prokop.at ([88.198.6.110]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Mon, 11 Feb 2013 17:32:11 +0100 Received: from news1142 by mail.michael-prokop.at with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Mon, 11 Feb 2013 17:32:11 +0100 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-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org * Bastien wrote: > Hi Karl, Hi! > I've installed Yasnippet (from GNU ELPA) but I think I need more > help on how to test it... expanding with TAB in text-mode and in > yas-minor-mode doesn't produce anything useful. Does it produce something at all? > Can you make a recipe for yas-n00bs? Sure. If yasnippet is installed and loaded, you should get an additional menu entry called «YASnippet». You find out, where your snippet folder is located. Mine is «~/.emacs.d/snippets». yasnippet is pretty straight forward: every text file within the snippet folder is a defined snippet. If not stated otherwise in the header of the file, the name of the snippet file is the command which is used to expand. You can define snippets that are only available in certain modes: snippets within «$SNIPPETDIR/text-mode/org-mode» are only available in Org-mode. Following snippet is only available in Org-mode and is expanded by entering «test» followed by TAB: ,----[ Snippet «~/.emacs.d/snippets/text-mode/org-mode/test» ] | # name : Testing yasnippet/org issue | # -- | | ** Test ${1:test} | :PROPERTIES: | :ID: $1 | :END: `---- AFAIR the header is optional. Within the header, you can define additional description, alternative name, author, and so forth. If you add new snippets, you can choose «YASnippet/Reload everything» from the Emacs menu. I guess this is «yas/reload-all». Within a snippet, the first «$1» results in putting the cursor at this point and «asking» the user to enter a string. You can define a default string with «${1:test}» where «test» is the default string for «$1». All other occurrences of «$1» will be replaced by the very same user string which is quite handy: you have to enter it only once and it gets replaced multiple times. The snippet above with «$1» as «foo bar» should result in: ,----[ expanded snippet «test» with «foo bar» ] | ** Test foo bar | :PROPERTIES: | :ID: foo bar | :END: `---- For further documentation, please refer to [1]. At my side, any «$x» within the PROPERTIES drawer messes up the line. YASnippets are very easy to set up, very handy to use. IMHO, everybody should use something like yasnippet in his/her daily workflow. 1. http://capitaomorte.github.com/yasnippet/#how-to-use-yasnippet -- Karl Voit