bug#35419: [O] [Proposal] Buffer Lenses and the Case of Org-Mode (also, Jupyter)

2020-04-04 Thread Dmitry Gutov

Hi!

Some late clarifications about mmm-mode.

On 26.04.2019 00:00, Dmitrii Korobeinikov wrote:

 > A lot of the functionality of MMM Mode---that which makes the major mode
 > appear to change---is implemented by saving and restoring the values of
 > local variables, or pseudo-variables.

What I don't understand is where the modes of the submode region run and 
when they are turned on.


They are run in an empty temporary buffer, see mmm-update-mode-info. 
That is true for all the "submodes" in a buffer. The primary major mode 
is run in the context of that buffer (IIRC). After any of them runs, the 
code responsible for it collects the values of a certain number of known 
variables and associates that map with the major mode (this is a bit of 
a simplification).


Are necessary modes just allowed to run at the right time for the whole 
buffer?


When you move between the "chunks", no major mode functions are called. 
Instead, the values of variables are swapped in. Including the value of 
the 'major-mode' variable.


But then, how are they limited in their effect to just the 
necessary region? Narrowing?


Usually, yes. Especially when we're talking about font-lock and 
syntax-propertize-function. See mmm-fontify-region-list for an example.



Could, for example, syntax checking be done efficiently that way?


That depends on the combination of modes and how they are used (either 
they can be nested, like in web templates, or it's a flat list where 
chunks are largely independent like in Jupyter). But in most cases, I 
think, you could pick a good strategy. There are no universal ones, though.






Re: [O] Using CEDET modules from Emacs core

2017-02-12 Thread Dmitry Gutov

On 12.02.2017 05:33, Stefan Monnier wrote:


We don't have enough infrastructure support in general for "advanced"
editing functionality such as type/scope-aware completion.  So we have
various add-on thingies (like company-mode, cedet, and auto-complete)
which provide such support for specific modes, but really these should
move to core, so that major modes can themselves provide support for
such completion.


That doesn't always equate to "add semantic-mode support", and in many 
cases won't be optimal.


I don't have anything against supporting Semantic more widely, but we 
should understand that it isn't something all users want. And the 
"Semantic is too slow for C++" complaint (e.g. compared to Clang-based 
background process solutions) is unlikely to go away.




Re: [O] Sync up the org in emacs master to org maint branch?

2017-02-02 Thread Dmitry Gutov

On 02.02.2017 14:10, Lars Ingebrigtsen wrote:


If Django had traditionally always been distributed along with Python,
and maintained in the Python repo,


I'm pretty sure the first versions of Emacs came without Gnus. Later, it 
got bundled. Some time after that, Org and CEDET joined too.


All of that was before we got ELPA and with it, a very easy way for 
users to install third-party packages.



and the suggestion now would be to
move Django to a part of the Python repo that very few developers look
at,


I've never looked at the Gnus source code either, even inside the Emacs 
repository.



but Django would continue to be distributed with Python, and all
Django bug reports would continue to go to the Python bug repository,
and Python developers would continue to be responsible for QA and bug
fixing of Django.


You could introduce a separate bug tracker, if that helps.



[O] bug#25132: 26.0.50; emacs hangs when loading org file with python source blocks

2017-01-22 Thread Dmitry Gutov

On 20.01.2017 03:52, npost...@users.sourceforge.net wrote:


My feeling is that inhibit-modification-hooks should usually be buffer
local anyway.


Maybe you're right.

inhibit-read-only, bound nearby, seems to be in the same situation.


If we are not, why not make inhibit-modification-hooks always
buffer-local instead?


It would have to be in addition to, because even after doing
(make-variable-buffer-local 'var), (let ((var 'foo))...) still makes a
global binding.  `make-variable-buffer-local' only has effect for
`setq', which I think will hardly ever happen for
`inhibit-modification-hooks'.


You're right, and that sounds a little too complicated for my taste.

So, personally, I'd try to fix the particular instance first. Switching 
buffers inside with-silent-modifications is not a very common usage, I 
think.


Maybe org-src should itself let-bind the aforementioned variable(s) 
where it visits other buffers.


Up to you, of course, since you've already been given the go-ahead for 
the proposed fix.






[O] bug#25132: 26.0.50; emacs hangs when loading org file with python source blocks

2017-01-19 Thread Dmitry Gutov

On 08.01.2017 00:20, npost...@users.sourceforge.net wrote:

-(inhibit-modification-hooks t))
+(inhibit-modification-hooks
+ (progn (make-local-variable 'inhibit-modification-hooks) t)))


Are we not worried that inhibit-modificaiton-hooks will become 
buffer-local even after control flow leaves this let*?


If we are not, why not make inhibit-modification-hooks always 
buffer-local instead?






[O] bug#19606: 24.4; Emacs hangs when editing a 5-line Org file

2015-01-15 Thread Dmitry Gutov

On 01/15/2015 09:14 PM, Eli Zaretskii wrote:


But you didn't even show the backtrace from the main (a.k.a. "Lisp")
thread.  Your backtrace is from thread 15, whereas the main thread is
thread 1.


The output is from 'thread apply all backtrace', AFAICS.

On the other hand, it's not 'bt full' or `xbacktrace', which 
report-emacs-bug asks to call.







Re: [O] org-export raises stringp nil error

2013-03-08 Thread Dmitry Gutov

On 08.03.2013 18:06, Eli Zaretskii wrote:

