* Narrow/widen in folding.el @ 2010-12-20 21:41 Leo Alekseyev 2010-12-21 17:24 ` Andrea Crotti 0 siblings, 1 reply; 16+ messages in thread From: Leo Alekseyev @ 2010-12-20 21:41 UTC (permalink / raw) To: help-gnu-emacs I use folding.el a lot, and find it useful, but its interaction with isearch is decidedly suboptimal: if you start with a folded buffer, search for something, and land in a fold, the buffer will be narrowed to this fold, and to get out you have to hit C-x n w. This becomes a pain when I have to do lots of small quick searches/edits in a folded document. Is there a way to fix this behavior?.. --Leo ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Narrow/widen in folding.el 2010-12-20 21:41 Narrow/widen in folding.el Leo Alekseyev @ 2010-12-21 17:24 ` Andrea Crotti 2010-12-21 18:42 ` Tassilo Horn 0 siblings, 1 reply; 16+ messages in thread From: Andrea Crotti @ 2010-12-21 17:24 UTC (permalink / raw) To: help-gnu-emacs Leo Alekseyev <dnquark@gmail.com> writes: > I use folding.el a lot, and find it useful, but its interaction with > isearch is decidedly suboptimal: if you start with a folded buffer, > search for something, and land in a fold, the buffer will be narrowed > to this fold, and to get out you have to hit C-x n w. This becomes a > pain when I have to do lots of small quick searches/edits in a folded > document. Is there a way to fix this behavior?.. > > --Leo I suggest to try org-mode, you can do the same things that you're doing now but is much more powerful. If I use isearch it expands when it finds something and doesn't narrow it back if I press for example C-a, C-e ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Narrow/widen in folding.el 2010-12-21 17:24 ` Andrea Crotti @ 2010-12-21 18:42 ` Tassilo Horn 2010-12-21 22:00 ` Andrea Crotti ` (3 more replies) 0 siblings, 4 replies; 16+ messages in thread From: Tassilo Horn @ 2010-12-21 18:42 UTC (permalink / raw) To: help-gnu-emacs Andrea Crotti <andrea.crotti.0@gmail.com> writes: Hi! >> I use folding.el a lot, and find it useful, but its interaction with >> isearch is decidedly suboptimal: if you start with a folded buffer, >> search for something, and land in a fold, the buffer will be narrowed >> to this fold, and to get out you have to hit C-x n w. This becomes a >> pain when I have to do lots of small quick searches/edits in a folded >> document. Is there a way to fix this behavior?.. > > I suggest to try org-mode, you can do the same things that you're doing > now but is much more powerful. But org-mode doesn't work for source code files, e.g. it's not the right thing for using folding in C++ files. > If I use isearch it expands when it finds something and doesn't narrow > it back if I press for example C-a, C-e org builds upon outline mode, and outline provides a nice outline-minor-mode that can be used to use outlining in any files. It also temporally unhides hidden parts when isearching. I have a small config snippet that calculates the right `outline-regexp'. Basically, it's the current buffer's comment syntax followed by at least one *. The more *s, the higher the level. --8<---------------cut here---------------start------------->8--- (require 'outline) (defvar th-outline-minor-mode-font-lock-keywords '((eval . (list (concat "^\\(?:" outline-regexp "\\).*") 0 '(outline-font-lock-face) t t))) "Additional expressions to highlight in Orgstruct Mode and Outline minor mode. The difference to `outline-font-lock-keywords' is that this will overwrite other highlighting.") (defun th-outline-regexp () "Calculate the outline regexp for the current mode." (let ((comment-starter (replace-regexp-in-string "[[:space:]]+" "" comment-start))) (when (string= comment-starter ";") (setq comment-starter ";;")) (concat comment-starter "[*]+ "))) (defun th-outline-minor-mode-init () (interactive) (unless (eq major-mode 'latex-mode) (setq outline-regexp (th-outline-regexp)) (font-lock-add-keywords nil th-outline-minor-mode-font-lock-keywords))) (add-hook 'outline-minor-mode-hook 'th-outline-minor-mode-init) --8<---------------cut here---------------end--------------->8--- So in Lisp, I can do: ;;* Headline 1 ;;** Headline 1.1 ;;** Headline 1.2 and in C I can do //* Headline 1 //** Headline 1.1 //** Headline 1.2 I also bind TAB to a function that calls `org-cycle' if I'm on an outline heading, and in all other cases does what TAB would do normally. Bye, Tassilo ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Narrow/widen in folding.el 2010-12-21 18:42 ` Tassilo Horn @ 2010-12-21 22:00 ` Andrea Crotti 2010-12-22 8:16 ` Tassilo Horn 2010-12-25 2:18 ` Leo Alekseyev ` (2 subsequent siblings) 3 siblings, 1 reply; 16+ messages in thread From: Andrea Crotti @ 2010-12-21 22:00 UTC (permalink / raw) To: help-gnu-emacs Tassilo Horn <tassilo@member.fsf.org> writes: > > But org-mode doesn't work for source code files, e.g. it's not the right > thing for using folding in C++ files. Aha ok I didn't understand it was for source code. Anyway for C++ with cedet and the function senator-fold-tag it works perfectly for me, not sure if it's what you want... I have this (local-set-key [f6] 'senator-fold-tag-toggle) for the buffers supported by semantic. Now I remember I also tried to do something like this some time ago, but I couldn't stand the fact that I had to use a special syntax for it. So I gave up and now I found senator-fold-tag which works perfectly fine. I think also it would be nice to implement some "fold-everything", "unfold-everything" using this feature. ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Narrow/widen in folding.el 2010-12-21 22:00 ` Andrea Crotti @ 2010-12-22 8:16 ` Tassilo Horn 2010-12-22 9:01 ` Andrea Crotti ` (2 more replies) 0 siblings, 3 replies; 16+ messages in thread From: Tassilo Horn @ 2010-12-22 8:16 UTC (permalink / raw) To: help-gnu-emacs Andrea Crotti <andrea.crotti.0@gmail.com> writes: Hi Andrea, >> But org-mode doesn't work for source code files, e.g. it's not the >> right thing for using folding in C++ files. > > Aha ok I didn't understand it was for source code. Nah, no-one said that. But folding.el and outline.el (both minor modes) can be used in any buffer, whereas org-mode (a major mode) is for org-files only. So activating org-mode in a lisp buffer ==> lisp completion, highlighting, and indentation are gone. > Anyway for C++ with cedet and the function > > senator-fold-tag > it works perfectly for me, not sure if it's what you want... > I have this > (local-set-key [f6] 'senator-fold-tag-toggle) > > for the buffers supported by semantic. Yes, several modes implement some folding capabilities wtr. some syntactic constructs of a programming language. For example, there's also hs-minor-mode, which can collapse/expand blocks in languages like C/C++/Java. That's a good thing, but with outline-minor-mode (or folding.el), you can add more coarse-grained sections to structure your code into several groups of things (e.g. functions) belonging together, like: ;;* Code ;;** User Variables ;;** User Commands ;;** Internal Implementation ;;*** General ;;*** Feature A ;;*** Feature B > Now I remember I also tried to do something like this some time ago, > but I couldn't stand the fact that I had to use a special syntax for > it. That's what I like with `outline-minor-mode' and my config (i.e. outline headings are `comment-start' + one or many *s). You would comment your code anyway (I hope so!), and adding a few * to make a comment a headline to make the structure of the file visible is worth it. But I agree, that I don't like folding.el's obtrusive {{{ ... }}} syntax, too. Bye, Tassilo ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Narrow/widen in folding.el 2010-12-22 8:16 ` Tassilo Horn @ 2010-12-22 9:01 ` Andrea Crotti 2010-12-22 9:14 ` Leo Alekseyev [not found] ` <mailman.7.1293008512.15562.help-gnu-emacs@gnu.org> 2 siblings, 0 replies; 16+ messages in thread From: Andrea Crotti @ 2010-12-22 9:01 UTC (permalink / raw) To: help-gnu-emacs Tassilo Horn <tassilo@member.fsf.org> writes: > > Yes, several modes implement some folding capabilities wtr. some > syntactic constructs of a programming language. For example, there's > also hs-minor-mode, which can collapse/expand blocks in languages like > C/C++/Java. > > That's a good thing, but with outline-minor-mode (or folding.el), you > can add more coarse-grained sections to structure your code into several > groups of things (e.g. functions) belonging together, like: > > ;;* Code > ;;** User Variables > ;;** User Commands > ;;** Internal Implementation > ;;*** General > ;;*** Feature A > ;;*** Feature B Ah thanks for hs-minor-mode, it's also quite nice and it works at least with python and C++. Sure structuring is very nice, but I don't see why you need it when you can jump fast to sections? I use tags, isearch or grep as a last resource, and it's very fast. > > That's what I like with `outline-minor-mode' and my config (i.e. outline > headings are `comment-start' + one or many *s). You would comment your > code anyway (I hope so!), and adding a few * to make a comment a > headline to make the structure of the file visible is worth it. > > But I agree, that I don't like folding.el's obtrusive {{{ ... }}} > syntax, too. > > Bye, > Tassilo Well depends, I never comment trivial functions, I try to make them clear enough and with good names, that's already enough. So adding a comment just to create the right section would be already too annoying, but of course becasue I don't really feel I need it. ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Narrow/widen in folding.el 2010-12-22 8:16 ` Tassilo Horn 2010-12-22 9:01 ` Andrea Crotti @ 2010-12-22 9:14 ` Leo Alekseyev 2010-12-22 11:02 ` Tassilo Horn [not found] ` <mailman.7.1293008512.15562.help-gnu-emacs@gnu.org> 2 siblings, 1 reply; 16+ messages in thread From: Leo Alekseyev @ 2010-12-22 9:14 UTC (permalink / raw) To: Tassilo Horn, help-gnu-emacs >> Now I remember I also tried to do something like this some time ago, >> but I couldn't stand the fact that I had to use a special syntax for >> it. > > That's what I like with `outline-minor-mode' and my config (i.e. outline > headings are `comment-start' + one or many *s). You would comment your > code anyway (I hope so!), and adding a few * to make a comment a > headline to make the structure of the file visible is worth it. > > But I agree, that I don't like folding.el's obtrusive {{{ ... }}} > syntax, too. Hi Tassilo; thanks for the code snippet in your previous message. In fact, I had started using outline-minor-mode just in the way you described, but I manually set up the regexes for the few languages where I used it, so your code will definitely come in handy. The problem with this approach, though, is the overly rigid structure: the end of one fold is necessarily the beginning of another fold. For some use cases, it works rather well. Sometimes, however, I simply want a piece of text folded without it being logically tied to any hierarchy. For instance, I want to hide a header or a footer, or a long block of commented text in the middle of the document, etc. In org-mode, you can achieve this effect by using "drawers", where you have e.g. a mark-up like :DETAILS: <long block of folding/unfolding text here> :END:. In fact, if someone ported that functionality to outline-minor-mode, I'd probably use that. Failing this, folding.el is a good option. Unfortunately, this brings us back to the original issue -- folding.el's annoying narrow/widen behavior in isearch. I am still hoping someone familiar with folding.el might help clarify the issue :) In general, I would say that folding behavior is one area where Emacs could improve. If you do a search, you'll find lots of people on StackOverflow and other forums trying to figure out folding in Emacs. The problem is the fragmentation of folding mechanisms, and the fact that each has limits, drawbacks, and/or bugs. This is remedied to a point by using fold-dwim, and the new fold-dwim-org. However, my pipe dream is that someone will write a end-all folding mode that will roll into it functionality that's currently scattered across outline minor mode, folding.el, hideshow, and various enhancements of the above (hideshow-org, fold-dwim, etc.) It would probably make the most sense to merge the functionality of folding.el into outline-minor-mode, and set it up with org bindings, possibly through fold-dwim-org. Code folding could be done with hideshow, although CEDET's folding might be a better option at this point... --Leo ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Narrow/widen in folding.el 2010-12-22 9:14 ` Leo Alekseyev @ 2010-12-22 11:02 ` Tassilo Horn 2010-12-22 12:26 ` Leo Alekseyev 0 siblings, 1 reply; 16+ messages in thread From: Tassilo Horn @ 2010-12-22 11:02 UTC (permalink / raw) To: Leo Alekseyev; +Cc: help-gnu-emacs Leo Alekseyev <dnquark@gmail.com> writes: Hi Leo, > The problem with this approach, though, is the overly rigid structure: > the end of one fold is necessarily the beginning of another fold. For > some use cases, it works rather well. Sometimes, however, I simply > want a piece of text folded without it being logically tied to any > hierarchy. Hm, ok. I never had the need for arbitrary folding, but only to coarse-grained hierarchical folding (outline-minor-mode) and syntactical folding wrt. some programming language (hs-minor-mode and friends). But concerning folding.el and isearch: folding.el should put a special text properties on the overlay. ,----[ (info "(elisp)Invisible Text") ] | Incremental search can make invisible overlays visible temporarily | and/or permanently when a match includes invisible text. To enable | this, the overlay should have a non-`nil' `isearch-open-invisible' | property. The property value should be a function to be called with | the overlay as an argument. This function should make the overlay | visible permanently; it is used when the match overlaps the overlay on | exit from the search. | | During the search, such overlays are made temporarily visible by | temporarily modifying their invisible and intangible properties. If you | want this to be done differently for a certain overlay, give it an | `isearch-open-invisible-temporary' property which is a function. The | function is called with two arguments: the first is the overlay, and | the second is `nil' to make the overlay visible, or `t' to make it | invisible again. `---- That should be pretty trivial to hack into it. Bye, Tassilo ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Narrow/widen in folding.el 2010-12-22 11:02 ` Tassilo Horn @ 2010-12-22 12:26 ` Leo Alekseyev 0 siblings, 0 replies; 16+ messages in thread From: Leo Alekseyev @ 2010-12-22 12:26 UTC (permalink / raw) To: Tassilo Horn; +Cc: help-gnu-emacs On Wed, Dec 22, 2010 at 3:02 AM, Tassilo Horn <tassilo@member.fsf.org> wrote: > Leo Alekseyev <dnquark@gmail.com> writes: > > Hi Leo, > >> The problem with this approach, though, is the overly rigid structure: >> the end of one fold is necessarily the beginning of another fold. For >> some use cases, it works rather well. Sometimes, however, I simply >> want a piece of text folded without it being logically tied to any >> hierarchy. Arbitrary folding is handy for headers/footers. Also, I do a lot of data analysis in addition to coding, and arbitrary folding can be very useful there... > But concerning folding.el and isearch: folding.el should put a special > text properties on the overlay. > > ,----[ (info "(elisp)Invisible Text") ] > | Incremental search can make invisible overlays visible temporarily > | and/or permanently when a match includes invisible text. To enable > | this, the overlay should have a non-`nil' `isearch-open-invisible' > | property. The property value should be a function to be called with > | the overlay as an argument. This function should make the overlay > | visible permanently; it is used when the match overlaps the overlay on > | exit from the search. > | > | During the search, such overlays are made temporarily visible by > | temporarily modifying their invisible and intangible properties. If you > | want this to be done differently for a certain overlay, give it an > | `isearch-open-invisible-temporary' property which is a function. The > | function is called with two arguments: the first is the overlay, and > | the second is `nil' to make the overlay visible, or `t' to make it > | invisible again. > `---- In fact, I found the resolution to my original question: (setq folding-narrow-by-default nil) I saw this variable before in folding.el's documentation, but I misunderstood the terminology that was being used ("opening" folds vs "entering" folds), and didn't realize that the variable controlled narrowing just like I want it to. When I went source-browsing inspired by your message, I realized what it actually did :) --Leo ^ permalink raw reply [flat|nested] 16+ messages in thread
[parent not found: <mailman.7.1293008512.15562.help-gnu-emacs@gnu.org>]
* Re: Narrow/widen in folding.el [not found] ` <mailman.7.1293008512.15562.help-gnu-emacs@gnu.org> @ 2010-12-23 23:49 ` Tim X 0 siblings, 0 replies; 16+ messages in thread From: Tim X @ 2010-12-23 23:49 UTC (permalink / raw) To: help-gnu-emacs Andrea Crotti <andrea.crotti.0@gmail.com> writes: > > Sure structuring is very nice, but I don't see why you need it when you > can jump fast to sections? > I use tags, isearch or grep as a last resource, and it's very fast. > I find both very useful. Things like tags, isearch and grep are great for jumping around in source files - especially if they are large. However, folding is very useful when you want to be able to see/reference a bit of code that is some distance from the code your working on and don't want to have to actually move the cursor back and forward. I find it particularly useful if the folding marks/comments also conatin some additional information, such as the argument types to a function. Now, when writing some code and I can't remember the order of arguments etc, rather than having to move the cursor, I just glance up and the folded comment provides the memory jolt I needed. Sometimes, I also find folding helps reveal the algorithm I'm owrking on in a more concise, brief form - helping to keep me on track i.e. see the forest, not the trees. Essentially, its not an either/or situation. I also find folding more useful with some languages than others, so type of source code is probablyh a factor as well. The tip on using outline minor mode rather than one of the existing dedicated folding modes is very useful. I've always found the various implementations of folding as in folding.el, folding-mode.el etc to be a bit clunky - isearch and cumbersome key bindings being the two major frustrations. The example earlier in this thread using outline has reminded me that I've always planned to see if that would be a better solution and it looks promising, so thanks. Tim -- tcross (at) rapttech dot com dot au ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Narrow/widen in folding.el 2010-12-21 18:42 ` Tassilo Horn 2010-12-21 22:00 ` Andrea Crotti @ 2010-12-25 2:18 ` Leo Alekseyev 2010-12-25 3:08 ` Leo Alekseyev 2010-12-25 4:45 ` Leo Alekseyev [not found] ` <mailman.9.1293252343.14161.help-gnu-emacs@gnu.org> 3 siblings, 1 reply; 16+ messages in thread From: Leo Alekseyev @ 2010-12-25 2:18 UTC (permalink / raw) To: Tassilo Horn; +Cc: help-gnu-emacs On Tue, Dec 21, 2010 at 10:42 AM, Tassilo Horn <tassilo@member.fsf.org> wrote: > > I have a small config snippet that calculates the right > `outline-regexp'. Basically, it's the current buffer's comment syntax > followed by at least one *. The more *s, the higher the level. > > --8<---------------cut here---------------start------------->8--- > (require 'outline) > > (defvar th-outline-minor-mode-font-lock-keywords > '((eval . (list (concat "^\\(?:" outline-regexp "\\).*") > 0 '(outline-font-lock-face) t t))) > "Additional expressions to highlight in Orgstruct Mode and Outline minor mode. > The difference to `outline-font-lock-keywords' is that this will > overwrite other highlighting.") > > (defun th-outline-regexp () > "Calculate the outline regexp for the current mode." > (let ((comment-starter (replace-regexp-in-string > "[[:space:]]+" "" comment-start))) > (when (string= comment-starter ";") > (setq comment-starter ";;")) > (concat comment-starter "[*]+ "))) > > (defun th-outline-minor-mode-init () > (interactive) > (unless (eq major-mode 'latex-mode) > (setq outline-regexp (th-outline-regexp)) > (font-lock-add-keywords > nil > th-outline-minor-mode-font-lock-keywords))) > > (add-hook 'outline-minor-mode-hook > 'th-outline-minor-mode-init) > --8<---------------cut here---------------end--------------->8--- I've started using Tassilo's snippet in some of my projects and I like it a lot, especially combined with org-mode's visibility cycling (cf http://orgmode.org/faq.html#sec-1.2 ). I've been running into the following issue: I turn on the outline-minor-mode through a file-local variable, e.g. "-- -*- mode:sql; mode:outline-minor -*- ". However, the headings are not fontified until I manually toggle outline-minor-mode on and off. This is somewhat strange, since the new entries do appear in font-lock-keywords-alist. But even toggling font-lock-mode doesn't make it work, only re-enabling outline-minor-mode. I'd love to hear your thoughts on how to fix this :) --Leo ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Narrow/widen in folding.el 2010-12-25 2:18 ` Leo Alekseyev @ 2010-12-25 3:08 ` Leo Alekseyev 0 siblings, 0 replies; 16+ messages in thread From: Leo Alekseyev @ 2010-12-25 3:08 UTC (permalink / raw) To: Tassilo Horn; +Cc: help-gnu-emacs On Fri, Dec 24, 2010 at 6:18 PM, Leo Alekseyev <dnquark@gmail.com> wrote: > I've been running into the following issue: I turn on the > outline-minor-mode through a file-local variable, e.g. "-- -*- > mode:sql; mode:outline-minor -*- ". However, the headings are not > fontified until I manually toggle outline-minor-mode on and off. This > is somewhat strange, since the new entries do appear in > font-lock-keywords-alist. But even toggling font-lock-mode doesn't > make it work, only re-enabling outline-minor-mode. I'd love to hear > your thoughts on how to fix this :) Upon further experimentation, a correction: when turning on outline-minor-mode through the file-local-variable, the outline-minor-mode hooks don't run. Perhaps this warrants a thread of its own?... ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Narrow/widen in folding.el 2010-12-21 18:42 ` Tassilo Horn 2010-12-21 22:00 ` Andrea Crotti 2010-12-25 2:18 ` Leo Alekseyev @ 2010-12-25 4:45 ` Leo Alekseyev [not found] ` <mailman.9.1293252343.14161.help-gnu-emacs@gnu.org> 3 siblings, 0 replies; 16+ messages in thread From: Leo Alekseyev @ 2010-12-25 4:45 UTC (permalink / raw) To: Tassilo Horn; +Cc: help-gnu-emacs On Tue, Dec 21, 2010 at 10:42 AM, Tassilo Horn <tassilo@member.fsf.org> wrote: > --8<---------------cut here---------------start------------->8--- > (require 'outline) > > (defvar th-outline-minor-mode-font-lock-keywords > '((eval . (list (concat "^\\(?:" outline-regexp "\\).*") > 0 '(outline-font-lock-face) t t))) > "Additional expressions to highlight in Orgstruct Mode and Outline minor mode. > The difference to `outline-font-lock-keywords' is that this will > overwrite other highlighting.") > > (defun th-outline-regexp () > "Calculate the outline regexp for the current mode." > (let ((comment-starter (replace-regexp-in-string > "[[:space:]]+" "" comment-start))) > (when (string= comment-starter ";") > (setq comment-starter ";;")) > (concat comment-starter "[*]+ "))) > > (defun th-outline-minor-mode-init () > (interactive) > (unless (eq major-mode 'latex-mode) > (setq outline-regexp (th-outline-regexp)) > (font-lock-add-keywords > nil > th-outline-minor-mode-font-lock-keywords))) > > (add-hook 'outline-minor-mode-hook > 'th-outline-minor-mode-init) > --8<---------------cut here---------------end--------------->8--- Sincerest apologies for the spam, and please disregard the previous two messages. The problem with the above snippet still exists for me, but only for certain modes. In particular, for sql-mode, when th-outline-minor-mode-init is invoked via a hook when loading a file, as in Tassilo's code above, the font-lock-keywords variable does not appear to be set correctly. However, when th-outline-minor-mode-init is called interactively (either via M-x th-outline-minor-mode-init, or evaluating (outline-minor-mode t)), everything starts working. In other modes (e.g. shell and R), font-lock-keywords are set correctly, it seems, but the font-lock for first level heading doesn't seem to work. In elisp mode, everything works :) It's pretty hard to nail down the problem exactly, since it tends to be (a) mode-specific and (b) depends on whether the code is being called via a hook or interactively. Still, if there's a quick obvious fix, I'd like to know :) ^ permalink raw reply [flat|nested] 16+ messages in thread
[parent not found: <mailman.9.1293252343.14161.help-gnu-emacs@gnu.org>]
* Re: Narrow/widen in folding.el [not found] ` <mailman.9.1293252343.14161.help-gnu-emacs@gnu.org> @ 2010-12-25 22:48 ` Tim X 2010-12-27 9:19 ` Tassilo Horn [not found] ` <mailman.0.1293441599.18751.help-gnu-emacs@gnu.org> 0 siblings, 2 replies; 16+ messages in thread From: Tim X @ 2010-12-25 22:48 UTC (permalink / raw) To: help-gnu-emacs Leo Alekseyev <dnquark@gmail.com> writes: > On Tue, Dec 21, 2010 at 10:42 AM, Tassilo Horn <tassilo@member.fsf.org> wrote: >> --8<---------------cut here---------------start------------->8--- >> (require 'outline) >> >> (defvar th-outline-minor-mode-font-lock-keywords >> '((eval . (list (concat "^\\(?:" outline-regexp "\\).*") >> 0 '(outline-font-lock-face) t t))) >> "Additional expressions to highlight in Orgstruct Mode and Outline minor mode. >> The difference to `outline-font-lock-keywords' is that this will >> overwrite other highlighting.") >> >> (defun th-outline-regexp () >> "Calculate the outline regexp for the current mode." >> (let ((comment-starter (replace-regexp-in-string >> "[[:space:]]+" "" comment-start))) >> (when (string= comment-starter ";") >> (setq comment-starter ";;")) >> (concat comment-starter "[*]+ "))) >> >> (defun th-outline-minor-mode-init () >> (interactive) >> (unless (eq major-mode 'latex-mode) >> (setq outline-regexp (th-outline-regexp)) >> (font-lock-add-keywords >> nil >> th-outline-minor-mode-font-lock-keywords))) >> >> (add-hook 'outline-minor-mode-hook >> 'th-outline-minor-mode-init) >> --8<---------------cut here---------------end--------------->8--- > > Sincerest apologies for the spam, and please disregard the previous > two messages. The problem with the above snippet still exists for me, > but only for certain modes. In particular, for sql-mode, when > th-outline-minor-mode-init is invoked via a hook when loading a file, > as in Tassilo's code above, the font-lock-keywords variable does not > appear to be set correctly. However, when th-outline-minor-mode-init > is called interactively (either via M-x th-outline-minor-mode-init, or > evaluating (outline-minor-mode t)), everything starts working. In > other modes (e.g. shell and R), font-lock-keywords are set correctly, > it seems, but the font-lock for first level heading doesn't seem to > work. In elisp mode, everything works :) > > It's pretty hard to nail down the problem exactly, since it tends to > be (a) mode-specific and (b) depends on whether the code is being > called via a hook or interactively. Still, if there's a quick obvious > fix, I'd like to know :) > I'm not sure if this is relevant or not, but I've noticed some inconsistent behavior with respect to font-lock and sql mode. This is someting which has only appeared in the last couple of weeks (using bzr trunk for emacs 24.0.50). I've been working on a derived mode for coding pl/sql which is derived from sql mode. I've found that in my derived mode, I have to explicitly call sql-set-product in the load hook, even though I have sql-product set to oracle. Essentially, this appears to reload the mode. In other cases, using sql mode, I've noticed I sometimes need to start sql-mode, set the product to ansi and then set it back o oracle in order to get the appropriate font locking. My guess is that there is some sort of weird font lock issue arising form sql modes attempt to support multiple different sets of font lock keywords. This could be what is impacting on your use of outline as well. As mentioned, this issue only started to appear in the last few weeks i.e. this month. I've looked through the changelog and can't see anything obvious. If/when I track it down, I will possibly log a bug report if this is warranted. However, as I cannot nail it down yet and as I'm mainly only seeing it with my own derived mode, I will wait until I'm confident its not something wrong that I"m doing. Tim -- tcross (at) rapttech dot com dot au ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Narrow/widen in folding.el 2010-12-25 22:48 ` Tim X @ 2010-12-27 9:19 ` Tassilo Horn [not found] ` <mailman.0.1293441599.18751.help-gnu-emacs@gnu.org> 1 sibling, 0 replies; 16+ messages in thread From: Tassilo Horn @ 2010-12-27 9:19 UTC (permalink / raw) To: help-gnu-emacs Tim X <timx@nospam.dev.null> writes: Hi Tim, > As mentioned, this issue only started to appear in the last few weeks > i.e. this month. I've looked through the changelog and can't see > anything obvious. If/when I track it down, I will possibly log a bug > report if this is warranted. However, as I cannot nail it down yet > and as I'm mainly only seeing it with my own derived mode, I will wait > until I'm confident its not something wrong that I"m doing. Well, that doesn't really help, but I also have some font-lock issues with LaTeX documents + custem Hi-Lock keywords. If I load the document and then do M-x hi-lock-mode, everything works fine. But if I enable that mode using %% mode: hi-lock, it's font locking doesn't become active, although the mode is on. Of course, in every minimal test case I tried to produce, it always works fine. :-) Long story short: If you can nail it down, please file a bug report and post the link here. Bye, Tassilo ^ permalink raw reply [flat|nested] 16+ messages in thread
[parent not found: <mailman.0.1293441599.18751.help-gnu-emacs@gnu.org>]
* Re: Narrow/widen in folding.el [not found] ` <mailman.0.1293441599.18751.help-gnu-emacs@gnu.org> @ 2010-12-27 22:37 ` Tim X 0 siblings, 0 replies; 16+ messages in thread From: Tim X @ 2010-12-27 22:37 UTC (permalink / raw) To: help-gnu-emacs Tassilo Horn <tassilo@member.fsf.org> writes: > Tim X <timx@nospam.dev.null> writes: > > Hi Tim, > >> As mentioned, this issue only started to appear in the last few weeks >> i.e. this month. I've looked through the changelog and can't see >> anything obvious. If/when I track it down, I will possibly log a bug >> report if this is warranted. However, as I cannot nail it down yet >> and as I'm mainly only seeing it with my own derived mode, I will wait >> until I'm confident its not something wrong that I"m doing. > > Well, that doesn't really help, but I also have some font-lock issues > with LaTeX documents + custem Hi-Lock keywords. If I load the document > and then do M-x hi-lock-mode, everything works fine. But if I enable > that mode using %% mode: hi-lock, it's font locking doesn't become > active, although the mode is on. Of course, in every minimal test case > I tried to produce, it always works fine. :-) > > Long story short: If you can nail it down, please file a bug report and > post the link here. > Will do. However, at present, it is secondary to what I'm trying to do. With the dev version of emacs, I frequently find such issues are transient and they often get resolved before I manage to nail them down. As an example, I was using re-builder two days ago and noticed some issues with it. I just did a bzr pull and noticed that there have been some changes with re-builder and some of the rx stuff - could well be that this fixes the re-builder issues I've observed AND possibly font-lock issues since it too makes extensive use of regexps. Tim -- tcross (at) rapttech dot com dot au ^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2010-12-27 22:37 UTC | newest] Thread overview: 16+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2010-12-20 21:41 Narrow/widen in folding.el Leo Alekseyev 2010-12-21 17:24 ` Andrea Crotti 2010-12-21 18:42 ` Tassilo Horn 2010-12-21 22:00 ` Andrea Crotti 2010-12-22 8:16 ` Tassilo Horn 2010-12-22 9:01 ` Andrea Crotti 2010-12-22 9:14 ` Leo Alekseyev 2010-12-22 11:02 ` Tassilo Horn 2010-12-22 12:26 ` Leo Alekseyev [not found] ` <mailman.7.1293008512.15562.help-gnu-emacs@gnu.org> 2010-12-23 23:49 ` Tim X 2010-12-25 2:18 ` Leo Alekseyev 2010-12-25 3:08 ` Leo Alekseyev 2010-12-25 4:45 ` Leo Alekseyev [not found] ` <mailman.9.1293252343.14161.help-gnu-emacs@gnu.org> 2010-12-25 22:48 ` Tim X 2010-12-27 9:19 ` Tassilo Horn [not found] ` <mailman.0.1293441599.18751.help-gnu-emacs@gnu.org> 2010-12-27 22:37 ` Tim X
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).