* emacs coding modes need 'Suspend Disbelief' button
@ 2017-05-19 10:54 Jason Vas Dias
2017-05-19 11:22 ` Eli Zaretskii
` (4 more replies)
0 siblings, 5 replies; 11+ messages in thread
From: Jason Vas Dias @ 2017-05-19 10:54 UTC (permalink / raw)
To: emacs-devel, help-gnu-emacs
Hi Emacs wizards -
I just thought I should let you know,
being an emacs user of over 20 years,
that I think the fact that it is possible
to core-dump emacs by simply adding
some text to a shell script is bad , and
that I think modern emacs is going too
far in continuously syntax-checking
and parsing code.
In general, when using programming modes
such as c-mode / cc-mode / shell-script-mode ,
I wish, when typing, I could just turn all syntax
checking off by clicking on a 'Suspend Disbelief'
or 'Syntax Check Off' button / checkbox -
then, when I enter '"' or "'", the rest of the text
would not be colored - this is really annoying and greatly
slows down editing of large files - I don't want
the cursor to jump to the previous open bracket,
and I want the current indent to be preserved, until
I un-check 'Syntax Check' or press 'Syntax Check On' .
The insistence of modern emacs on always unconditionally
syntax checking everything greatly slows down typing and
is a major inhibition to quick editing of large source files .
And in some modes, such as shell script mode, and also
cc-mode, it is still possible to core-dump Emacs (latest 25.2 version)
simply by entering partial source code too slow or too fast , because of this
continuous syntax-checking .
I have core-dumped emacs several times recently by doing this -
one example that works pretty reliably is to start defining a
function within a function in shell-script - there is a timing
related bug , if you don't enter the opening '{' fast enough,
emacs will core-dump .
Emacs is regressing back towards 1990s levels of reliability
because of its insistence on continuous syntax checking .
Is there any way to globally turn off continuous syntax checking
for all modes ?
If not, I'm going to develop one.
Thanks & Regards,
Jason
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: emacs coding modes need 'Suspend Disbelief' button
2017-05-19 10:54 emacs coding modes need 'Suspend Disbelief' button Jason Vas Dias
@ 2017-05-19 11:22 ` Eli Zaretskii
2017-05-19 11:43 ` Jason Vas Dias
[not found] ` <20170519112004.GA31732@tuxteam.de>
` (3 subsequent siblings)
4 siblings, 1 reply; 11+ messages in thread
From: Eli Zaretskii @ 2017-05-19 11:22 UTC (permalink / raw)
To: Jason Vas Dias; +Cc: emacs-devel
> From: Jason Vas Dias <jason.vas.dias@gmail.com>
> Date: Fri, 19 May 2017 10:54:28 +0000
>
> I just thought I should let you know,
> being an emacs user of over 20 years,
> that I think the fact that it is possible
> to core-dump emacs by simply adding
> some text to a shell script is bad
I agree, and I urge you to report this as bugs, with all the details
required to reproduce the problem.
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: emacs coding modes need 'Suspend Disbelief' button
2017-05-19 11:22 ` Eli Zaretskii
@ 2017-05-19 11:43 ` Jason Vas Dias
2017-05-26 13:32 ` Thien-Thi Nguyen
0 siblings, 1 reply; 11+ messages in thread
From: Jason Vas Dias @ 2017-05-19 11:43 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: emacs-devel
The problem is, it is a transient and timing related bug - I cannot
reproduce it at will . But it has happened several times over the
last month . Fortunately, emacs has always saved a '#<file name>#'
crash file and I've been able to recover what I was typing.
The last exact difference that caused a core dump was :
$ diff -U0 sets.sh \#sets.sh#
--- sets.sh 2017-05-19 09:40:20.150752587 +0000
+++ #sets.sh# 2017-05-19 09:48:20.160120576 +0000
@@ -9,0 +10 @@
+_r='';
@@ -36,0 +38,3 @@
+ function needle_cmp()
+ {
+
@@ -65,3 +68,0 @@
- if ! IN $x $needle; then
- return 1;
- fi
Now, that's not much to go on, and I can't reproduce it by typing:
function f()
{
function fsub()
{
}
if ! f $x; then
return 1;
fi
}
Nor can I reproduce it by making same edits in clean emacs .
But leaving the core dumps aside, continuous syntax checking
and document re-coloring is just plain annoying, when typing,
but is nice when reading - I wish I could turn it off & on quickly
& easily .
On 19/05/2017, Eli Zaretskii <eliz@gnu.org> wrote:
>> From: Jason Vas Dias <jason.vas.dias@gmail.com>
>> Date: Fri, 19 May 2017 10:54:28 +0000
>>
>> I just thought I should let you know,
>> being an emacs user of over 20 years,
>> that I think the fact that it is possible
>> to core-dump emacs by simply adding
>> some text to a shell script is bad
>
> I agree, and I urge you to report this as bugs, with all the details
> required to reproduce the problem.
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: emacs coding modes need 'Suspend Disbelief' button
2017-05-19 11:43 ` Jason Vas Dias
@ 2017-05-26 13:32 ` Thien-Thi Nguyen
2017-06-21 18:38 ` Jason Vas Dias
0 siblings, 1 reply; 11+ messages in thread
From: Thien-Thi Nguyen @ 2017-05-26 13:32 UTC (permalink / raw)
To: emacs-devel
[-- Attachment #1: Type: text/plain, Size: 884 bytes --]
() Jason Vas Dias <jason.vas.dias@gmail.com>
() Fri, 19 May 2017 11:43:53 +0000
But leaving the core dumps aside, continuous syntax checking
and document re-coloring is just plain annoying, when typing,
but is nice when reading - I wish I could turn it off & on
quickly & easily .
Have you explored reducing the intrusiveness of this checking?
On my (old, slow) system given my (old, slow) typing speed,
Emacs seems responsive enough w/ only:
(setq jit-lock-context-time 1.5)
I see there are other vars (e.g., ‘jit-lock-contextually’), too.
--
Thien-Thi Nguyen -----------------------------------------------
(defun responsep (query)
(pcase (context query)
(`(technical ,ml) (correctp ml))
...)) 748E A0E8 1CB8 A748 9BFA
--------------------------------------- 6CE4 6703 2224 4C80 7502
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: emacs coding modes need 'Suspend Disbelief' button
2017-05-26 13:32 ` Thien-Thi Nguyen
@ 2017-06-21 18:38 ` Jason Vas Dias
2017-06-23 21:11 ` Stefan Monnier
0 siblings, 1 reply; 11+ messages in thread
From: Jason Vas Dias @ 2017-06-21 18:38 UTC (permalink / raw)
To: emacs-devel
Many thanks for useful responses to those that replied -
to answer some of the questions -
A way to reproduce fairly reliably :
In C++ mode, edit some deeply nested set of parens like:
((argc > 2) && (argv[3]!=NULL) &&
(argv[3][0]=='u'))?U::RTNL::RT::Type_t::RT_UNICAST:(
((argc > 2) && (argv[3]!=NULL) &&
(argv[3][0]=='l'))?U::RTNL::RT::Type_t::RT_LOCAL:(
((argc > 2) && (argv[3]!=NULL) &&
(argv[3][0]=='b'))?U::RTNL::RT::Type_t::RT_BROADCAST:(
((argc > 2) && (argv[3]!=NULL) &&
(argv[3][0]=='a'))?U::RTNL::RT::Type_t::RT_ANYCAST:(
((argc > 2) && (argv[3]!=NULL) &&
(argv[3][0]=='a'))?U::RTNL::RT::Type_t::RT_ANYCAST:(
An attempt to add another clause with Emacs c++-mode enabled
fairly reliably results in a core dump.
But I will try playing around with those settings and see if that helps ...
Thanks,
Jason
On 26/05/2017, Thien-Thi Nguyen <ttn@gnu.org> wrote:
>
> () Jason Vas Dias <jason.vas.dias@gmail.com>
> () Fri, 19 May 2017 11:43:53 +0000
>
> But leaving the core dumps aside, continuous syntax checking
> and document re-coloring is just plain annoying, when typing,
> but is nice when reading - I wish I could turn it off & on
> quickly & easily .
>
> Have you explored reducing the intrusiveness of this checking?
> On my (old, slow) system given my (old, slow) typing speed,
> Emacs seems responsive enough w/ only:
>
> (setq jit-lock-context-time 1.5)
>
> I see there are other vars (e.g., ‘jit-lock-contextually’), too.
>
> --
> Thien-Thi Nguyen -----------------------------------------------
> (defun responsep (query)
> (pcase (context query)
> (`(technical ,ml) (correctp ml))
> ...)) 748E A0E8 1CB8 A748 9BFA
> --------------------------------------- 6CE4 6703 2224 4C80 7502
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: emacs coding modes need 'Suspend Disbelief' button
2017-06-21 18:38 ` Jason Vas Dias
@ 2017-06-23 21:11 ` Stefan Monnier
0 siblings, 0 replies; 11+ messages in thread
From: Stefan Monnier @ 2017-06-23 21:11 UTC (permalink / raw)
To: emacs-devel
> ((argc > 2) && (argv[3]!=NULL) &&
> (argv[3][0]=='u'))?U::RTNL::RT::Type_t::RT_UNICAST:(
> ((argc > 2) && (argv[3]!=NULL) &&
> (argv[3][0]=='l'))?U::RTNL::RT::Type_t::RT_LOCAL:(
> ((argc > 2) && (argv[3]!=NULL) &&
> (argv[3][0]=='b'))?U::RTNL::RT::Type_t::RT_BROADCAST:(
> ((argc > 2) && (argv[3]!=NULL) &&
> (argv[3][0]=='a'))?U::RTNL::RT::Type_t::RT_ANYCAST:(
> ((argc > 2) && (argv[3]!=NULL) &&
> (argv[3][0]=='a'))?U::RTNL::RT::Type_t::RT_ANYCAST:(
> An attempt to add another clause with Emacs c++-mode enabled
> fairly reliably results in a core dump.
Sorry, no core dump here. But that code sure looks hideous.
Is that machine-generated code, maybe?
I'd be strongly tempted to rewrite along the lines of
if ((argc <= 2) || (argv[3] == NULL))
<blabla>
else
switch (argv[3][0]) {
case 'u': return U::RTNL::RT::Type_t::RT_UNICAST;
case 'l': return U::RTNL::RT::Type_t::RT_LOCAL;
...
}
-- Stefan
^ permalink raw reply [flat|nested] 11+ messages in thread
[parent not found: <20170519112004.GA31732@tuxteam.de>]
* Re: emacs coding modes need 'Suspend Disbelief' button
2017-05-19 10:54 emacs coding modes need 'Suspend Disbelief' button Jason Vas Dias
2017-05-19 11:22 ` Eli Zaretskii
[not found] ` <20170519112004.GA31732@tuxteam.de>
@ 2017-05-19 11:42 ` Óscar Fuentes
2017-05-19 13:35 ` Drew Adams
2017-05-19 16:23 ` Stefan Monnier
4 siblings, 0 replies; 11+ messages in thread
From: Óscar Fuentes @ 2017-05-19 11:42 UTC (permalink / raw)
To: help-gnu-emacs; +Cc: emacs-devel
Jason Vas Dias <jason.vas.dias@gmail.com> writes:
> And in some modes, such as shell script mode, and also
> cc-mode, it is still possible to core-dump Emacs (latest 25.2 version)
> simply by entering partial source code too slow or too fast , because of this
> continuous syntax-checking .
> I have core-dumped emacs several times recently by doing this -
> one example that works pretty reliably is to start defining a
> function within a function in shell-script - there is a timing
> related bug , if you don't enter the opening '{' fast enough,
> emacs will core-dump .
Please use M-x report-emacs-bug and provide the exact details for
reproducing the bug, preferably starting with `emacs -Q'.
> Is there any way to globally turn off continuous syntax checking
> for all modes ?
Try putting
(global-font-lock-mode -1)
in your .emacs.
^ permalink raw reply [flat|nested] 11+ messages in thread
* RE: emacs coding modes need 'Suspend Disbelief' button
2017-05-19 10:54 emacs coding modes need 'Suspend Disbelief' button Jason Vas Dias
` (2 preceding siblings ...)
2017-05-19 11:42 ` Óscar Fuentes
@ 2017-05-19 13:35 ` Drew Adams
2017-05-19 16:23 ` Stefan Monnier
4 siblings, 0 replies; 11+ messages in thread
From: Drew Adams @ 2017-05-19 13:35 UTC (permalink / raw)
To: Jason Vas Dias, emacs-devel, help-gnu-emacs
Please don't cross-post to emacs-devel and help-gnu-emacs.
Pick one.
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: emacs coding modes need 'Suspend Disbelief' button
2017-05-19 10:54 emacs coding modes need 'Suspend Disbelief' button Jason Vas Dias
` (3 preceding siblings ...)
2017-05-19 13:35 ` Drew Adams
@ 2017-05-19 16:23 ` Stefan Monnier
4 siblings, 0 replies; 11+ messages in thread
From: Stefan Monnier @ 2017-05-19 16:23 UTC (permalink / raw)
To: help-gnu-emacs; +Cc: emacs-devel
> then, when I enter '"' or "'", the rest of the text
> would not be colored - this is really annoying and greatly
> slows down editing of large files -
Normally when you insert " only the current line gets "colored"
immediately, and the rest of the buffer is only re-"colored" by
jit-lock's contextual highlighting, i.e. after jit-lock-context-time of
idle time. So if keep Emacs busy enough until you hit the closing " the
rest of the buffer should not be re-"colored" incorrectly even temporarily.
This said, even if it is re-"colored", that shouldn't slow anything down
(IOW if there's a noticeable slowdown, please report it so we can try
and fix it).
> The insistence of modern emacs on always unconditionally
> syntax checking everything greatly slows down typing and
> is a major inhibition to quick editing of large source files.
IIUC you're bumping into some performance problems.
If so, please report them (with M-x report-emacs-bug and enough details
that we can try and reproduce them) so we can try to fix them.
> And in some modes, such as shell script mode, and also
> cc-mode, it is still possible to core-dump Emacs (latest 25.2 version)
Core dumps are serious bugs, so please M-x report-emacs-bug.
We try pretty hard to fix those promptly.
If they're difficult to reproduce, the best is for you to run Emacs
within GDB and then send us the output of "bt" when it crashes.
> I have core-dumped emacs several times recently by doing this -
> one example that works pretty reliably is to start defining a
> function within a function in shell-script - there is a timing
> related bug , if you don't enter the opening '{' fast enough,
> emacs will core-dump .
My best guess here is that maybe your system has a stack-space limit
that's lower than what Emacs expects for some reason, so that the code
we have to try and check that we don't overflow the stack (e.g. in the
regexp matcher) doesn't do its job.
Stefan
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2017-06-23 21:11 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-05-19 10:54 emacs coding modes need 'Suspend Disbelief' button Jason Vas Dias
2017-05-19 11:22 ` Eli Zaretskii
2017-05-19 11:43 ` Jason Vas Dias
2017-05-26 13:32 ` Thien-Thi Nguyen
2017-06-21 18:38 ` Jason Vas Dias
2017-06-23 21:11 ` Stefan Monnier
[not found] ` <20170519112004.GA31732@tuxteam.de>
[not found] ` <CALyZvKzvUBe1-+yTnpK97MA=Dh5q89RmTugG3CJ0bcrbqnd2Eg@mail.gmail.com>
2017-05-19 11:37 ` Fwd: " Jason Vas Dias
2017-05-20 7:47 ` Robert Thorpe
2017-05-19 11:42 ` Óscar Fuentes
2017-05-19 13:35 ` Drew Adams
2017-05-19 16:23 ` Stefan Monnier
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).