Thorsten Jolitz <tjol...@gmail.com> writes: > Xebar Saram <zelt...@gmail.com> writes:
This is what I got in my init.el now (improved version with global keybindings). And I like, will probably become one of those commands I use all the time. I already used it to wrap the following code in 3 src-blocks: #+begin_src emacs-lisp (defun tj/wrap-sexp-or-reg-in-src-block (&optional lang lines) "Wrap sexp at point or region (point +-lines) in src block" (interactive (when current-prefix-arg (list (ido-completing-read "Org-Babel language: " (mapcar (lambda (--lang) (symbol-name (car --lang))) org-babel-load-languages) nil nil nil nil "emacs-lisp") (read-number "Number of lines to wrap: " 1)))) (let* ((language (or lang "emacs-lisp")) (marker (point-marker)) (beg (point)) (bol (bolp)) (end (if lines (save-excursion (forward-line lines) (point)) (save-excursion (forward-sexp) (point)))) (cut-strg (buffer-substring beg end))) (delete-region beg end) (goto-char (marker-position marker)) (insert (format "%s#+begin_src %s\n%s%s#+end_src\n" (if bol "" "\n") language cut-strg (if lines "" "\n"))) (set-marker marker nil))) #+end_src #+begin_src emacs-lisp (global-set-key (kbd "C-c w l") (lambda () (interactive) (let ((current-prefix-arg '(4))) (call-interactively 'tj/wrap-sexp-or-reg-in-src-block)))) #+end_src #+begin_src emacs-lisp (global-set-key (kbd "C-c w w") 'tj/wrap-sexp-or-reg-in-src-block) #+end_src -- cheers, Thorsten