> So the question is: how can the completion-ignore-case value be
> propagated from the completion gathering function in
> `completion-at-point-functions' to the function that actually applies
> this completion, without having to modify the global or buffer local
> value of `completion-ignore-case'?

Assuming you have a completion table in variable `table', you should be
able to construct a new completion table that's case-insensitive with
something like the untested code below:

(defun completion-table-case-fold (table string pred action)
  (let ((completion-ignore-case t))
    (complete-with-action action table string pred)))

[...]
   (let ((newtable
          (apply-partially #'completion-table-case-fold table)))
     [...])

where completion-table-case-fold is an auxiliary function which
(c|sh)ould be added to minibuffer.el.

The case-sensitivity of the completion code is indeed problematic.
Here's for example an excerpt from minibuffer.el:

;; - case-sensitivity currently confuses two issues:
;;   - whether or not a particular completion table should be case-sensitive
;;     (i.e. whether strings that differ only by case are semantically
;;     equivalent)
;;   - whether the user wants completion to pay attention to case.
;;   e.g. we may want to make it possible for the user to say "first try
;;   completion case-sensitively, and if that fails, try to ignore case".


        Stefan

_______________________________________________
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

Reply via email to