Hello, In org mode, are there any shortcut keys for typing the following mark-ups? #+BEGIN_EXAMPLE #+END_EXAMPLE Thanks! Xin
Xin Shi <xs32@cornell.edu> writes:
> In org mode, are there any shortcut keys for typing the following mark-ups?
>
> #+BEGIN_EXAMPLE
> #+END_EXAMPLE
Not that I'm aware of. You can use a function like the following to
achieve this - or maybe you can use yasnippets (I've never tried that
yet)
------------------------------------------------------------------------
(defun bth-begin-example ()
(interactive)
(save-excursion
(beginning-of-line)
(insert "#+BEGIN_EXAMPLE\n")
(end-of-line)
(insert "\n#+END_EXAMPLE")))
(global-set-key (kbd "<f9> e") 'bth-begin-example)
------------------------------------------------------------------------
Then you can just type <f9> e while on a line and it'll put the EXAMPLE
block around the current line.
HTH,
-Bernt
Hi Xin,
there is only an undocumented way to do this:
On an empty line, insert "<e" and then type TAB.
See org-structure-template-alist for a configurable list of similar
templates.
HTH
- Carsten
On Jan 6, 2009, at 5:35 PM, Xin Shi wrote:
> Hello,
>
> In org mode, are there any shortcut keys for typing the following
> mark-ups?
>
> #+BEGIN_EXAMPLE
> #+END_EXAMPLE
>
> Thanks!
>
> Xin
>
>
>
> _______________________________________________
> Emacs-orgmode mailing list
> Remember: use `Reply All' to send replies to the list.
> Emacs-orgmode@gnu.org
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Hi Carsten,
That's cool! I think it'll be great to document them on the org-manual.
Xin
Carsten Dominik wrote:
>
> Hi Xin,
>
> there is only an undocumented way to do this:
>
> On an empty line, insert "<e" and then type TAB.
>
> See org-structure-template-alist for a configurable list of similar
> templates.
>
> HTH
>
> - Carsten
>
>
> On Jan 6, 2009, at 5:35 PM, Xin Shi wrote:
>
>> Hello,
>>
>> In org mode, are there any shortcut keys for typing the following
>> mark-ups?
>>
>> #+BEGIN_EXAMPLE
>> #+END_EXAMPLE
>>
>> Thanks!
>>
>> Xin
>>
>>
>>
>> _______________________________________________
>> Emacs-orgmode mailing list
>> Remember: use `Reply All' to send replies to the list.
>> Emacs-orgmode@gnu.org
>> http://lists.gnu.org/mailman/listinfo/emacs-orgmode
>
Hi Bernt,
Thanks for your reply! That's what I was trying to do. But I think
Carsten's suggestion of using the "org-structure-template-alist" is more
appealing to general user.
Xin
Bernt Hansen wrote:
> Xin Shi <xs32@cornell.edu> writes:
>
>
>> In org mode, are there any shortcut keys for typing the following mark-ups?
>>
>> #+BEGIN_EXAMPLE
>> #+END_EXAMPLE
>>
>
> Not that I'm aware of. You can use a function like the following to
> achieve this - or maybe you can use yasnippets (I've never tried that
> yet)
>
> ------------------------------------------------------------------------
> (defun bth-begin-example ()
> (interactive)
> (save-excursion
> (beginning-of-line)
> (insert "#+BEGIN_EXAMPLE\n")
> (end-of-line)
> (insert "\n#+END_EXAMPLE")))
>
>
> (global-set-key (kbd "<f9> e") 'bth-begin-example)
> ------------------------------------------------------------------------
>
> Then you can just type <f9> e while on a line and it'll put the EXAMPLE
> block around the current line.
>
> HTH,
>
> -Bernt
>
On Jan 6, 2009, at 7:50 PM, Xin Shi wrote: > Hi Bernt, > > Thanks for your reply! That's what I was trying to do. But I think > Carsten's suggestion of using the "org-structure-template-alist" is > more appealing to general user. I do like thought that Bernt puts his template around the current line..... - Carsten > > > Xin > > > Bernt Hansen wrote: >> Xin Shi <xs32@cornell.edu> writes: >> >> >>> In org mode, are there any shortcut keys for typing the following >>> mark-ups? >>> >>> #+BEGIN_EXAMPLE >>> #+END_EXAMPLE >>> >> >> Not that I'm aware of. You can use a function like the following to >> achieve this - or maybe you can use yasnippets (I've never tried that >> yet) >> >> ------------------------------------------------------------------------ >> (defun bth-begin-example () >> (interactive) >> (save-excursion >> (beginning-of-line) >> (insert "#+BEGIN_EXAMPLE\n") >> (end-of-line) >> (insert "\n#+END_EXAMPLE"))) >> >> >> (global-set-key (kbd "<f9> e") 'bth-begin-example) >> ------------------------------------------------------------------------ >> >> Then you can just type <f9> e while on a line and it'll put the >> EXAMPLE >> block around the current line. >> >> HTH, >> >> -Bernt >> > > > > _______________________________________________ > Emacs-orgmode mailing list > Remember: use `Reply All' to send replies to the list. > Emacs-orgmode@gnu.org > http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Or use the org-mode map rather than global key
(define-key org-mode-map (kbd "C-<f9>") '(lambda()(interactive)(insert "#+BEGIN_EXAMPLE\n\n#+END_EXAMPLE")(previous-line)))
Xin Shi <xs32@cornell.edu> writes:
> Hi Bernt,
>
> Thanks for your reply! That's what I was trying to do. But I think
> Carsten's suggestion of using the "org-structure-template-alist" is
> more appealing to general user.
>
> Xin
>
>
> Bernt Hansen wrote:
>> Xin Shi <xs32@cornell.edu> writes:
>>
>>
>>> In org mode, are there any shortcut keys for typing the following mark-ups?
>>>
>>> #+BEGIN_EXAMPLE
>>> #+END_EXAMPLE
>>>
>>
>> Not that I'm aware of. You can use a function like the following to
>> achieve this - or maybe you can use yasnippets (I've never tried that
>> yet)
>>
>> ------------------------------------------------------------------------
>> (defun bth-begin-example ()
>> (interactive)
>> (save-excursion
>> (beginning-of-line)
>> (insert "#+BEGIN_EXAMPLE\n")
>> (end-of-line)
>> (insert "\n#+END_EXAMPLE")))
>>
>>
>> (global-set-key (kbd "<f9> e") 'bth-begin-example)
>> ------------------------------------------------------------------------
>>
>> Then you can just type <f9> e while on a line and it'll put the EXAMPLE
>> block around the current line.
>>
>> HTH,
>>
>> -Bernt
>>
>
>
>
> _______________________________________________
> Emacs-orgmode mailing list
> Remember: use `Reply All' to send replies to the list.
> Emacs-orgmode@gnu.org
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode
--
important and urgent problems of the technology of today are no longer the satisfactions of the primary needs or of archetypal wishes, but the reparation of the evils and damages by the technology of yesterday. ~Dennis Gabor, Innovations: Scientific, Technological and Social, 1970
Bernt Hansen schrieb: [snipped nice code] How can I extend this function to wrap the current selection into a #+BEGIN_SRC ...code... #+END_SRC string while also interactively asking the user for a language string? ----------------------------------------------------------------- ;; ============================================================ ;; Puts current selection between #+BEGIN_SRC and #+END_SRC ;; and ask for language ;; ============================================================ ;; TODO: ;; 1. Retrieve beginning (C-SPACE) and ;; end of selection (current position) ;; 2. Ask for language and insert that string ;; after `#+BEGIN_SRC ' (defun my-wrap-src () (interactive) (save-excursion (beginning-of-line) (insert "#+BEGIN_SRC\n") (end-of-line) (insert "\n#+END_SRC"))) (define-key org-mode-map (kbd "<f9> s") 'my-wrap-src) ----------------------------------------------------------------- Example org code before function call: ----------------------------------------------------------------- * Sample Code public class Bla { public static void main(String[] args) { System.out.println("Hello"); } } ----------------------------------------------------------------- With the code above: - Mark the region: C-SPACE on the letter `p' of the string `public' and moving the cursor behind the last closing curly bracket. - String after being asked for a language: `java' Example org code after function call: ----------------------------------------------------------------- * Sample Code #+BEGIN_SRC java public class Bla { public static void main(String[] args) { System.out.println("Hello"); } } #+END_SRC ----------------------------------------------------------------- TIA, Patrick
Patrick Drechsler <patrick@pdrechsler.de> writes:
> Bernt Hansen schrieb:
> [snipped nice code]
>
> How can I extend this function to wrap the current selection into a
>
> #+BEGIN_SRC
> ...code...
> #+END_SRC
>
> string while also interactively asking the user for a language string?
>
> -----------------------------------------------------------------
> ;; ============================================================
> ;; Puts current selection between #+BEGIN_SRC and #+END_SRC
> ;; and ask for language
> ;; ============================================================
> ;; TODO:
> ;; 1. Retrieve beginning (C-SPACE) and
> ;; end of selection (current position)
> ;; 2. Ask for language and insert that string
> ;; after `#+BEGIN_SRC '
> (defun my-wrap-src ()
> (interactive)
> (save-excursion
> (beginning-of-line)
> (insert "#+BEGIN_SRC\n")
> (end-of-line)
> (insert "\n#+END_SRC")))
> (define-key org-mode-map (kbd "<f9> s") 'my-wrap-src)
> -----------------------------------------------------------------
>
> Example org code before function call:
>
> -----------------------------------------------------------------
> * Sample Code
> public class Bla {
> public static void main(String[] args) {
> System.out.println("Hello");
> }
> }
> -----------------------------------------------------------------
>
> With the code above:
>
> - Mark the region: C-SPACE on the letter `p' of the string `public'
> and moving the cursor behind the last closing curly bracket.
>
> - String after being asked for a language: `java'
>
> Example org code after function call:
>
> -----------------------------------------------------------------
> * Sample Code
> #+BEGIN_SRC java
> public class Bla {
> public static void main(String[] args) {
> System.out.println("Hello");
> }
> }
> #+END_SRC
> -----------------------------------------------------------------
Something like this maybe? It's not 100% to spec. I find regions that
are entire lines easier to work with so the end point would be the
beginning of the first line not in the region (not after the })
For me - triple clicking and dragging selects entire lines which works
well for this.
------------------------------------------------------------------------
(defun my-wrap-src ()
(interactive)
(let ((beg (region-beginning))
(end (region-end))
(src (read-from-minibuffer "Source type: " "java")))
(save-excursion
(goto-char (region-end))
(insert "#+END_SRC\n")
(goto-char (region-beginning))
(insert "#+BEGIN_SRC " src "\n"))))
------------------------------------------------------------------------
If you want your behaviour you probably jsut have to change
(insert "#+END_SRC\n")
to
(insert "\n#+END_SRC")
but that's untested.
HTH,
-Bernt
Bernt Hansen schrieb: > Patrick Drechsler <patrick@pdrechsler.de> writes: > >> Bernt Hansen schrieb: >> [snipped nice code] >> How can I extend this function to wrap the current selection into a >> >> #+BEGIN_SRC >> ...code... >> #+END_SRC >> >> string while also interactively asking the user for a language string? > Something like this maybe? It's not 100% to spec. I find regions that > are entire lines easier to work with so the end point would be the > beginning of the first line not in the region (not after the }) > For me - triple clicking and dragging selects entire lines which works > well for this. > > ------------------------------------------------------------------------ > (defun my-wrap-src () > (interactive) > (let ((beg (region-beginning)) > (end (region-end)) > (src (read-from-minibuffer "Source type: " "java"))) > (save-excursion > (goto-char (region-end)) > (insert "#+END_SRC\n") > (goto-char (region-beginning)) > (insert "#+BEGIN_SRC " src "\n")))) > ------------------------------------------------------------------------ Wonderful! Thank you very much, it works like a charm! And your analysis of my sloppy specs was also correct. Thank you, Patrick