<br><br><div><span class="gmail_quote">On 10/21/06, <b class="gmail_sendername">Ury Marshak</b> <<a href="mailto:urym@two-bytes.com">urym@two-bytes.com</a>> wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Attila Lendvai wrote:<br>> +  (add-local-hook 'pre-command-hook 'slime-pre-command-hook)<br>><br><br>add-local-hook seems to be missing from GNU emacs.<br>Quick googling suggests adding:<br><br>(or (fboundp 'add-local-hook)
<br>    (defun add-local-hook (hook function &optional append)<br>      (make-local-hook hook)<br>      (add-hook hook function append t)))<br><br>(or (fboundp 'remove-local-hook)<br>    (defun remove-local-hook (hook function)
<br>      (if (local-variable-p hook (current-buffer))<br>          (remove-hook hook function t))))</blockquote><div><br>thanks, i've added these. i checked the things that i use but this one seems to slip through. seems like it's time to set up an emacs env, too...
<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Also, after fixing add-local-hook, when trying slime-fuzzy-completion-in-place
<br>it seems to break it for me even further - without the patch at least the arrow<br>keys in the target buffer work, with this patch even arrows stop working (they<br>work as in normal buffer, but do not move selection in the completion buffer)
<br><br>This is on CVS HEAD GNU Emacs</blockquote><div><br>hm, if it is still broken with this patch then it would be very helpful if you could take a look at slime-target-buffer-fuzzy-completions-map and slime-fuzzy-completions-map and check if the bindings themselves are broken (which is probably the case, because that's changed in that previous patch).
<br><br>there's some new heuristic in this patch that it first tries to look up the operation's binding in the global-map and only use the default (arrow keys) when nothing was found. this may turn out to be a bad idea, but for now i made it a bit smarter to mimic all bound keys of the operations from global-map. i hope this will help, or if not, the bug can be fixed. some people don't use the arrow keys on laptops, etc... it's a big help for them (when working :)
<br><br></div></div>and finally there's another speedup with large set of symbols (there was a costly remove-duplicates call):<br><br>CL-USER> (progn<br>        (sb-ext:gc :full t)<br>        (length (time (swank::fuzzy-find-matching-symbols "" "SB-PCL" nil))))
<br>Evaluation took:<br>  1.41 seconds of real time<br>  1.166823 seconds of user run time<br>  0.0 seconds of system run time<br>  0 calls to %EVAL<br>  0 page faults and<br>  323,088 bytes consed.<br>4923<br><br>CL-USER> (progn
<br>        (sb-ext:gc :full t)<br>        (length (time (swank::fuzzy-find-matching-symbols "" "SB-PCL" nil))))<br>Evaluation took:<br>  0.037 seconds of real time<br>  0.028996 seconds of user run time
<br>  0.001 seconds of system run time<br>  0 calls to %EVAL<br>  0 page faults and<br>  772,240 bytes consed.<br>4931<br><br>the speedup is only this radical when we are processing the entire package without any input, though. the small difference in the length is coming from the new method comparing the symbols with 'eq as opposed to the old one comparing strings with 'equal at the very end. so there may be a few duplicates in rare situations.
<br><br><br>2006-10-21  Attila Lendvai  <<a href="mailto:attila.lendvai@gmail.com">attila.lendvai@gmail.com</a>><br>    <br>    * slime.el (slime-setup-command-hooks): Use make-local-hook.<br>    (slime-repl-mode): Ditto.
<br>    (slime-fuzzy-choices-buffer): Ditto.<br>    (sldb-mode): Ditto.<br>    (slime-fuzzy-completion-limit): New variable.<br>    (slime-fuzzy-completion-time-limit-in-msec): New variable.<br>    (slime-fuzzy-next): Fix when at the end of the buffer.
<br>    (completion-output-symbol-converter): New to handle escaped<br>    symbols for those who need to mess around with symbols like<br>    layered-function-definers::|CONTEXTL::SLOT-VALUE-USING-LAYER|.<br>    When a symbol is escaped then completion is case sensitive.
<br>    (completion-output-package-converter): New.<br>    (mimic-key-bindings): New to easily define bindings by first<br>    trying to look up bindings for an operation and only use<br>    the provided default bindings if nothing was found in the
<br>    source keymap. Use it to set up fuzzy bindings. (Hint:<br>    if you have keys like previous-line customized,    then only<br>    load slime after they have been set, and the fuzzy mode<br>    will mimic them.)<br>
    (slime-temp-buffer-quit): Always close the opened window,<br>    updated docstring.<br>    Also made the fuzzy maps smarter, they now try to look up<br>    keys with 'where-is-internal and map the functions on them.<br>
    <br>    * swank-sbcl.lisp<br>    (make-weak-value-hash-table): New for sbcl.<br>    (make-weak-key-hash-table): New for sbcl.<br>    <br>    * swank.lisp (fuzzy-completions and friends): Added :limit<br>    and :time-limit-in-msec keyword params. Used vectors instead
<br>    of lists that nearly doubled its speed (at least on sbcl).<br>    Also added some declare optimize and type annotations.<br>    (do-symbols*): New, uses a hash-table to visit only non-seen<br>    symbols. Replaced various uses of do-symbols where it was
<br>    appropiate.<br><br>-- <br>- attila<br><br>"- The truth is that I've been too considerate, and so became unintentionally cruel...<br> - I understand.<br> - No, you don't understand! We don't speak the same language!"
<br>(Ingmar Bergman - Smultronstället)