[slime-devel] Re: slime-filename-translations xemacs-compatability
    Steven E. Harris 
    seh at panix.com
       
    Sun Apr  9 00:03:03 UTC 2006
    
    
  
Nathan Bird <nathan at acceleration.net> writes:
> Attached is a diff (filename-translation-compat.diff) to just the
> slime.el, since I have a separate patch outstanding that also hits
> the changelog.
Using string-match as the test with assoc* causes some surprising
failures. Unlike, say, equal, string-match is asymmetric: the first
argument is a regular expression, the second a string. When trying to
compare (slime-machine-instance) against itself using string-match,
the comparison fails, for (slime-machine-instance) contains regexp
meta-characters:
  (slime-machine-instance)
  > "torus.sehlabs.com [192.168.1.34]"
  (regexp-quote (slime-machine-instance))
  > "torus\\.sehlabs\\.com \\[192\\.168\\.1\\.34\\]"
Next I tried adding the regexp-quoted string to
slime-filename-translations:
  (push (list (regexp-quote (slime-machine-instance))
            'identity 'identity)
      slime-filename-translations)
No dice:
  (assoc* (slime-machine-instance) slime-filename-translations
          :test #'string-match)
  > nil
  ;; It would work this way:
  (string-match (caar slime-filename-translations)
                (slime-machine-instance))
  > 0
  ;; But we're testing it this way:
  (string-match (slime-machine-instance)
                (caar slime-filename-translations))
  > nil
Even though the slime-filename-translations tuples are supposed to
contain a regexp, slime-find-filename-translators is using the car of
each as a string and treating (slime-machine-instance) as a regexp.
I think you'll need a test more like:
  ;; Untested:
  (defun slime-match-translator (instance regexp)
    (string-match regexp instance))
-- 
Steven E. Harris
    
    
More information about the slime-devel
mailing list