Hello,

stardiviner <numbch...@gmail.com> writes:

> The original text:
>
> ,----
> | We define refs the same way we define atoms, but the two are used rather 
> differently.
> | Let's take a quick look at how they work below.
> | 
> | (def names (ref []))
> | 
> | (dosync
> |   (ref-set names ["John"])
> |   (alter names #(if (not-empty %)
> |                   (conj % "Jane") %)))
> | 
> | In this code, we define a ref called names, then open a transaction using 
> the dosync statement. Inside the transaction we set names to a vector with 
> the value "John". Next, we call alter to check if names is not empty and add 
> "Jane" to the vector of the names if that's the case.
> | 
> | Note that since this is happening inside a transaction, the check for 
> emptiness depends on the existing state along with any state built up within 
> the same transaction. If we tried to add or remove a name in a different 
> transaction, it would have no visible effect on ours. In case of a collision, 
> one of the transactions would end up being retried.
> `----
>
> Then I use region select code from (def to ))), then press [C-c C-, s].
>
> It has weird offset like this:
>
> ,----
> |                   #+begin_src 
> | (def names (ref []))
> | 
> | (dosync
> |   (ref-set names ["John"])
> |   (alter names #(if (not-empty %)
> |                   (conj % "Jane") %)))
> |                   #+end_src
> `----
>
> But when I region select by backward from ))) to (def, it works fine.
> no offset.

Fixed. Thank you.

Regards,

-- 
Nicolas Goaziou

Reply via email to