Hi Thorsten and list

How are you?

small question. ive been using your amazing function daily last few days
and been lovin' it :)

i wonder if i could request a tiny related feature (this may be very easy
to do already).
i would like to assign hotkeys for 2 scenarios:

1) pre selected language for 1 line
2) pre selected language prompting for number of lines to wrap

so IE id assign F9-b to auto wrap current line with bash syntax while F9-l
would wrap in lisp
also F10-b would prompt me how man lines to wrap in bash etc

is that possible? thanks you again for all your wonderful work

kind regards

z



On Tue, Jul 29, 2014 at 6:36 PM, Thorsten Jolitz <tjol...@gmail.com> wrote:

>
> Hi List,
>
> I often missed the following command for wrapping existing content into
> src-blocks in the past, besides knowing about
> `org-babel-demarcate-block' and easy template insertion. Would it make
> sense to add it to Org-mode?
>
> I made it cover several use cases:
>
>   - Wrap sexp at point - perfect when on first paren of a nested list,
>     or when a string should be wrapped in a programming-mode, or a
>     word in a text-mode.
>
>   - Wrap region between point and +/- N lines forward/backward (very
>     fast because no point movement is involved).
>
>   - Wrap active region.
>
> Usage:
>
> 1. wrap active region or (if none) sexp-at-point in emacs-lisp src-block
>
> ,----
> | M-x org-wrap-in-src-block
> `----
>
> 2. wrap active region or (if none) sexp-at-point in src-block, prompt
>    user for Org-Babel language
>
> ,----
> | C-u M-x org-wrap-in-src-block
> `----
>
> 3. prompt user for Org-Babel language and number of lines to wrap
> (forward or backward)
>
> ,----
> | C-u C-u M-x org-wrap-in-src-block
> `----
>
>
> #+begin_src emacs-lisp
> (defun org-wrap-in-src-block (&optional lang lines)
>   "Wrap sexp-at-point or region in src-block.
>
> Use Org-Babel LANGuage for the src-block if given, Emacs-Lisp
> otherwise. A region instead of the sexp-at-point is wrapped if
> either
>
>    - optional argument LINES is an (positive or negative) integer
>    - or the region is active
>
> In the first case the region is determined by moving +/- LINES
> forward/backward from point using `forward-line', in the second
> case the active region is used.
>
> When called with prefix argument 'C-u', prompt the user for the
> Org-Babel language to use. When called with two prefix arguments
> 'C-u C-u', prompt the user for both the Org-Babel language to use
> and the number of lines to be wrapped."
>   (interactive
>    (cond
>     ((equal current-prefix-arg nil) nil)
>     ((equal current-prefix-arg '(4))
>      (list
>       (ido-completing-read "Org-Babel language: "
>                            (mapcar
>                             (lambda (--lang)
>                               (symbol-name (car --lang)))
>                             org-babel-load-languages)
>                            nil nil nil nil "emacs-lisp")))
>     ((equal current-prefix-arg '(16))
>      (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"))
>          (beg (or (and (not lines)
>                        (region-active-p)
>                        (region-beginning))
>                   (point)))
>          (marker (save-excursion (goto-char beg) (point-marker)))
>          (bol (save-excursion (goto-char beg) (bolp)))
>          (end (cond
>                (lines (save-excursion
>                         (forward-line lines) (point)))
>                ((region-active-p)(region-end))
>                (t (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 (or (and lines (< lines 0)) bol) "" "\n")
>       language
>       cut-strg
>       (if lines "" "\n")))
>     (set-marker marker nil)))
> #+end_src
>
> --
> cheers,
> Thorsten
>
>
>

Reply via email to