From 04b0b3915741860a61532059b7e5291b7b98e031 Mon Sep 17 00:00:00 2001 From: Dan Leslie Date: Tue, 19 Jan 2016 20:45:09 -0800 Subject: Fuzzy matching for Chicken AutoDoc and Completions Because Chicken allows symbols to be imported with prefixes, and because 'apropos' does not provide any utility to match with the loaded prefixes, it is difficult to acquire information about prefixed symbols. This solution hacks around the issue by providing naive fuzzy-matching. If no match for a symbol can be found then the first character is dropped and matching is attempted again; the process is repeated until matches are found or the entire symbol is consumed. Also removes the (now redundant and slow) geiser-chicken-prefix-delimiters. --- elisp/geiser-chicken.el | 23 ++++------------------- 1 file changed, 4 insertions(+), 19 deletions(-) (limited to 'elisp/geiser-chicken.el') diff --git a/elisp/geiser-chicken.el b/elisp/geiser-chicken.el index 9775769..d0eb1d1 100644 --- a/elisp/geiser-chicken.el +++ b/elisp/geiser-chicken.el @@ -65,12 +65,6 @@ "Customization for Geiser's Chicken flavour." :group 'geiser) -(geiser-custom--defcustom geiser-chicken-prefix-delimiters - '("^:" "^#") - "Regex to match symbol prefix delimiters. Consider that it will be placed inside []." - :type '(repeat string) - :group 'geiser-chicken) - (geiser-custom--defcustom geiser-chicken-binary (cond ((eq system-type 'windows-nt) '("csi.exe" "-:c")) ((eq system-type 'darwin) "csi") @@ -189,19 +183,10 @@ This function uses `geiser-chicken-init-file' if it exists." (defun geiser-chicken--exit-command () ",q") (defun geiser-chicken--symbol-begin (module) - (apply - 'max - (cons - (if module - (max (save-excursion (beginning-of-line) (point)) - (save-excursion (skip-syntax-backward "^(>") (1- (point)))) - (save-excursion (skip-syntax-backward "^'-()>") (point))) - (let ((distance-to-beginning-of-line (- (point) (line-beginning-position)))) - (mapcar - (lambda (match-string) - (save-excursion - (skip-chars-backward match-string distance-to-beginning-of-line) (point))) - geiser-chicken-prefix-delimiters))))) + (if module + (max (save-excursion (beginning-of-line) (point)) + (save-excursion (skip-syntax-backward "^(>") (1- (point)))) + (save-excursion (skip-syntax-backward "^'-()>") (point)))) ;;; Error display -- cgit v1.2.3