[MLton-commit] r5285
Vesa Karvonen
vesak at mlton.org
Wed Feb 21 04:29:14 PST 2007
Fine tuned symbol selection.
----------------------------------------------------------------------
U mlton/trunk/ide/emacs/esml-du-mlton.el
----------------------------------------------------------------------
Modified: mlton/trunk/ide/emacs/esml-du-mlton.el
===================================================================
--- mlton/trunk/ide/emacs/esml-du-mlton.el 2007-02-21 11:55:35 UTC (rev 5284)
+++ mlton/trunk/ide/emacs/esml-du-mlton.el 2007-02-21 12:29:08 UTC (rev 5285)
@@ -70,17 +70,33 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Move to symbol
+(defun esml-du-character-class (c)
+ (cond
+ ((find c esml-sml-symbolic-chars)
+ 'symbolic)
+ ((find c esml-sml-alphanumeric-chars)
+ 'alphanumeric)))
+
(defun esml-du-move-to-symbol-start ()
- "Moves to the start of the SML symbol at point."
+ "Moves to the start of the SML symbol at point. If the point is between
+two symbols, one symbolic and other alphanumeric (e.g. !x) the symbol
+following the point is preferred. This ensures that the symbol does not
+change surprisingly after a jump."
(let ((limit (def-use-point-at-current-line)))
- (when (zerop (skip-chars-backward esml-sml-alphanumeric-chars limit))
- (skip-chars-backward esml-sml-symbolic-chars limit))))
+ (let ((bef (esml-du-character-class (char-before)))
+ (aft (esml-du-character-class (char-after))))
+ (cond
+ ((and (eq bef 'symbolic) (not (eq aft 'alphanumeric)))
+ (skip-chars-backward esml-sml-symbolic-chars limit))
+ ((and (eq bef 'alphanumeric) (not (eq aft 'symbolic)))
+ (skip-chars-backward esml-sml-alphanumeric-chars limit))))))
(add-to-list 'def-use-mode-to-move-to-symbol-start-alist
(cons 'sml-mode (function esml-du-move-to-symbol-start)))
(defun esml-du-move-to-symbol-end ()
- "Moves to the end of the SML symbol at point."
+ "Moves to the end of the SML symbol at point assuming that we are at the
+beginning of the symbol."
(let ((limit (def-use-point-at-next-line)))
(when (zerop (skip-chars-forward esml-sml-alphanumeric-chars limit))
(skip-chars-forward esml-sml-symbolic-chars limit))))
More information about the MLton-commit
mailing list