emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] some lisp help (for complete 0-knowledge lisp emacs user :))


From: Xebar Saram
Subject: Re: [O] some lisp help (for complete 0-knowledge lisp emacs user :))
Date: Tue, 29 Jul 2014 15:48:24 +0300

Thx and sorry about not posting to the list, was a gmail mistake (i really *need* to start with gnus..just to intimidating :))

wrapping in parens by marking the region kinda defeats the purpose sine the original function i posted (in the original post) already wraps the marked text in an orgmode block :)

thanks and sorry for PM

Z




On Tue, Jul 29, 2014 at 3:42 PM, Thorsten Jolitz <address@hidden> wrote:
Xebar Saram <address@hidden> writes:

why a PM???

> Thx Thorsten
>
> this works very well for code blocks. it seems though that for normal
> text paragraphs it dosent work that well. may i suggest an idea? can
> the function perhaps prompt the user (when you launch the function)
> for number of lines to wrap and then issue the wrap based on that?
> that could perhaps be the most accurate way to do that? or maybe
> perhaps have a separate function to just wrap current line?
>
> thx alot, appreciate as always your excellent help

just wrap your paragraph in parens and call the command with point on
the beginning paren, and it will work - for any number of lines.
easy to do with package smartparens.el:

mark region and type '(', region is wrapped automatically.

> On Tue, Jul 29, 2014 at 3:21 PM, Thorsten Jolitz <address@hidden>
> wrote:
>
>
>     Xebar Saram <address@hidden> writes:
>
>     > Hi list
>     >
>     > so i know i should start to really learn lisp but real life (uni
>     work,
>     > family etc) doesn't really allow me so im marking my 1st year
>     > anniversary of using emacs without grasping lisp (plus i am in
>     > generally coding inept :))
>     >
>     > in any case.... :) i have this handy lisp snippet that i find
>     very
>     > useful and maybe some others in the list will find as well. it
>     allows
>     > to quick convert lines of text into org src/example blocks:
>     >
>     > (defun z-wrap-cblock-lisp ()
>     > "Wrap region in quote block"
>     > (interactive)
>     > (save-excursion
>     > (save-restriction
>     > (and
>     > (region-active-p)
>     > (use-region-p)
>     > (narrow-to-region (region-beginning) (region-end)))
>     > (goto-char (point-min))
>     > (insert "#+BEGIN_SRC emacs-lisp :results none\n")
>     > (goto-char (point-max))
>     > (insert "#+END_SRC\n")
>     > (deactivate-mark))))
>     >
>     > this works well but has some annoying flaws like you have to
>     first
>     > manually mark the region you want to convert etc
>     >
>     > i was wondering:
>     >
>     > a)can some lisp coding master show me how to make this function
>     auto
>     > select the line//X user defined lines/smart paragraph selection
>     before
>     > it wraps it in the org block
>     > b)any improvement ideas from the community?
>
>
>     Try this:
>
>     #+begin_src emacs-lisp
>     (defun tj/wrap-sexp-in-elisp-src-block ()
>     "Wrap sexp at point in elisp src block"
>     (interactive)
>     (let* ((marker (point-marker))
>     (beg (point))
>     (end (save-excursion
>     (forward-sexp) (point)))
>     (cut-strg (buffer-substring beg end)))
>     (delete-region beg end)
>     (goto-char (marker-position marker))
>     (insert
>     (format
>     "\n#+begin_src emacs-lisp\n%s\n#+end_src\n"
>     cut-strg))
>     (set-marker marker nil)))
>     #+end_src
>
>     #+results:
>     : tj/wrap-sexp-in-elisp-src-block
>
>     MWE:
>
>     (defun foo ()
>     "do foo"
>     (message "foo"))
>
>     1. with point at the opening paren:
>
>
>     #+begin_src emacs-lisp
>     (defun foo ()
>     "do foo"
>     (message "foo"))
>     #+end_src
>
>     2. with point at the 'd' of defun:
>
>     (
>     #+begin_src emacs-lisp
>     defun
>     #+end_src
>     foo ()
>     "do foo"
>     (message "foo"))
>
>     3. with point between 'do foo':
>
>     (defun foo ()
>     "do
>     #+begin_src emacs-lisp
>     foo
>     #+end_src
>     "
>     (message "foo"))
>
>
>     This is actually quite useful, will add it to my init file (since
>     I
>     frequently get 'org-babel-demarcate-block: Args out of range'
>     errors
>     when trying to wrap a region).
>
>     Note that the behaviour depends a bit on the major-mode. In
>     emacs-lisp
>     mode, a string is seen as one sexp, thus with point at the first
>     double-quote of
>
>     "hello world"
>
>     I get
>
>     #+begin_src emacs-lisp
>     "hello world"
>     #+end_src
>
>     while in this message-mode buffer I get
>
>     #+begin_src emacs-lisp
>     "hello
>     #+end_src
>     world"
>
>     --
>     cheers,
>     Thorsten
>
>
>
>

--
cheers,
Thorsten


reply via email to

[Prev in Thread] Current Thread [Next in Thread]