From: Dmitry Gutov 
Cc: l...@metapensiero.it,  joa...@verona.se,  emacs-de...@gnu.org,  
b...@gnu.org,  emacs-orgmode@gnu.org,  sdl@gmail.com
Date: Fri, 08 Mar 2013 15:18:19 +0400


I like the idea of stripping big bundled packages (like org, gnus,
cedet, maybe even tramp, if that's possible).


That would certainly mean more problems for users to set them up with
a particular version of Emacs, because there's no longer a clear way
of getting the version of package X that correspond to Emacs version
N.M.


There won't be such correspondence.


And therein lies the problem.


AFAIK, all 4 packages I mentioned above maintain backward compatible
codebases, so it's not like they depend on the latest Emacs.


When I install a package, I usually want its latest *stable* version
that is compatible with the Emacs version I run.  As great as


Well, you're not getting it now. If you're using Emacs 23, you get the 
old version of Org that was bundled with it, and not some newer one that 
is still compatible with it (that would be the current stable release, I 
imagine).



compatibility stuff is, I trust testing more, as I need to do
something each day that doesn't involve debugging Emacs and my other
tools.


Easier access to newer versions for users means a bigger testing pool.
Yes, the combination of "latest org + latest Emacs" may end up getting 
tested less, but that might be an acceptable tradeoff.


Also, since org-mode or gnus won't update without explicit action from 
you, working with/on Emacs trunk may become more stable, because it will 
mean less moving parts.



Also think about various package managers for GNU/Linux distros, which
need to specify on what version of Emacs package X depends.


They already do, at least for some packages:
http://packages.ubuntu.com/quantal/gnus
http://packages.ubuntu.com/quantal/org-mode



Re: [O] org-export raises stringp nil error

2013-03-08 Thread Dmitry Gutov
Eli Zaretskii  writes:

>> From: joa...@verona.se
>> Date: Fri, 08 Mar 2013 10:15:07 +0100
>> Cc: b...@gnu.org, l...@metapensiero.it, emacs-orgmode@gnu.org,
>>  Leo Liu , emacs-de...@gnu.org
>> 
>> - Emacs "trunk" could be stripped of all but the bare essentials to
>> achieve bootstrap.
>> - distribution tarballs could be made from trunk+elpa.
>> 
>> Since I dont do releases for Emacs I dont get to have an opinion on the
>> matter, but if pressed, I would say this idea has considerable merit.
>
> It also has at least one demerits: people who track the trunk will not
> necessarily use the revisions of packages from elpa that will be
> included in Emacs tarballs.  That will probably mean longer and more
> painful pretests, and some of the advantages of having a publicly
> accessible development trunk will be lost.

On the other hand, people using older-but-still-supported versions of
Emacs will be able to help test the new versions of packages in ELPA.

Considering the total Emacs userbase is huge, this could be a great
benefit, and hey, if a problem in org-mode is found just before Emacs
release, it would either be completely org-mode team's problem (if it's
not bundled with Emacs), or Emacs could bundle the last stable version
without the regression. As long as Org is in the same tree, doing this
kind of trick is much harder.



Re: [O] org-export raises stringp nil error

2013-03-08 Thread Dmitry Gutov
Eli Zaretskii  writes:

>> From: Dmitry Gutov 
>> Cc: Eli Zaretskii ,  b...@gnu.org,  l...@metapensiero.it,  
>> emacs-orgmode@gnu.org,  Leo Liu ,  emacs-de...@gnu.org
>> Date: Fri, 08 Mar 2013 13:25:16 +0400
>> 
>> joa...@verona.se writes:
>> > Just a small reminder of the idea Stefan sometimes drops in these
>> > discussions:
>> > - Emacs "trunk" could be stripped of all but the bare essentials to
>> > achieve bootstrap.
>> 
>> I like the idea of stripping big bundled packages (like org, gnus,
>> cedet, maybe even tramp, if that's possible).
>
> That would certainly mean more problems for users to set them up with
> a particular version of Emacs, because there's no longer a clear way
> of getting the version of package X that correspond to Emacs version
> N.M.

There won't be such correspondence. AFAIK, all 4 packages I mentioned
above maintain backward compatible codebases, so it's not like they
depend on the latest Emacs.

And if some do, package.el allows to specify the minimal Emacs version
in the "Package-Requires" header. It just might use some improvement in
the error message when this dependency is not satisfied.

So, users of all versions of Emacs would use the same latest stable
Gnus, Org and CEDET, as long as the packages maintain backward
compatibility. That would create some pressure to upgrade old Emacs
versions, though (as long as ELPA repositories only contain the latest
versions of packages), but that's not necessarily a bad thing.



Re: [O] org-export raises stringp nil error

2013-03-08 Thread Dmitry Gutov
joa...@verona.se writes:
> Just a small reminder of the idea Stefan sometimes drops in these
> discussions:
> - Emacs "trunk" could be stripped of all but the bare essentials to
> achieve bootstrap.

I like the idea of stripping big bundled packages (like org, gnus,
cedet, maybe even tramp, if that's possible).

> - distribution tarballs could be made from trunk+elpa.
>
> Since I dont do releases for Emacs I dont get to have an opinion on the
> matter, but if pressed, I would say this idea has considerable merit.

If distribution tarballs include code from elpa, then I imagine code
freeze rules would also apply to elpa branch.
So I don't see how this would be an improvement.