[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: bug#1407: closed by Glenn Morris <address@hidden> (Re: bug#1407: end
From: |
dan |
Subject: |
Re: bug#1407: closed by Glenn Morris <address@hidden> (Re: bug#1407: end keyword bug) |
Date: |
Tue, 16 Dec 2008 14:10:03 -0800 (PST) |
User-agent: |
G2/1.0 |
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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: bug#1407: closed by Glenn Morris <address@hidden> (Re: bug#1407: end keyword bug),
dan <=