[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#12785: [octave-mod] Changed behaviour of octave-mark-block?
From: |
Stefan Monnier |
Subject: |
bug#12785: [octave-mod] Changed behaviour of octave-mark-block? |
Date: |
Wed, 05 Dec 2012 00:30:47 -0500 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) |
> Regarding the "end|" case, the old mode wouldn't mark the block, and I feel
> that's correct behaviour. In the "|for" case as I mentioned, the old mode
> _did_ mark the block (not the enclosing one), but I agree that marking the
> enclosing block is probably preferable and more consistent.
Indeed, the code tried to reproduce this "mark the block after point
instead of the enclosing one" but had a bug in it.
I've fixed the "starting within a token" problem as well as the above
check (so the inner `for' will be marked if you're right in front of it).
Stefan
=== modified file 'lisp/progmodes/octave-mod.el'
--- lisp/progmodes/octave-mod.el 2012-09-17 05:41:04 +0000
+++ lisp/progmodes/octave-mod.el 2012-12-05 05:21:07 +0000
@@ -794,11 +794,14 @@
"Put point at the beginning of this Octave block, mark at the end.
The block marked is the one that contains point or follows point."
(interactive)
+ (if (and (looking-at "\\sw\\|\\s_")
+ (looking-back "\\sw\\|\\s_" (1- (point))))
+ (skip-syntax-forward "w_"))
(unless (or (looking-at "\\s(")
(save-excursion
(let* ((token (funcall smie-forward-token-function))
(level (assoc token smie-grammar)))
- (and level (null (cadr level))))))
+ (and level (not (numberp (cadr level)))))))
(backward-up-list 1))
(mark-sexp))