From: dan <danelliottster@gmail.com>
To: bug-gnu-emacs@gnu.org
Subject: Re: bug#1407: closed by Glenn Morris <rgm@gnu.org> (Re: bug#1407: end keyword bug)
Date: Tue, 16 Dec 2008 14:10:03 -0800 (PST) [thread overview]
Message-ID: <5057621a-fec3-463d-a406-9bcfd494f7c3@d42g2000prb.googlegroups.com> (raw)
In-Reply-To: mailman.2459.1228926262.26697.bug-gnu-emacs@gnu.org
Hello.
Here is my suggested fix for this problem. It has the negative aspect
of identifying all end keywords between parens as not block-ending
keywords. However, I doubt that is a problem.
I've used this for a couple days and everything seems fine. I'm also
not certain if we can add end as a valid keyword for things in the
octave-block-match-alist.
- dan elliott
--- octave-mod.bak.el 2008-12-16 14:35:14.000000000 -0700
+++ octave-mod.el 2008-12-16 14:45:53.000000000 -0700
@@ -101,11 +101,9 @@
'("do" "for" "function" "if" "switch" "try" "unwind_protect"
"while"))
(defvar octave-else-keywords
'("case" "catch" "else" "elseif" "otherwise"
"unwind_protect_cleanup"))
-;; FIXME: only use specific "end" tokens here to avoid confusion when
"end"
-;; is used in indexing (the real fix is much more complex).
(defvar octave-end-keywords
'("endfor" "endfunction" "endif" "endswitch" "end_try_catch"
- "end_unwind_protect" "endwhile" "until"))
+ "end_unwind_protect" "endwhile" "until" "end"))
(defvar octave-reserved-words
(append octave-begin-keywords
@@ -346,13 +344,13 @@
;; is used in indexing (the real fix is much more complex).
(defvar octave-block-match-alist
'(("do" . ("until"))
- ("for" . ("endfor"))
+ ("for" . ("endfor" "end"))
("function" . ("endfunction"))
- ("if" . ("else" "elseif" "endif"))
- ("switch" . ("case" "otherwise" "endswitch"))
+ ("if" . ("else" "elseif" "endif" "end"))
+ ("switch" . ("case" "otherwise" "endswitch" "end"))
("try" . ("catch" "end_try_catch"))
("unwind_protect" . ("unwind_protect_cleanup"
"end_unwind_protect"))
- ("while" . ("endwhile")))
+ ("while" . ("endwhile" "end")))
"Alist with Octave's matching block keywords.
Has Octave's begin keywords as keys and a list of the matching else
or
end keywords as associated values.")
@@ -680,7 +678,8 @@
(if (= bot (point))
(setq icol (+ icol octave-block-offset))))
((octave-looking-at-kw octave-block-end-regexp)
- (if (not (= bot (point)))
+ (if (and (not (= bot (point)))
+ (not (octave-end-as-array-index-
p))) ;special case for end keyword but is applied to all keywords
(setq icol (- icol
(octave-block-end-
offset)))))))
(forward-char)))
@@ -1525,3 +1524,14 @@
;; arch-tag: 05f1ce09-be87-4c00-803e-4919ffa26c23
;;; octave-mod.el ends here
+
+
+;; TODO: this should probably also make sure we are actually looking
at and "end" keyword
+(defun octave-end-as-array-index-p ()
+ "pos is the position of the end keyword (end 'e', 'n', or 'd')"
+ (save-excursion
+ (condition-case nil ;test if point is
between parens
+ (progn
+ (up-list 1)
+ t)
+ (error nil))))
On Dec 10, 10:12 am, "Daniel Elliott" <danelliotts...@gmail.com>
wrote:
> I would say that this is definately not fixed. Now the octave mode no
> longer considers end to be a valid keyword to end blocks like if,
> while, for, etc. Octave mode should allow end to close these things
> in the same way that it uses endif, endwhile, and endfor respectively.
>
> Thanks.
>
> - dan
>
> On Mon, Nov 24, 2008 at 1:55 AM, Emacs bug Tracking System
>
> <d...@donarmstrong.com> wrote:
>
> > This is an automatic notification regarding your bug report
> > which was filed against the emacs,octave package:
>
> > #1407: end keyword bug
>
> > It has been closed by Glenn Morris <r...@gnu.org>.
>
> > Their explanation is attached below along with your original report.
> > If this explanation is unsatisfactory and you have not received a
> > better one in a separate message then please contact Glenn Morris <r...@gnu.org> by
> > replying to this email.
>
> > --
> > 1407:http://emacsbugs.donarmstrong.com/cgi-bin/bugreport.cgi?bug=1407
> > Emacs Bug Tracking System
> > Contact d...@donarmstrong.com with problems
>
> > ---------- Forwarded message ----------
> > From: Glenn Morris <r...@gnu.org>
> > To: Juanma Barranquero <lek...@gmail.com>
> > Date: Mon, 24 Nov 2008 02:45:00 -0500
> > Subject: Re: bug#1407: end keyword bug
> > "Juanma Barranquero" wrote:
>
> >> Does this problem still happen with the latest Emacs code from the
> >> CVS? Apparently it was fixed some time ago.
>
> > My mistake; I forwarded what I thought was an old unanswered bug, but
> > you are right, it is fixed. (I was thinking it was about font-lock
> > rather than indentation.)
>
> > ---------- Forwarded message ----------
> > From: "Daniel Elliott" <danelliotts...@gmail.com>
> > To: qu...@emacsbugs.donarmstrong.com
> > Date: Fri, 26 Oct 2007 02:35:06 +0000
> > Subject: end keyword bug
> > Package: emacs,octave
>
> > [ resent from
> > http://lists.gnu.org/archive/html/bug-gnu-emacs/2007-10/msg00166.html]
>
> > Hello,
>
> > Thank you for your work on the emacs octave-mode!
>
> > Has the incorrect indentation when the end keyword is used as an array
> > index been fixed? Currently, any use of end other than to close a
> > loop or conditional block confuses the indentation of octave-mode.
>
> > Example:
>
> > for c=1:C
> > Lambda(lastGood_Lambda(c)+1:end,c) = sigma;D_c(c) = M;
> > endfor
>
> > The octave-mode thinks that the end used as an array index is the end
> > for the for loop.
>
> > If this has been fixed, where should I download the latest, fixed,
> > stable version?
>
> > Thank you,
>
> > dan elliott
next prev parent reply other threads:[~2008-12-16 22:10 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <m163mdefer.fsf@fencepost.gnu.org>
[not found] ` <mqzljszlb4.fsf@fencepost.gnu.org>
2008-11-24 7:55 ` bug#1407: marked as done (end keyword bug) Emacs bug Tracking System
[not found] ` <handler.1407.D1407.122751271831930.notifdone@emacsbugs.donarmstrong.com>
2008-12-10 16:12 ` bug#1407: closed by Glenn Morris <rgm@gnu.org> (Re: bug#1407: end " Daniel Elliott
[not found] ` <mailman.2459.1228926262.26697.bug-gnu-emacs@gnu.org>
2008-12-16 22:10 ` dan [this message]
2009-04-19 11:15 ` bug#1407: marked as done (end " Emacs bug Tracking System
2009-04-20 18:00 ` Emacs bug Tracking System
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5057621a-fec3-463d-a406-9bcfd494f7c3@d42g2000prb.googlegroups.com \
--to=danelliottster@gmail.com \
--cc=bug-gnu-emacs@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).