Christophe Weblog Wiki Code Publications Music
better swank:find-definitions-for-emacs
authorChristophe Rhodes <csr21@cantab.net>
Thu, 7 Oct 2010 22:11:16 +0000 (23:11 +0100)
committerChristophe Rhodes <csr21@cantab.net>
Thu, 7 Oct 2010 22:11:16 +0000 (23:11 +0100)
In particular, include enough of a kludge to be able to handle both
relative and absolute paths.

swank.R

diff --git a/swank.R b/swank.R
index f0aee27babe75b918535f5a6efdae9264d70e78e..747696acdee909c21279cc53c190b2c7919c63ed 100644 (file)
--- a/swank.R
+++ b/swank.R
@@ -445,9 +445,16 @@ withRetryRestart <- function(description, expr) {
         list()
       } else {
         filename <- get("filename", srcfile)
+        ## KLUDGE: what this means is "is the srcfile filename
+        ## absolute?"
+        if(substr(filename, 1, 1) == "/") {
+          file <- filename
+        } else {
+          file <- sprintf("%s/%s", srcfile$wd, filename)
+        }
         list(list(sprintf("function %s", string),
                   list(quote(`:location`),
-                       list(quote(`:file`), sprintf("%s/%s", srcfile$wd, srcfile$filename)),
+                       list(quote(`:file`), file),
                        list(quote(`:line`), srcref[[2]][[1]], srcref[[2]][[2]]-1),
                        list())))
       }