Improving ability to autocomplete substrings: preserving caret position

Improving ability to autocomplete substrings: preserving caret position

Hi,
I've been wanting to use the Jquery UI autocomplete plugin to autocomplete substrings in a textarea.  To control the carot position while scrolling through autocomplete options, I found I had to modify the autocomplete code to add an option to prevent autocomplete from directly calling self.element.val(...), which resets the caret position.  A patch containing my mods (relative to 1.8.20) is below.  Basically, I added another event hook to control how autocomplete resets the value of the text box.  I'm sure the patch is far from something submittable, but I wanted to get people's thoughts to see if it was a good approach or if there's an easier way.
Thanks,
Josh
-----------------------------

@@ -974,7 +974,9 @@
  self.menu.select( event );
  break;
  case keyCode.ESCAPE:
- self.element.val( self.term );
+        if ( false !== self._trigger( "resetvalue", event, { item: self.term } ) ) {
+    self.element.val( self.term );
+        }
  self.close( event );
  break;
  default:
@@ -1085,8 +1087,10 @@
  // don't set the value of the text field if it's already correct
  // this prevents moving the cursor unnecessarily
  if ( self.menu.element.is(":visible") &&
- ( self.element.val() !== self.term ) ) {
+     ( self.element.val() !== self.term ) ) {
+    if ( false !== self._trigger( "resetvalue", event, { item: self.term } ) ) {
  self.element.val( self.term );
+    }
  }
  }
  })
@@ -1301,7 +1305,9 @@
  }
  if ( this.menu.first() && /^previous/.test(direction) ||
  this.menu.last() && /^next/.test(direction) ) {
- this.element.val( this.term );
+       if ( false !== this._trigger( "resetvalue", event, this.term ) ) {
+   this.element.val( this.term );
+       }
  this.menu.deactivate();
  return;
  }