Re: [O] [RFC] Add commmand for wrapping sexp/region in src-blocks to Org?
thanks Thorsten its perfect z On Tue, Aug 5, 2014 at 4:15 PM, Thorsten Jolitz tjol...@gmail.com wrote: Xebar Saram zelt...@gmail.com writes: Hi Xebar, small question. sorry for the late answer 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? I think so, I have some predefined calls to that function with global keybindings in my init file (right now I call it `tj/wrap-in-src-block', you might have to adapt this): (global-set-key (kbd C-c w l) (lambda () (interactive) (let ((current-prefix-arg '(4))) (call-interactively 'tj/wrap-in-src-block (global-set-key (kbd C-c w n) (lambda () (interactive) (let ((current-prefix-arg '(16))) (call-interactively 'tj/wrap-in-src-block (global-set-key (kbd C-c w w) 'tj/wrap-in-src-block) 1) pre selected language for 1 line e.g. (global-set-key (kbd C-c w y) (lambda () (interactive) (tj/wrap-in-src-block shell 1))) 2) pre selected language prompting for number of lines to wrap emacs-lisp is kind of preselected, but you could add this after the ((equal current-prefix-arg '(16)) ...) part ((equal current-prefix-arg '(64)) (list shell (read-number Number of lines to wrap: 1))) and then (global-set-key (kbd C-c w z) (lambda () (interactive) (let ((current-prefix-arg '(64))) (call-interactively 'tj/wrap-in-src-block everything untested, unfortunately ... -- cheers, Thorsten
Re: [O] [RFC] Add commmand for wrapping sexp/region in src-blocks to Org?
Xebar Saram zelt...@gmail.com writes: thanks Thorsten its perfect well, not perfect yet since, as Nicolas mentioned, it does not cover all possible use cases (wrap/unwrap/modify ALL kinds of Org blocks with or without header-line params and with or without affiliated keywords or with a combination of both). I got pretty far in implementing this, but spent too much time - maybe I can deliver the general 'all-inclusive' version later, I hope so, its useful. On Tue, Aug 5, 2014 at 4:15 PM, Thorsten Jolitz tjol...@gmail.com wrote: Xebar Saram zelt...@gmail.com writes: Hi Xebar, small question. sorry for the late answer 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? I think so, I have some predefined calls to that function with global keybindings in my init file (right now I call it `tj/wrap-in-src-block', you might have to adapt this): (global-set-key (kbd C-c w l) (lambda () (interactive) (let ((current-prefix-arg '(4))) (call-interactively 'tj/wrap-in-src-block (global-set-key (kbd C-c w n) (lambda () (interactive) (let ((current-prefix-arg '(16))) (call-interactively 'tj/wrap-in-src-block (global-set-key (kbd C-c w w) 'tj/wrap-in-src-block) 1) pre selected language for 1 line e.g. (global-set-key (kbd C-c w y) (lambda () (interactive) (tj/wrap-in-src-block shell 1))) 2) pre selected language prompting for number of lines to wrap emacs-lisp is kind of preselected, but you could add this after the ((equal current-prefix-arg '(16)) ...) part ((equal current-prefix-arg '(64)) (list shell (read-number Number of lines to wrap: 1))) and then (global-set-key (kbd C-c w z) (lambda () (interactive) (let ((current-prefix-arg '(64))) (call-interactively 'tj/wrap-in-src-block everything untested, unfortunately ... -- cheers, Thorsten -- cheers, Thorsten
Re: [O] [RFC] Add commmand for wrapping sexp/region in src-blocks to Org?
that sounds great :) looking forward to the next iterations ;-) thanks again for all your hard work Z On Wed, Aug 6, 2014 at 3:14 PM, Thorsten Jolitz tjol...@gmail.com wrote: Xebar Saram zelt...@gmail.com writes: thanks Thorsten its perfect well, not perfect yet since, as Nicolas mentioned, it does not cover all possible use cases (wrap/unwrap/modify ALL kinds of Org blocks with or without header-line params and with or without affiliated keywords or with a combination of both). I got pretty far in implementing this, but spent too much time - maybe I can deliver the general 'all-inclusive' version later, I hope so, its useful. On Tue, Aug 5, 2014 at 4:15 PM, Thorsten Jolitz tjol...@gmail.com wrote: Xebar Saram zelt...@gmail.com writes: Hi Xebar, small question. sorry for the late answer 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? I think so, I have some predefined calls to that function with global keybindings in my init file (right now I call it `tj/wrap-in-src-block', you might have to adapt this): (global-set-key (kbd C-c w l) (lambda () (interactive) (let ((current-prefix-arg '(4))) (call-interactively 'tj/wrap-in-src-block (global-set-key (kbd C-c w n) (lambda () (interactive) (let ((current-prefix-arg '(16))) (call-interactively 'tj/wrap-in-src-block (global-set-key (kbd C-c w w) 'tj/wrap-in-src-block) 1) pre selected language for 1 line e.g. (global-set-key (kbd C-c w y) (lambda () (interactive) (tj/wrap-in-src-block shell 1))) 2) pre selected language prompting for number of lines to wrap emacs-lisp is kind of preselected, but you could add this after the ((equal current-prefix-arg '(16)) ...) part ((equal current-prefix-arg '(64)) (list shell (read-number Number of lines to wrap: 1))) and then (global-set-key (kbd C-c w z) (lambda () (interactive) (let ((current-prefix-arg '(64))) (call-interactively 'tj/wrap-in-src-block everything untested, unfortunately ... -- cheers, Thorsten -- cheers, Thorsten
Re: [O] [RFC] Add commmand for wrapping sexp/region in src-blocks to Org?
Xebar Saram zelt...@gmail.com writes: Hi Xebar, small question. sorry for the late answer 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? I think so, I have some predefined calls to that function with global keybindings in my init file (right now I call it `tj/wrap-in-src-block', you might have to adapt this): (global-set-key (kbd C-c w l) (lambda () (interactive) (let ((current-prefix-arg '(4))) (call-interactively 'tj/wrap-in-src-block (global-set-key (kbd C-c w n) (lambda () (interactive) (let ((current-prefix-arg '(16))) (call-interactively 'tj/wrap-in-src-block (global-set-key (kbd C-c w w) 'tj/wrap-in-src-block) 1) pre selected language for 1 line e.g. (global-set-key (kbd C-c w y) (lambda () (interactive) (tj/wrap-in-src-block shell 1))) 2) pre selected language prompting for number of lines to wrap emacs-lisp is kind of preselected, but you could add this after the ((equal current-prefix-arg '(16)) ...) part ((equal current-prefix-arg '(64)) (list shell (read-number Number of lines to wrap: 1))) and then (global-set-key (kbd C-c w z) (lambda () (interactive) (let ((current-prefix-arg '(64))) (call-interactively 'tj/wrap-in-src-block everything untested, unfortunately ... -- cheers, Thorsten
Re: [O] [RFC] Add commmand for wrapping sexp/region in src-blocks to Org?
Nicolas Goaziou m...@nicolasgoaziou.fr writes: Hello, Why limiting it to ... I'll leave it as personnal init.el customization, maybe it evolves over time towards a function that deals with the general case. Thanks for the comments though. -- cheers, Thorsten
Re: [O] [RFC] Add commmand for wrapping sexp/region in src-blocks to Org?
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
Re: [O] [RFC] Add commmand for wrapping sexp/region in src-blocks to Org?
Hello, Thorsten Jolitz tjol...@gmail.com writes: 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 region between point and +/- N lines forward/backward (very fast because no point movement is involved). This is not really useful as, with muscle memory, you'll probably mark the appropriate region instead of counting lines. Also it requires the point to be at the center of the area you want to wrap. - Wrap active region. Why limiting it to source blocks? One may want to wrap region with, e.g., a quote block. Also, with a prefix argument, it would be nice to edit the block containing point (change its type), or remove it completely. Regards, -- Nicolas Goaziou
Re: [O] [RFC] Add commmand for wrapping sexp/region in src-blocks to Org?
Hi Thorsten, On 2014-07-29 17:36, Thorsten Jolitz tjol...@gmail.com writes: 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 find this most useful and have added it in my configuration. It would make sense to add it to org-mode. Thanks, Alan -- OpenPGP Key ID : 040D0A3B4ED2E5C7 pgpEIGf6qrEVe.pgp Description: PGP signature
[O] [RFC] Add commmand for wrapping sexp/region in src-blocks to Org?
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