Patrick Drechsler <patr...@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 _______________________________________________ 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