GNU bug report logs -
#12785
[octave-mod] Changed behaviour of octave-mark-block?
Previous Next
Reported by: Mark Hepburn <mark.hepburn <at> gmail.com>
Date: Fri, 2 Nov 2012 07:50:02 UTC
Severity: important
Done: Stefan Monnier <monnier <at> iro.umontreal.ca>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
[Message part 1 (text/plain, inline)]
Your bug report
#12785: [octave-mod] Changed behaviour of octave-mark-block?
which was filed against the emacs package, has been closed.
The explanation is attached below, along with your original report.
If you require more details, please reply to 12785 <at> debbugs.gnu.org.
--
12785: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=12785
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
> 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))
[Message part 3 (message/rfc822, inline)]
[Message part 4 (text/plain, inline)]
Hi all,
I'm wondering if the recent modernisation of octave-mod with emacs24 has
introduced an error; at least, it appears that the behaviour of
octave-mark-block is different.
For example, in the following trivial octave code:
for i=1:n, something; end;
If octave-mark-block is invoked with the cursor anywhere inside the
'for' token, it will fail ("unbalanced parentheses"). The following
situations all fail in the recent version, but succeed in the older
version: |for, f|or, fo|r.
Assuming this is in error I'm not sure how to fix it, I'm sorry. The form
(and level (null (cadr level)))
seems a bit suspicious as there are no null entries in smie-grammar for
me, so that would be equivalent to just level.
It also looks like backward-up-list (-> up-list) might be incorrect for
similar cursor locations? (Which may be the root cause I suppose)
Thank you for your time,
Mark.
Emacs : GNU Emacs 24.1.1 (x86_64-pc-linux-gnu, GTK+ Version 2.24.12)
of 2012-09-23 on batsu, modified by Debian
Package: Emacs version 24.1.1
current state:
==============
(setq
octave-blink-matching-block t
octave-block-offset 2
octave-comment-char 35
octave-continuation-offset 4
octave-continuation-string "\\"
octave-send-echo-input t
octave-send-line-auto-forward t
octave-send-show-buffer t
)
[Message part 5 (text/html, inline)]
This bug report was last modified 12 years and 222 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.