* [babel][bug] \ in detangling
@ 2011-01-13 16:27 Seth Burleigh
2011-01-13 17:01 ` Eric Schulte
0 siblings, 1 reply; 5+ messages in thread
From: Seth Burleigh @ 2011-01-13 16:27 UTC (permalink / raw)
To: emacs-orgmode
[-- Attachment #1.1: Type: text/plain, Size: 507 bytes --]
(defun org-babel-update-block-body (new-body)
"Update the body of the current code block to NEW-BODY."
(if (not (org-babel-where-is-src-block-head))
(error "not in source block")
(save-match-data
(replace-match (concat (org-babel-trim new-body) "\n") nil t nil 5))
(indent-rigidly (match-beginning 5) (match-end 5) 2)))
replace-match argument should be t instead of nil (as shown), otherwise \ is
treated as a special character and you cant detangle code with that
character in it.
[-- Attachment #1.2: Type: text/html, Size: 635 bytes --]
[-- Attachment #2: Type: text/plain, Size: 201 bytes --]
_______________________________________________
Emacs-orgmode mailing list
Please use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [babel][bug] \ in detangling
2011-01-13 16:27 [babel][bug] \ in detangling Seth Burleigh
@ 2011-01-13 17:01 ` Eric Schulte
2011-01-13 17:16 ` Seth Burleigh
0 siblings, 1 reply; 5+ messages in thread
From: Eric Schulte @ 2011-01-13 17:01 UTC (permalink / raw)
To: Seth Burleigh; +Cc: emacs-orgmode
Thanks for pointing this out, I've just pushed up your change.
Cheers -- Eric
Seth Burleigh <wburle@gmail.com> writes:
> (defun org-babel-update-block-body (new-body)
> "Update the body of the current code block to NEW-BODY."
> (if (not (org-babel-where-is-src-block-head))
> (error "not in source block")
> (save-match-data
> (replace-match (concat (org-babel-trim new-body) "\n") nil t nil 5))
> (indent-rigidly (match-beginning 5) (match-end 5) 2)))
>
> replace-match argument should be t instead of nil (as shown), otherwise \ is
> treated as a special character and you cant detangle code with that
> character in it.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [babel][bug] \ in detangling
2011-01-13 17:01 ` Eric Schulte
@ 2011-01-13 17:16 ` Seth Burleigh
2011-01-13 17:54 ` Seth Burleigh
0 siblings, 1 reply; 5+ messages in thread
From: Seth Burleigh @ 2011-01-13 17:16 UTC (permalink / raw)
To: Eric Schulte; +Cc: emacs-orgmode
[-- Attachment #1.1: Type: text/plain, Size: 901 bytes --]
thanks. also, when trying to detangle my code, i found another bug.
In the functions org-babel-tangle-jump-to--org and org-babel-detangle, it
uses org-bracket-link-analytic-regexp to search for the [[file:]] links.
However, it does not include the comment in the regex (";;" in clojure), so
somehow [[name val]] in my code is matched as a link, and then it fails to
detangle.
Also, related, it doesnt include the comment in the regex to find the end of
the block, it just does (concat " " (regexp-quote block-name) " ends here").
Since i only want to detangle clojure code, i simply put this in my .emacs
file to fix it
(setq org-bracket-link-analytic-regexp
(concat ";;[ ]*"
"\\[\\["
"\\(\\(" (mapconcat 'regexp-quote org-link-types "\\|") "\\):\\)?"
"\\([^]]+\\)"
"\\]"
"\\(\\[" "\\([^]]+\\)" "\\]\\)?"
"\\]"
))
I suppose one would have to customize the first two comments per language.
[-- Attachment #1.2: Type: text/html, Size: 1668 bytes --]
[-- Attachment #2: Type: text/plain, Size: 201 bytes --]
_______________________________________________
Emacs-orgmode mailing list
Please use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [babel][bug] \ in detangling
2011-01-13 17:16 ` Seth Burleigh
@ 2011-01-13 17:54 ` Seth Burleigh
2011-01-13 21:09 ` Eric Schulte
0 siblings, 1 reply; 5+ messages in thread
From: Seth Burleigh @ 2011-01-13 17:54 UTC (permalink / raw)
To: Eric Schulte; +Cc: emacs-orgmode
[-- Attachment #1.1: Type: text/plain, Size: 159 bytes --]
Ive attached the file it fails on. Notice that it fails below the constants
macro, but if you're above it, it will succeed since it wont find the [[name
val]]
[-- Attachment #1.2: Type: text/html, Size: 163 bytes --]
[-- Attachment #2: general.clj --]
[-- Type: application/octet-stream, Size: 4179 bytes --]
;; [[file:~/Dropbox/.rep/clj-forex/clj-forex.org::*General][forex-util-general]]
(ns forex.util.general
(:use utils.general forex.util.spawn forex.util.log)
(:import (org.joda.time DateTime DateTimeZone Instant)))
(deftype AtomHash [val]
Object
(toString [this] (str "<AtomHash " @val ">"))
clojure.lang.IPersistentMap
;;ILookup
(valAt [this key] (get @val key))
(valAt [this key notfound] (get @val key notfound))
;;IPersistentCollection
(count [this] (.count @val))
(empty [this] {})
(cons [this e] (.cons @val e))
(equiv [this gs] (or (identical? this gs)
(when (identical? (class this) (class gs))
(.equiv @val) gs)))
(containsKey [this k] (or (and (get @val k) true) false))
(entryAt [this k] (get @val k))
;;Seqable
(seq [this] (seq @val))
;;Associative
(assoc [this k g] (assoc @val k g))
(assocEx [this k g] (assoc this k g))
(without [this k] (.without @val k))
clojure.lang.IDeref
(deref [this] @val))
(defmethod clojure.core/print-method AtomHash [o w]
(.write w (.toString o)))
(defn atom-hash [val]
(is (map? val))
(AtomHash. (atom val)))
(defn symbolicate
"symbolicate symbols together. ignores things like whitespaces, just drops them!"
[& args]
(symbol (apply str args)))
;;TODO: add support for waiting on multiple objects, including sockets!
(defprotocol PWait
(wait-for [this timeout units] [this timeout]))
;;copied from clojure source, but adding timeout wait-for
(defn beg
"Alpha - subject to change.
Returns a promise object that can be read with deref/@, and set,
once only, with deliver. Calls to deref/@ prior to delivery will
block. All subsequent derefs will return the same delivered value
without blocking."
{:added "1.1"}
[]
(let [d (java.util.concurrent.CountDownLatch. 1)
v (atom nil)]
(reify
clojure.lang.IDeref
(deref [_] (.await d) @v)
PWait
(wait-for [this timeout]
(wait-for this timeout
java.util.concurrent.TimeUnit/MILLISECONDS))
(wait-for [this timeout units]
(if timeout
(.await d timeout units)
(do (.await d) true)))
clojure.lang.IFn
(invoke [this x]
(locking d
(if (pos? (.getCount d))
(do (reset! v x)
(.countDown d)
x)
(throw
(IllegalStateException.
"Multiple deliver calls to a promise"))))))))
(defn give
"Alpha - subject to change.
Delivers the supplied value to the promise, releasing any pending
derefs. A subsequent call to deliver on a promise will throw an exception."
{:added "1.1"}
[promise val]
(promise val))
(defmacro awhen [test & body]
`(when-let [~'it ~test]
~@body))
(defmacro naive-var-local-cache-strategy [var]
`(let [cache# (atom {})]
(reify PCachingStrategy
(retrieve [_ item#] (get @cache# item#))
(cached? [_ item#] (contains? @cache# item#))
(hit [this# _] this#)
(miss [this# item# result#]
(reset! cache# (swap! ~var assoc item# result#))
this#))))
(defmacro constants [& args]
`(do ~@(map (fn [[name val]] `(def ~name ~val)) (group args 2))))
(defmacro spawn-log [func]
`(spawn (fn [] (try (~func) (catch Exception e#
(.printStackTrace e#) (severe e#))))))
(defonce *env* (atom {:timeframe 1440 :symbol "EURUSD"})) ;default +D1+, EURUSD
(defn env [key] (key @*env*))
(defn env! [map]
(swap! *env* #(merge % map))
map)
;;todo: fix private!
;;todo: ignores all nils?
(defmacro wenv [[& args] & body]
`(binding [forex.util.general/*env*
(atom (merge @@~#'*env* (hash-map ~@args)))]
~@body))
(defmacro with-write-lock [l & body]
`(let [obj# ~l]
(try (do (.lock (.writeLock obj#)) ~@body)
(finally (.unlock (.writeLock obj#))))))
(defmacro with-read-lock [l & body]
`(let [obj# ~l]
(try (do (.lock (.readLock obj#)) ~@body)
(finally (.unlock (.readLock obj#))))))
;; forex-util-general ends here
[-- Attachment #3: Type: text/plain, Size: 201 bytes --]
_______________________________________________
Emacs-orgmode mailing list
Please use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [babel][bug] \ in detangling
2011-01-13 17:54 ` Seth Burleigh
@ 2011-01-13 21:09 ` Eric Schulte
0 siblings, 0 replies; 5+ messages in thread
From: Eric Schulte @ 2011-01-13 21:09 UTC (permalink / raw)
To: Seth Burleigh; +Cc: emacs-orgmode
I've pushed up a fix for this issue,
Instead of using language-specific comment regexps ob-jump-to-org now
keep looking for a block-start comment until it find one which has a
matching block-end comment.
Thanks for pointing out this error case -- Eric
Seth Burleigh <wburle@gmail.com> writes:
> Ive attached the file it fails on. Notice that it fails below the constants
> macro, but if you're above it, it will succeed since it wont find the [[name
> val]]
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2011-01-13 21:24 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-01-13 16:27 [babel][bug] \ in detangling Seth Burleigh
2011-01-13 17:01 ` Eric Schulte
2011-01-13 17:16 ` Seth Burleigh
2011-01-13 17:54 ` Seth Burleigh
2011-01-13 21:09 ` Eric Schulte
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).