From: Markus Triska <triska@metalevel.at>
To: Stefan Monnier <monnier@iro.umontreal.ca>
Cc: 21526@debbugs.gnu.org
Subject: bug#21526: 24.5; prolog-mode: broken indentation for if-then-else construct
Date: Tue, 06 Oct 2015 18:45:16 +0200 [thread overview]
Message-ID: <87egh8rlnn.fsf@metalevel.at> (raw)
In-Reply-To: <jwvoagcu7ts.fsf-monnier+emacsbugs@gnu.org> (Stefan Monnier's message of "Mon, 05 Oct 2015 21:17:10 -0400")
Stefan Monnier <monnier@iro.umontreal.ca> writes:
> The new behavior is different, there's no doubt about it. I think the
> fact that it knows about infix operators and their relative precedence
> is a great improvement, bringing sexp navigation closer to what you
> get in Lisp.
I would like to test the mode more seriously, and the most impeding
aspect of the new navigation is currently that Prolog terms within
comments are skipped over way too far, and comments in general make the
mode's navigation hard to predict in my view. Consider for example:
% Hello,
% there.
it_is_a_fact.
%?- test(a,b).HERE
In that sitation, pressing C-M-b yields:
HERE% Hello,
% there.
it_is_a_fact.
%?- test(a,b).
However, when I press C-M-b for example with:
x.
% Hello,
% there.
it_is_a_fact.
%?- test(a,b).HERE
Then I get:
x.
% Hello,
% there.
HEREit_is_a_fact.
%?- test(a,b).
Thus, syntactic constructs that are comparatively far away from the
Prolog terms near point influence the navigation with C-M-b. In this
case, placing the fact x/0 at the beginning made the mode NOT jump over
a fact and a comment, whereas it otherwise jumps over both of them.
In other modes I tested, syntactic elements of the language are handled
as expected also within comments when using C-M-b and C-M-f.
For example, in the case of Prolog, we have with the recent git version:
?- test(a,b).
?- test(x,y).HERE
Pressing C-M-b yields, as expected:
?- test(a,b).
HERE?- test(x,y).
The reason is clear: The Prolog term ?-(test(x,y)) is the one that
immediately precedes point, and pressing C-M-b jumps precisely over it.
However, when both of these terms are commented, as in:
%?- test(a,b).
%?- test(x,y).HERE
then pressing C-M-b skips over both of them, and, depending on what
appears before these lines, may move away even further than that.
This is completely unexpected and unusual in Emacs modes: In other modes
I tested (C, Lisp etc.), C-M-b and C-M-f behave very consistently, also
if the syntactic elements they usually jump over arise in comments.
In the case of Prolog though, it is particularly unfortunate because of
tools like ediprolog that encourage users to embed Prolog terms as
queries in comments, and pressing C-M-b with the expectation to move to
the beginning of such terms will in general move point to a position
that is much further away, and from where it is not easy to get back.
Please consider reinstating the navigation that was previously
available, or making the current navigation work better with comments.
Thank you and all the best,
Markus
next prev parent reply other threads:[~2015-10-06 16:45 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-20 13:02 bug#21526: 24.5; prolog-mode: broken indentation for if-then-else construct Markus Triska
2015-09-20 18:04 ` Stefan Monnier
2015-09-20 19:33 ` Markus Triska
2015-09-21 2:34 ` Stefan Monnier
2015-09-21 3:03 ` Stefan Monnier
2015-09-21 6:02 ` Markus Triska
2015-09-21 20:22 ` Stefan Monnier
2015-09-22 6:25 ` Markus Triska
2015-09-22 15:12 ` Stefan Monnier
2015-09-22 16:38 ` Markus Triska
2015-09-22 21:04 ` Markus Triska
2015-09-23 21:08 ` Markus Triska
2015-09-25 16:20 ` Markus Triska
2015-09-30 2:04 ` Stefan Monnier
2015-09-30 3:28 ` Stefan Monnier
2015-09-30 6:38 ` Markus Triska
2015-09-30 9:23 ` Stefan Monnier
2015-09-30 18:35 ` Markus Triska
2015-09-30 20:19 ` Stefan Monnier
2015-09-30 20:40 ` Markus Triska
2015-10-01 0:14 ` Stefan Monnier
2015-10-01 6:22 ` Markus Triska
2015-10-01 14:07 ` Stefan Monnier
2015-10-02 16:23 ` Markus Triska
2015-10-02 20:47 ` Stefan Monnier
2015-10-05 22:38 ` Markus Triska
2015-10-06 2:23 ` Stefan Monnier
2015-09-30 18:03 ` Markus Triska
2015-09-30 21:19 ` Stefan Monnier
2015-09-30 3:28 ` Stefan Monnier
2015-09-30 2:07 ` Stefan Monnier
2015-09-30 6:32 ` Markus Triska
2015-09-30 8:55 ` Stefan Monnier
2015-09-30 18:11 ` Markus Triska
2015-10-05 23:49 ` Markus Triska
2015-10-06 1:17 ` Stefan Monnier
2015-10-06 16:45 ` Markus Triska [this message]
2015-10-06 20:09 ` Stefan Monnier
2015-10-20 23:47 ` Markus Triska
2015-10-21 16:06 ` Stefan Monnier
2015-10-21 21:58 ` Markus Triska
2015-10-22 1:16 ` Stefan Monnier
2015-10-22 19:08 ` Markus Triska
2015-10-25 20:01 ` Stefan Monnier
2015-11-23 16:36 ` Stefan Monnier
2020-08-24 18:23 ` Lars Ingebrigtsen
2015-09-29 15:27 ` Stefan Monnier
2015-09-29 16:24 ` Markus Triska
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=87egh8rlnn.fsf@metalevel.at \
--to=triska@metalevel.at \
--cc=21526@debbugs.gnu.org \
--cc=monnier@iro.umontreal.ca \
/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).