Ok so spend all morning picking up some elisp and i made some progress :) i can bind a key to auto warp a line. though i had to add a delete command since it always added 2 empty spaces after the wrap for some reason., it now looks like this (since its my first ever elisp code its probably very ugly :) ) : ;;;;;;;;;; wrap in elisp (defun z/wrap-in-elisp-block () (org-dp-wrap-in-block nil '(src-block nil nil nil (:language "emacs-lisp")))) (global-set-key (kbd "C-c w e") (lambda () (interactive) (beginning-of-line) (z/wrap-in-elisp-block) (beginning-of-line) (delete-char 2) ; (delete-indentation) )) this seems to work on a selection as well (with the whitespace again appearing) i have some more ideas and wondered if anyone knew how to extend it by maybe creating functions that will: 1. ask how many X lines to wrap 2. paste from clip already wrapped in language X 3. auto select a region/paragraph and wrap. im thinking maybe using expand-region.el for that thanks alot Thorsten for this great library! Z On Sat, Mar 7, 2015 at 8:37 AM, Xebar Saram wrote: > H Thorsten > > i know this is a *very* late response but life/work has dragged me in last > few months and only now i have time to take a look at org-dp :) > > if you remember i have near to null coding skills but i am trying to make > sense of stuff looking at the github site and the org-dp.el examples > > i understand (or at least i think i do) that org-dp is very complex and > covers not just wrapping in source code lines/areas but what i basically > need is to assign hotkeys to specific wrapping. mainly these: > > 1. a hotkey to quick wrap in language X a line > 2. a hotkey to quick wrap in language X y lines > 3. a hotkey to quick wrap in language X a selection > > any tips and how to start/create these keybinds? is there a more > comprehensive documentation on org-dp somewhere else i may have overlooked? > > thx alot! > > z > > > > > On Tue, Aug 19, 2014 at 10:41 PM, Thorsten Jolitz > wrote: > >> Xebar Saram writes: >> >> Hi, >> >> > will use it over the next few days and report bug (if any) that i find >> >> good, thanks. >> >> As a hint, here the global keybindings I defined in my init.el (my >> default use-case is to simply wrap in a plain emacs-lisp src-block). >> >> You can define all kinds of functions that don't prompt the user anymore >> by giving a list like >> >> '(elem-type contents replace affiliated args) >> >> as second arg to `org-dp-wrap-in-block', and in that list you can >> specify any kind of customized block. >> >> #+BEGIN_SRC emacs-lisp >> (when (require 'org-dp-lib nil t) >> >> (defun tj/wrap-in-elisp-block () >> (org-dp-wrap-in-block >> nil '(src-block nil nil nil (:language "emacs-lisp")))) >> >> (global-set-key (kbd "C-c w w") 'org-dp-wrap-in-block) >> >> (global-set-key (kbd "C-c w l") >> (lambda () >> (interactive) >> (let ((current-prefix-arg '(4))) >> (call-interactively >> 'org-dp-wrap-in-block)))) >> >> (global-set-key (kbd "C-c w e") >> (lambda () >> (interactive) >> (beginning-of-line) >> (tj/wrap-in-elisp-block))) >> >> (global-set-key (kbd "C-c w a") >> (lambda () >> (interactive) >> (backward-sexp) >> (beginning-of-line) >> (tj/wrap-in-elisp-block))) ) >> #+END_SRC >> >> >> > On Tue, Aug 19, 2014 at 5:14 PM, Thorsten Jolitz >> > wrote: >> > >> > Hi List, >> > >> > I've written the "eierlegende Wollmilchsau" of wrap-in-block >> > functions >> > (i.e. the 'all-inclusive mother of all wrap-in-block functions'). >> > >> > To check it out, you need to >> > 1. Clone or fork the git repo (https://github.com/tj64/org-dp) >> > 2. (add-to-list 'load-path "/path/to/org-dp/") and >> > 3. (require 'org-dp-lib') in your init file >> > >> > `org-dp-wrap-in-block' works on/with all kinds of Org blocks, and >> > can be >> > called interactively or non-interactively. >> > >> > It >> > >> > - inserts a new block when called on an empty line without >> > arguments >> > >> > - wraps sexp or region or '+/- X lines from point' into a newly >> > created >> > block >> > >> > - when called with point inside a block, it either >> > >> > + unwraps the blocks content, i.e. deletes the surrounding block >> > or >> > >> > + replaces the surrounding block with a different block >> > >> > It takes full account of affiliated keywords. In case of >> > src-blocks, >> > it puts src-block parameters on the block's headline, but with >> > `org-dp-toggle-headers' its easy to toggle between parameters >> > >> > ,---- >> > | #+begin_src R :noweb yes >> > `---- >> > >> > and headers >> > >> > ,---- >> > | #+header: :noweb yes >> > | #+begin_src R >> > `---- >> > >> > This function takes into account so many options that >> > combinatorics hits >> > you badly when trying to test all of them. Everything I tried >> > works now >> > with the current version, but its not unlikely that daily usage >> > will >> > discover some bugs or untreated corner cases. Please report them >> > with >> > backtrace. >> > >> > The good news is that besides its complexity, its not one >> > mega-convoluted monolithic function for a single task only. >> > Instead I >> > outfactored the core functionality into the 'org-dp.el' library >> > ("Declarative Programming with Org Elements") which offers >> > potentially >> > massive time (and headache) savings when programming with Org >> > Elements >> > on the local level. >> > >> > 'org-dp' acts on the internal representation of Org elements, and >> > due to >> > the total uniformity of this representation it is possible to do >> > diverse >> > actions on diverse elements in a very uniform way, thus the 3 >> > functions >> > >> > - `org-dp-create' >> > >> > - `org-dp-rewire' >> > >> > - `org-dp-prompt' >> > >> > should be all you need for all kinds of programming >> > tasks. `org-dp-wrap-in-block' is one example of how to program >> > with >> > org-dp, `org-dp-toggle-headers' is another one. >> > >> > Hope that this is useful. >> > >> > PS >> > >> > For the sake of completeness, here the docstring of >> > `org-dp-wrap-in-block': >> > >> > ,----[ C-h f org-dp-wrap-in-block RET ] >> > | org-dp-wrap-in-block is an interactive Lisp function in >> > | `org-dp-lib.el'. >> > | >> > | It is bound to C-c w w. >> > | >> > | (org-dp-wrap-in-block &optional LINES USER-INFO) >> > | >> > | Wrap sexp-at-point or region in Org block. >> > | >> > | A region instead of the sexp-at-point is wrapped if either >> > | >> > | - optional arg 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. >> > | >> > | If point is already inside of a block, modify it or unwrap its >> > | content/value instead of wrapping it in another block, except if >> > | explicitly asked for by user. >> > | >> > | If USER-INFO is given, it should be a list in the format >> > returned by >> > | `org-dp-prompt', i.e. >> > | >> > | (elem-type contents replace affiliated args) >> > | >> > | Look up that function's docstring for more information about the >> > | list's elements. A non-nil USER-INFO suppresses calls to >> > | `org-dp-prompt' and is used instead of its return value. >> > `---- >> > >> > -- >> > cheers, >> > Thorsten >> > >> > >> > >> > >> >> -- >> cheers, >> Thorsten >> >> >> >