[ESS] Re: Filename completion becomes object completion

Brahm, David David.Brahm at geodecapital.com
Wed May 4 20:54:49 CEST 2005

I believe I found the cause of my filename completion problem, also
reported by
Giovanni d'Ario on 3/17/05.  Prior to ESS version 5.2.4, ess-inf.el

  (setq comint-dynamic-complete-functions

Note the trial order was: 1) filename, 2) object, 3) history.

In 5.2.4, this was replaced by a hook.  The ChangeLog comment is:

  2004-11-09  Stephen Eglen  <stephen at gnu.org>
	* ess-inf.el (inferior-ess-mode): Add elements to
	comint-dynamic-complete-functions using `add-hook' rather than
	`setq', on advice from Emacs developers.

The code became (line 1462 of ess-inf.el in 5.2.7):

  (add-hook 'comint-dynamic-complete-functions
	    'ess-complete-object-name nil 'local)
  (add-hook 'comint-dynamic-complete-functions
	     'comint-replace-by-expanded-history 'append 'local)
  (add-hook 'comint-dynamic-complete-functions
	    'ess-complete-filename 'append 'local)

If you ask for the variable value, you get:

  (ess-complete-object-name t comint-replace-by-expanded-history

Note that the trial order of functions has changed!  It is now:
  1) object, 2) history, 3) filename
There's also a random "t" stuck in the middle; I don't know if it

The following code works better for me, restoring the original order:

  ;; Order rearranged by DB: try 1) filename, 2) object, 3) history:
  (add-hook 'comint-dynamic-complete-functions
	    'comint-replace-by-expanded-history nil 'local)
  (add-hook 'comint-dynamic-complete-functions
	    'ess-complete-object-name           nil 'local)
  (add-hook 'comint-dynamic-complete-functions
	    'ess-complete-filename              nil 'local)

Now the (local) value of the variable is:

  (ess-complete-filename ess-complete-object-name
     comint-replace-by-expanded-history t)

-- David Brahm (brahm at alum.mit.edu)

More information about the ESS-help mailing list