I posted this patch last year, but I don't think anybody picked it up. http://lists.gnu.org/archive/html/bug-gnu-emacs/2007-10/msg00091.html An updated version of the patch is attached and in-line below. /a Index: thingatpt.el =================================================================== RCS file: /sources/emacs/emacs/lisp/thingatpt.el,v retrieving revision 1.47 diff -u -r1.47 thingatpt.el --- thingatpt.el 22 Oct 2008 20:51:23 -0000 1.47 +++ thingatpt.el 24 Oct 2008 17:50:47 -0000 @@ -169,19 +169,19 @@ (nth 3 (parse-partial-sexp (point) orig))))) (defun end-of-sexp () - (let ((char-syntax (char-syntax (char-after (point))))) + (let ((char-syntax (char-syntax (char-after)))) (if (or (eq char-syntax ?\)) - (and (eq char-syntax ?\") (in-string-p))) - (forward-char 1) + (and (eq char-syntax ?\") (in-string-p))) + (forward-char 1) (forward-sexp 1)))) (put 'sexp 'end-op 'end-of-sexp) (defun beginning-of-sexp () - (let ((char-syntax (char-syntax (char-before (point))))) + (let ((char-syntax (char-syntax (char-before)))) (if (or (eq char-syntax ?\() - (and (eq char-syntax ?\") (in-string-p))) - (forward-char -1) + (and (eq char-syntax ?\") (in-string-p))) + (forward-char -1) (forward-sexp -1)))) (put 'sexp 'beginning-op 'beginning-of-sexp) @@ -405,10 +405,10 @@ (interactive "p") (while (< arg 0) (skip-syntax-backward - (char-to-string (char-syntax (char-after (1- (point)))))) + (char-to-string (char-syntax (char-before)))) (setq arg (1+ arg))) (while (> arg 0) - (skip-syntax-forward (char-to-string (char-syntax (char-after (point))))) + (skip-syntax-forward (char-to-string (char-syntax (char-after)))) (setq arg (1- arg)))) ;; Aliases