From: Lars Hansen <larsh@math.ku.dk>
Cc: emacs-devel@gnu.org
Subject: Re: file-relative-name and remote files
Date: Sun, 23 Feb 2003 21:42:38 +0100 [thread overview]
Message-ID: <3E59323E.9020100@math.ku.dk> (raw)
In-Reply-To: <200302231830.h1NIUhl24956@rum.cs.yale.edu>
>
>
>How about something like:
>
> (defun f-r-n (filename &optional directory)
> (let* ((dir (if directory (expand-file-name directory) default-directory))
> (file (expand-file-name (file-name-directory filename)))
> (hf (find-file-name-handler file 'file-relative-name))
> (hd (find-file-name-handler dir 'file-relative-name)))
> (cond
> ((not (eq hf hd))
> ;; `filename' and `directory' are on different drives:
> ;; there is hence no relative name from `directory' to `filename'.
> (expand-file-name filename))
> ((null hf)
> ;; Both are plain local: use the builtin code.
> (file-relative-name filename directory))
> ((let ((re (car (rassq hf file-name-handler-alist))))
> (equal (and (string-match re file) (substring file 0 (match-end 0)))
> (and (string-match re dir) (substring dir 0 (match-end 0)))))
> ;; Both are non-local, use the same handler and same drive name.
> (file-relative-name filename directory))
> (t
> ;; Both are non-local and on different drives.
> (expand-file-name filename)))))
>
>Note how I check the handler for (file-name-directory filename) rather
>than for `filename' so as to avoid uselessly catching jka-compr-style
>handlers.
>
>
> Stefan
>
>
I like the idea. I builds on the assumptions:
1. File names don't have a file-handler invoking syntax that is special
in the directory part and the base part at the same time.
2. Files not residing in the local directory tree have a file-handler
invoking syntax that is special in the directory part of the file name.
I guess these assumptions are ok, but if we decide on having them, they
should be documented.
A minor issue: Your code returns an expanded file name in the cases
where there is no local name, whereas the existing code in
file-relative-name returns filename without expansion. We should do the
same (I prefer expansion) in all cases.
next prev parent reply other threads:[~2003-02-23 20:42 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-02-23 15:42 file-relative-name and remote files Lars Hansen
2003-02-23 16:41 ` Kai Großjohann
2003-02-23 18:30 ` Stefan Monnier
2003-02-23 20:42 ` Lars Hansen [this message]
2003-02-26 9:46 ` Richard Stallman
[not found] <E18xZCF-0008JB-04@monty-python.gnu.org>
2003-03-25 12:22 ` Lars Hansen
2003-03-25 14:46 ` Kai Großjohann
[not found] <E18xQiP-00067n-01@monty-python.gnu.org>
2003-03-24 12:58 ` Lars Hansen
2003-03-24 18:24 ` Kai Großjohann
[not found] <E18t79a-00069E-04@monty-python.gnu.org>
2003-03-14 20:40 ` Lars Hansen
[not found] <E18sn8p-0003dO-01@monty-python.gnu.org>
2003-03-12 7:20 ` Lars Hansen
2003-03-12 11:53 ` Kai Großjohann
[not found] <E18s4BL-0000Xi-00@monty-python.gnu.org>
2003-03-11 10:05 ` Lars Hansen
2003-03-11 10:34 ` Lars Hansen
2003-03-11 15:08 ` Kai Großjohann
[not found] <E18rhhr-0005Oc-03@monty-python.gnu.org>
2003-03-08 20:05 ` Lars Hansen
2003-03-09 13:36 ` Kai Großjohann
[not found] <E18rQiV-0004PA-00@monty-python.gnu.org>
2003-03-08 8:38 ` Lars Hansen
2003-03-08 8:46 ` Lars Hansen
2003-03-08 14:41 ` Kai Großjohann
-- strict thread matches above, loose matches on Subject: below --
2003-02-27 20:03 Lars Hansen
2003-03-01 2:25 ` Richard Stallman
2003-03-24 11:43 ` Kai Großjohann
2003-03-25 0:52 ` Richard Stallman
[not found] <E18nLzM-0001k5-01@monty-python.gnu.org>
2003-02-24 21:24 ` Lars Hansen
2003-02-24 21:36 ` Stefan Monnier
2003-02-24 21:52 ` Lars Hansen
2003-02-25 16:57 ` Richard Stallman
2003-02-26 9:41 ` Lars Hansen
2003-02-26 23:24 ` Richard Stallman
2003-02-27 14:22 ` Lars Hansen
2003-03-01 2:25 ` Richard Stallman
2003-03-03 10:22 ` Lars Hansen
2003-03-07 20:57 ` Kai Großjohann
2003-03-17 4:52 ` Richard Stallman
2003-03-21 14:20 ` Kai Großjohann
2003-03-24 2:05 ` Richard Stallman
2003-03-07 21:02 ` Kai Großjohann
2003-03-09 19:25 ` Richard Stallman
2003-02-27 17:02 ` Kai Großjohann
2003-02-27 17:05 ` Kai Großjohann
2003-02-27 17:37 ` Andreas Schwab
2003-02-28 14:53 ` Kai Großjohann
2003-02-28 15:43 ` Andreas Schwab
2003-02-28 16:27 ` Miles Bader
2003-02-28 18:35 ` Stefan Monnier
2003-02-28 21:32 ` Andreas Schwab
2003-03-01 13:00 ` Kai Großjohann
2003-03-02 15:06 ` Richard Stallman
2003-02-23 10:36 Lars Hansen
2003-02-23 11:03 ` Kai Großjohann
2003-02-24 16:38 ` Richard Stallman
2003-02-28 18:33 ` Kai Großjohann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3E59323E.9020100@math.ku.dk \
--to=larsh@math.ku.dk \
--cc=emacs-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.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).