* Re: terminal escapes in Info files? @ 2003-10-28 1:26 Karl Berry 2003-10-28 10:51 ` Alper Ersoy 2003-10-29 19:02 ` Richard Stallman 0 siblings, 2 replies; 135+ messages in thread From: Karl Berry @ 2003-10-28 1:26 UTC (permalink / raw) Cc: emacs-devel, rms, dirt > if we want to add font markup to info fmt, let's not use something as > ugly as terminal escape squences. please design something clean! Since Info is inherently limited to what can be displayed on a terminal, it seems like ANSI escape sequences are as reasonable specification of the capabilities as anything else? Easy to implement, too. Admittedly the ESC [ blah blah sequences are ugly, though. How about using what Enriched-Text mode uses in Emacs? See etc/enriched.doc in the Emacs distro. That is indeed a lot cleaner (also quite a bit more verbose :). Thanks for mentioning it, I wasn't aware of it. It seems using this would imply a new non-backward-compatible output format, though, since every literal < needs to be escaped in enriched format, and existing info readers don't know how to do that. Using the ugly terminal escape sequences, on the other hand, is backward-compatible because I'm sure that no real document has literal terminal escape sequences (Texinfo hasn't had @ctrl for years ...). Hmm. As always, it seems there is no easy answer. Thanks, k ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: terminal escapes in Info files? 2003-10-28 1:26 terminal escapes in Info files? Karl Berry @ 2003-10-28 10:51 ` Alper Ersoy 2003-10-28 13:48 ` Oliver Scholz ` (2 more replies) 2003-10-29 19:02 ` Richard Stallman 1 sibling, 3 replies; 135+ messages in thread From: Alper Ersoy @ 2003-10-28 10:51 UTC (permalink / raw) Cc: eliz, rms, emacs-devel Karl Berry: > How about using what Enriched-Text mode uses in Emacs? See > etc/enriched.doc in the Emacs distro. > That is indeed a lot cleaner (also quite a bit more verbose :). Thanks > for mentioning it, I wasn't aware of it. I think we can summarize the possible directions in two groups: 1) Older versions friendly, 2) Future versions friendly. (1) is using ANSI escapes directly in Info files. The benefit is, these files will still be displayed correctly by older versions of info when -R option is given (though I'm not sure about emacs.) Also no further processing is necessary in info. Minimal set of changes, most will be in makeinfo. The downside is, GUI browsers will be limited severely by an inexpansible markup on what can be done when rendering. For example two elements having the same ANSI escapes (@var{} and @env{} are good candidates) may become indistinguishable even though there's enough room in the display environment to associate different styles with these elements. Also ANSI is a frozen specification, so we may hit its limits pretty soon. (2) is using a specialized markup. The benefit is of course Info files will take advantage of the medium they are presented in to its maximum, provided that the browser is aware of this markup. The downside is, Info becomes an intermediate format rather than a final one, always asking for an additional step in the browsers. Display will be totally screwed in older versions[1]. So, the decision really is on the part of Info history we can discard rather than the markup format. The bad thing about standards is it's very hard to break them ;) Thanks, [1] We must give a visual clue about this to avoid possible frustration. Perhaps something like the following at the top of each node? ^H^[ignore] Your browser relies on an obsolete Info specification. See *note bla bla::. ^H^[/ignore] (or some other markup) And a hidden DON'T PANIC! "bla bla" node that gives information about where to find new versions of browsers. Compliant browsers will conceal this text and also hide "bla bla" node from tab completions, next/prev commands, etc. completely. But I digress. -- Alper Ersoy ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: terminal escapes in Info files? 2003-10-28 10:51 ` Alper Ersoy @ 2003-10-28 13:48 ` Oliver Scholz 2003-10-30 10:42 ` Alper Ersoy 2003-10-28 16:19 ` terminal escapes in Info files? Stefan Monnier 2003-10-29 19:01 ` Richard Stallman 2 siblings, 1 reply; 135+ messages in thread From: Oliver Scholz @ 2003-10-28 13:48 UTC (permalink / raw) Cc: eliz, rms, emacs-devel Alper Ersoy <dirt@gtk.org> writes: [...] > (2) is using a specialized markup. The benefit is of course Info > files will take advantage of the medium they are presented in to its > maximum, provided that the browser is aware of this markup. Most notably the markup could be syntactical rather than specifying the colours to use. I *hate* it, if a document tells me the best colour for me to read a certain syntactic element. Let the document specify the syntactical element and let me customize the colour. However, I would be nice at least, if the info format and the Emacs info reader would distinguish `example' and `code' and the like from the rest of the text. So that I can use a fixed width font for those parts and a proportional font for the rest. Another old wish of mine is that the info format could specify the type of code, for example (I am using an XML-like notation here, because I am not familiar with the info file format): <code type="lisp"> (defun bar (a &optional b &rest c) (list a b c)) </code> Then the info reader in Emacs could even fontify the code. [There's probably a better choice than XML-like markup, but you get the idea. I guess it should be done in a way that a tty reader may simply strip the markup.] Oliver -- Oliver Scholz 7 Brumaire an 212 de la Révolution Taunusstr. 25 Liberté, Egalité, Fraternité! 60329 Frankfurt a. M. http://www.jungdemokratenhessen.de Tel. (069) 97 40 99 42 http://www.jdjl.org ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: terminal escapes in Info files? 2003-10-28 13:48 ` Oliver Scholz @ 2003-10-30 10:42 ` Alper Ersoy 2003-11-10 13:01 ` HTML as info format (was: terminal escapes in Info files?) Oliver Scholz 0 siblings, 1 reply; 135+ messages in thread From: Alper Ersoy @ 2003-10-30 10:42 UTC (permalink / raw) Cc: eliz, rms, emacs-devel Hi! Oliver Scholz: > Most notably the markup could be syntactical rather than specifying > the colours to use. I *hate* it, if a document tells me the best > colour for me to read a certain syntactic element. Let the document > specify the syntactical element and let me customize the colour. Ok. If we lean towards a syntactical markup, it should _also_ specify the best colour, typeface, etc. too. We must do this, otherwise whenever there's a new command in Texinfo, readers will be unaware of how to handle it. Something like (notation aside): ^H^[var bi^H^]Variable^H^[/var^H^] So it's bold-italic. But you (info reader) know it's a var, so you can use whatever style you want. Sometime in the future, when we have this @funky command: ^H^[funky sb,red^H^]Art Vandelay^H^[/funky^H^] You don't know what a funky text is, but you can use the style provided there. However, I suggested ANSI escapes in the first place because of the star characters around strong text. One can use @strong only, and still get a flowing text in display environments supporting bold typeface. Not with Info though. Introducing syntactical markup elements is IMHO burning your blanket because of one flea. The only way to justify changes this level is to also identify the other problems in Info, and to address them all at once, then declare it as Info2. After all, we are breaking compatibility here, so it _must_ have to offer more. Currently though, Info serves as the 'final destionation of documents.' So what's wrong with using a widely adopted and frozen standard? (ECMA-48) > Another old wish of mine is that the info format could specify the > type of code, for example (I am using an XML-like notation here, > because I am not familiar with the info file format): This has to be addressed in Texinfo first. Admittedly, I could never understand @lisp. Why not @example lisp ... @end example @example C++ ... @end example Like @itemize, @example can accept an optional parameter. @lisp can be an alias to ``@example lisp'' internally. What do you think? Info doesn't have to format each of these differently, so makeinfo can omit the rest of @example lines. However, HTML and XML backends can clearly make use of this information. -- Alper Ersoy ^ permalink raw reply [flat|nested] 135+ messages in thread
* HTML as info format (was: terminal escapes in Info files?) 2003-10-30 10:42 ` Alper Ersoy @ 2003-11-10 13:01 ` Oliver Scholz 2003-11-17 13:29 ` HTML as info format Juri Linkov 0 siblings, 1 reply; 135+ messages in thread From: Oliver Scholz @ 2003-11-10 13:01 UTC (permalink / raw) Cc: eliz, Karl Berry, rms, emacs-devel [-- Attachment #1: Type: text/plain, Size: 3478 bytes --] Alper Ersoy <dirt@gtk.org> writes: [...] > Oliver Scholz: >> Most notably the markup could be syntactical rather than specifying >> the colours to use. I *hate* it, if a document tells me the best >> colour for me to read a certain syntactic element. Let the document >> specify the syntactical element and let me customize the colour. > > Ok. If we lean towards a syntactical markup, it should _also_ specify > the best colour, typeface, etc. too. We must do this, otherwise > whenever there's a new command in Texinfo, readers will be unaware of > how to handle it. Something like (notation aside): > > ^H^[var bi^H^]Variable^H^[/var^H^] > > So it's bold-italic. But you (info reader) know it's a var, so you > can use whatever style you want. Sometime in the future, when we have > this @funky command: > > ^H^[funky sb,red^H^]Art Vandelay^H^[/funky^H^] > > You don't know what a funky text is, but you can use the style > provided there. You have a point here. If the format would be HTML, it would also be possible to address that, by using <h1>, <b>, <i> etc. with the class attribute extensivly. The class attribute would specify the syntactical information, the raw element name would specify the fallback. > However, I suggested ANSI escapes in the first place because of the > star characters around strong text. One can use @strong only, and > still get a flowing text in display environments supporting bold > typeface. Not with Info though. > > Introducing syntactical markup elements is IMHO burning your blanket > because of one flea. > > The only way to justify changes this level is to also identify the > other problems in Info, and to address them all at once, then declare > it as Info2. After all, we are breaking compatibility here, so it > _must_ have to offer more. I don't know the "other problems". I have to admit that I am just an end user as far as info is concerned. I even hardly ever use texinfo. I'd like to see nicer syntactical fontification, proportional fonts for paragraph text etc. in the Emacs info reader. To get this properly would require changes to the info format. If this is towards HTML with a heavy use of the `class' attribute, then--I believe--it could provide everything necessary for future improvement. Well, since everybody seemed to agree that modifying the standalone info reader would be the hard part, I decided to give it a try and hacked a bit on it. I append both a patch to nodes.c in texinfo-4.6 and the file sample3x.info (in html) which I used for testing. Unfortunately I am probably the person least apt for this task, being unfamiliar with C, unfamiliar with the info source code, unfamiliar with the info format, unfamiliar with texinfo and, finally, unfamiliar with HTML. In fact this is the first larger chunk of C code that I ever wrote. (My thanks go to the people on the IRC channel #emacs for their help, BTW.) I did it in the most primitive way I could think of: it acts like a filter to convert HTML-info files to the current info format on the fly when reading the file contents. Obviously it is far from being complete (I didn't try even). It is rather proof-of-concept code. But if this approach is not absolutely insane, and if my C code is somewhere near of what a real C programmer could accept, then it could serve as a starting point, because I did it in a way that should be easily extensible. It should be simple enough to add ANSI colour sequences for certain tags. [-- Attachment #2: nodes.diff.gz --] [-- Type: application/octet-stream, Size: 6408 bytes --] [-- Attachment #3: sample3x.info.gz --] [-- Type: application/octet-stream, Size: 1370 bytes --] [-- Attachment #4: Type: text/plain, Size: 254 bytes --] Oliver -- Oliver Scholz 20 Brumaire an 212 de la Révolution Taunusstr. 25 Liberté, Egalité, Fraternité! 60329 Frankfurt a. M. http://www.jungdemokratenhessen.de Tel. (069) 97 40 99 42 http://www.jdjl.org [-- Attachment #5: Type: text/plain, Size: 141 bytes --] _______________________________________________ Emacs-devel mailing list Emacs-devel@gnu.org http://mail.gnu.org/mailman/listinfo/emacs-devel ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: HTML as info format 2003-11-10 13:01 ` HTML as info format (was: terminal escapes in Info files?) Oliver Scholz @ 2003-11-17 13:29 ` Juri Linkov 2003-11-18 7:01 ` Richard Stallman 2003-12-02 7:08 ` HTML as info format Eli Zaretskii 0 siblings, 2 replies; 135+ messages in thread From: Juri Linkov @ 2003-11-17 13:29 UTC (permalink / raw) Cc: emacs-devel Oliver Scholz <epameinondas@gmx.de> writes: > You have a point here. If the format would be HTML, it would also be > possible to address that, by using <h1>, <b>, <i> etc. with the class > attribute extensivly. The class attribute would specify the > syntactical information, the raw element name would specify the > fallback. There are many other arguments for using HTML as Info format. Current Info format can't make a link to another part of the same Info node. For example, look at the following node: Default Coding Systems ---------------------- ... - Variable: auto-coding-regexp-alist ... - Variable: file-coding-system-alist ... - Variable: process-coding-system-alist ... This function looks up the target in `file-coding-system-alist', `process-coding-system-alist', or `network-coding-system-alist', depending on OPERATION. *Note Default Coding Systems::. Currently it has the reference to the top of the same node, which is pretty useless. However, evidently the intention was to refer separately to every of these variables described in the same node. With HTML it's very easy to achieve by using the character # in href. The same problem appears in the Glossary node of the Emacs manual, where links to the same node are marked by the "(q.v.)". It can be justified to place such text on paper media, but for electronic documents, where there are no obstacles to make a link to follow to another part of the same node, such surrogate links look very dumb. There are other problems with the current Info format. For example, currently there is no way to hide the address part of the link without corrupting the paragraph formatting. After hiding the address part of the link lines become either too short or too long. For example, lines: See *Note Customizing Indentation: (ccmode)Customizing Indentation, for more information on customizing indentation for C and related modes, in Info the first line becomes too short: See Customizing Indentation for more information on customizing indentation for C and related modes, or using the `C-x 8' prefix, see *Note C-x 8: Single-Byte Character Support. On X Window systems, your locale should be set to an in Info it becomes too long, because the newline character in the reference is hidden: using the `C-x 8' prefix, see C-x 8. On X Window systems, your locale should be set to an -- http://www.jurta.org/emacs/ ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: HTML as info format 2003-11-17 13:29 ` HTML as info format Juri Linkov @ 2003-11-18 7:01 ` Richard Stallman 2003-11-18 14:54 ` Changes to Texinfo DTD [Was: Re: HTML as info format] Robert J. Chassell 2003-12-02 7:08 ` HTML as info format Eli Zaretskii 1 sibling, 1 reply; 135+ messages in thread From: Richard Stallman @ 2003-11-18 7:01 UTC (permalink / raw) Cc: epameinondas, emacs-devel There are many other arguments for using HTML as Info format. We are certainly not going to abandon Info format in this way, so I suggest people not spend a lot of time arguing about the idea. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Changes to Texinfo DTD [Was: Re: HTML as info format] 2003-11-18 7:01 ` Richard Stallman @ 2003-11-18 14:54 ` Robert J. Chassell 2003-11-18 15:59 ` Changes to Texinfo DTD Oliver Scholz 0 siblings, 1 reply; 135+ messages in thread From: Robert J. Chassell @ 2003-11-18 14:54 UTC (permalink / raw) Juri Linkov <juri@jurta.org> wrote There are many other arguments for using HTML as Info format. Before trying to persuade people to change the current Info format, please tell us what changes should be made to the current Texinfo DTD. This will tell us what needs to be added, if need be, to the current Texinfo format. At the same time, it does not embroil you or us in the contentious question of whether the format of a well established surface expression should be changed. As far as I know, the issues are less fraught when they involve makeinfo's XML output with the Texinfo DTD than with the Info format. The current Texinfo DTD is in: texinfo-4.6/makeinfo/texinfo.dtd [Also, how do you view an XML file with a DTD in a manner that looks like graphically displayed HTML, as in Mozilla; how do you do the same in Emacs?] -- Robert J. Chassell Rattlesnake Enterprises http://www.rattlesnake.com GnuPG Key ID: 004B4AC8 http://www.teak.cc bob@rattlesnake.com ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-11-18 14:54 ` Changes to Texinfo DTD [Was: Re: HTML as info format] Robert J. Chassell @ 2003-11-18 15:59 ` Oliver Scholz 2003-11-18 21:03 ` Robert J. Chassell 0 siblings, 1 reply; 135+ messages in thread From: Oliver Scholz @ 2003-11-18 15:59 UTC (permalink / raw) "Robert J. Chassell" <bob@rattlesnake.com> writes: > Juri Linkov <juri@jurta.org> wrote > > There are many other arguments for using HTML as Info format. > > Before trying to persuade people to change the current Info format, > please tell us what changes should be made to the current Texinfo DTD. I was not aware of makeinfo's XML output when I hacked my little proof-of-concept patch. After Karl Berry mentioned it in private mail, I had a quick look at it. I think now that it would be a good idea to use that rather than HTML. That is because texinfo's HTML output would need to be changed. Currently it is not easy to parse for an info reader which would have to identify menus, the beginnings of nodes etc.. And it does not provide enough of the kind of syntactical information that only make a change of the format desirable, IMO. The texinfo XML OTOH would be easy to parse AFAICS and it provides all syntactical information that I would like to see. And it is already implemented in makeinfo. If all other things were equal, HTML would have been nice, because people were free to choose their suboptimal browser to view the info files. That might be a small benefit, but it is a benefit. But things are not equal: the texinfo format is already implemented and up to the task. For HTML on the other hand it would be necessary to design an specify special conventions and to implement those conventions in makeinfo. So I have offered to hack the standalone info reader so that it would support the XML format in the same way that I have chosen in my patch. But I got not response so far. [...] > [Also, how do you view an XML file with a DTD in a manner that looks > like graphically displayed HTML, as in Mozilla; how do you do the same > in Emacs?] [...] One could write a CSS for texinfo XML, so that at least some browsers, like Mozilla, could render it. As for Emacs: I could write a parser and trivial renderer (applying text-properties) for texinfo XML in on a sunday afternoon. Oliver -- Oliver Scholz 28 Brumaire an 212 de la Révolution Taunusstr. 25 Liberté, Egalité, Fraternité! 60329 Frankfurt a. M. http://www.jungdemokratenhessen.de Tel. (069) 97 40 99 42 http://www.jdjl.org ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-11-18 15:59 ` Changes to Texinfo DTD Oliver Scholz @ 2003-11-18 21:03 ` Robert J. Chassell 2003-11-18 21:18 ` Nic Ferrier 2003-11-20 10:37 ` Oliver Scholz 0 siblings, 2 replies; 135+ messages in thread From: Robert J. Chassell @ 2003-11-18 21:03 UTC (permalink / raw) Cc: Oliver Scholz, Juri Linkov Oliver Scholz <epameinondas@gmx.de> wrote: So I have offered to hack the standalone info reader so that it would support the XML format in the same way that I have chosen in my patch. But I got not response so far. Heh... that might be a good idea. However, I don't think I know of anyone who uses the standalone Info reader; they all use Emacs Info instead.... So I cannot give you any useful advice on this. [...] > [Also, how do you view an XML file with a DTD in a manner that looks > like graphically displayed HTML, as in Mozilla; how do you do the same > in Emacs?] [...] One could write a CSS for texinfo XML, so that at least some browsers, like Mozilla, could render it. That would be useful. I use Galeon (which I presume would also use the CSS). The next step would be to persuade the Mozilla/Galeon developers to make it easy to bind next, prev, up, last, regexp-search, and spacebar to keystrokes, so you could avoid the mouse. As for me, the most vital capability is to be able to regexp search through a complete document that is in multiple files (i.e., the equivalent of the Info-search command), and not attempt to go outside the document. As for Emacs: I could write a parser and trivial renderer (applying text-properties) for texinfo XML in on a sunday afternoon. That would be very useful. If you provide similar commands to Info, so similar bindings can be made, people might express all their Texinfo files in XML with the Texinfo DTD, and try it your renderer, in place of the current Info. -- Robert J. Chassell Rattlesnake Enterprises http://www.rattlesnake.com GnuPG Key ID: 004B4AC8 http://www.teak.cc bob@rattlesnake.com ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-11-18 21:03 ` Robert J. Chassell @ 2003-11-18 21:18 ` Nic Ferrier 2003-11-19 12:38 ` Robert J. Chassell 2003-11-20 10:37 ` Oliver Scholz 1 sibling, 1 reply; 135+ messages in thread From: Nic Ferrier @ 2003-11-18 21:18 UTC (permalink / raw) Cc: Oliver Scholz, Juri Linkov, emacs-devel "Robert J. Chassell" <bob@rattlesnake.com> writes: > > [Also, how do you view an XML file with a DTD in a manner that looks > > like graphically displayed HTML, as in Mozilla; how do you do the same > > in Emacs?] > [...] > > One could write a CSS for texinfo XML, so that at least some browsers, > like Mozilla, could render it. > > That would be useful. I use Galeon (which I presume would also use > the CSS). The next step would be to persuade the Mozilla/Galeon > developers to make it easy to bind next, prev, up, last, > regexp-search, and spacebar to keystrokes, so you could avoid the > mouse. As for me, the most vital capability is to be able to regexp > search through a complete document that is in multiple files (i.e., > the equivalent of the Info-search command), and not attempt to go > outside the document. It would be better to provide an XSLT. The XSL could handle things like keystrokes by associating javascript actions with markup (eg: nodes). When I write articles I use an XSLT for transforming the Texinfo XML. I could adapt that if you like. Nic ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-11-18 21:18 ` Nic Ferrier @ 2003-11-19 12:38 ` Robert J. Chassell 2003-11-19 13:18 ` Nic Ferrier 0 siblings, 1 reply; 135+ messages in thread From: Robert J. Chassell @ 2003-11-19 12:38 UTC (permalink / raw) "Robert J. Chassell" <bob@rattlesnake.com> writes: > .... The next step would be to persuade the Mozilla/Galeon > developers to make it easy to bind next, prev, up, last, > regexp-search, and spacebar to keystrokes, so you could avoid the > mouse. .... It would be better to provide an XSLT. The XSL could handle things like keystrokes by associating javascript actions with markup (eg: nodes). Does that mean we would not have to ask the Mozilla/Galeon developers to do anything, but that the XSLT file would provide all that is needed? If so, this sounds like an excellent idea, since it would mean that the documentation on remote Web sites could be navigated through, searched, and read nearly as easily as Info documentation locally. I would especially like to see keystrokes for navigation, like `M-s' for the equivalent of `Info-search', n, p, u, and spacebar. Then I could read a great deal that is remote from my machine and, as a consequence, from me. -- Robert J. Chassell Rattlesnake Enterprises http://www.rattlesnake.com GnuPG Key ID: 004B4AC8 http://www.teak.cc bob@rattlesnake.com ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-11-19 12:38 ` Robert J. Chassell @ 2003-11-19 13:18 ` Nic Ferrier 0 siblings, 0 replies; 135+ messages in thread From: Nic Ferrier @ 2003-11-19 13:18 UTC (permalink / raw) Cc: emacs-devel "Robert J. Chassell" <bob@rattlesnake.com> writes: > "Robert J. Chassell" <bob@rattlesnake.com> writes: > > > .... The next step would be to persuade the Mozilla/Galeon > > developers to make it easy to bind next, prev, up, last, > > regexp-search, and spacebar to keystrokes, so you could avoid the > > mouse. .... > > It would be better to provide an XSLT. The XSL could handle things > like keystrokes by associating javascript actions with markup (eg: > nodes). > > Does that mean we would not have to ask the Mozilla/Galeon developers > to do anything, but that the XSLT file would provide all that is > needed? Well, enough that it makes adding code to Moz look overkill. > If so, this sounds like an excellent idea, since it would mean that > the documentation on remote Web sites could be navigated through, > searched, and read nearly as easily as Info documentation locally. > > I would especially like to see keystrokes for navigation, like `M-s' > for the equivalent of `Info-search', n, p, u, and spacebar. Then I > could read a great deal that is remote from my machine and, as a > consequence, from me. You'd be limited on the emulation of emacs keys... I suspect ESC-s wouldn't work for example, but ALT-S might. I'm not sure how web standards hold up on modifier keys. Search is an interesting one... I'm not sure how you'd implement search. Modern Javascript does have regular expressions... so it might be possible. XSLT 2.0 has regexs too, as do many XSLT 1.0 implementations out there... so it might be possible with XSLT as well. Straight forward would be: - next/prev - begin/end - index and menu lookups Nic ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-11-18 21:03 ` Robert J. Chassell 2003-11-18 21:18 ` Nic Ferrier @ 2003-11-20 10:37 ` Oliver Scholz 2003-11-20 16:55 ` Robert J. Chassell 2003-11-24 16:23 ` Richard Stallman 1 sibling, 2 replies; 135+ messages in thread From: Oliver Scholz @ 2003-11-20 10:37 UTC (permalink / raw) "Robert J. Chassell" <bob@rattlesnake.com> writes: > Oliver Scholz <epameinondas@gmx.de> wrote: > > So I have offered to hack the standalone info reader so that it > would support the XML format in the same way that I have chosen in > my patch. But I got not response so far. > > Heh... that might be a good idea. However, I don't think I know of > anyone who uses the standalone Info reader; they all use Emacs Info > instead.... So I cannot give you any useful advice on this. My proposal is to keep the current text/plain info format as an internal representation in the standalone info reader. The reader would then check whether a particular file is in the text/plain info format or in the XML format. If the former: business as usual. If the latter, it would convert this XML to plain/text with the necessary ^_ and the necessary "tags:" section and whatever else is required *on the fly*. That's the way the patch works that I sent earlier. Since I won't touch the code of the standalone reader at any other place, I would need advice mainly on the specification of the current info format. IMO this change is the easiest and the least intrusive. I believe that the transition to a new format would be painless this way. You could have both the current (then old) info format and the new XML format in /usr/info and other directories at the same time. The info reader would just DTRT. As I said: writing a non-conforming parser for a particular, machine-generated XML in Emacs Lisp is very, very easy. So info.el should probably do something slightly more sophisticated with the XML format and provide more bells&whistles. Or at least we could add the bells&whistles at a later time. I am not familiar with the code of info.el and I don't want to deal with it right now. But I'd offer to implement any API for dealing with the XML that somebody who wants to hack info.el would specify. So. I have stated my cause now. :-) Oliver -- Oliver Scholz 30 Brumaire an 212 de la Révolution Taunusstr. 25 Liberté, Egalité, Fraternité! 60329 Frankfurt a. M. http://www.jungdemokratenhessen.de Tel. (069) 97 40 99 42 http://www.jdjl.org ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-11-20 10:37 ` Oliver Scholz @ 2003-11-20 16:55 ` Robert J. Chassell 2003-11-20 18:19 ` Oliver Scholz 2003-11-20 18:24 ` Karl Eichwalder 2003-11-24 16:23 ` Richard Stallman 1 sibling, 2 replies; 135+ messages in thread From: Robert J. Chassell @ 2003-11-20 16:55 UTC (permalink / raw) Oliver Scholz <epameinondas@gmx.de> refers to the standalone Info reader when he talks about enabling that renderer to determine whether a document is in Info format or in XML format. First, it seems to me cleaner to write an XML renderer that can standalone, and then write separate code to enable the standalone Info to choose whether to use its current renderer or the new one. Second, you could write code to enable GNU Emacs to run a standalone XML renderer, the way it now runs W3M mode -- the advantage of this is that more people would test the standalone XML renderer than they would if it only worked outside of Emacs. Third, ... I don't know whether this is readily possible, but it looks to me to be a good idea ... you could add a standalone XML renderer to Mozilla and related browsers. -- Robert J. Chassell Rattlesnake Enterprises http://www.rattlesnake.com GnuPG Key ID: 004B4AC8 http://www.teak.cc bob@rattlesnake.com ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-11-20 16:55 ` Robert J. Chassell @ 2003-11-20 18:19 ` Oliver Scholz 2003-11-20 20:32 ` Nic Ferrier 2003-11-20 18:24 ` Karl Eichwalder 1 sibling, 1 reply; 135+ messages in thread From: Oliver Scholz @ 2003-11-20 18:19 UTC (permalink / raw) "Robert J. Chassell" <bob@rattlesnake.com> writes: [...] > First, it seems to me cleaner to write an XML renderer that can > standalone, and then write separate code to enable the standalone Info > to choose whether to use its current renderer or the new one. I take that to mean: to write an entirely new program that does the same job as the current standalone reader, but renders XML. I fail to see the benefit. I admit that it would be conceptually nicer to have the program keep the XML document as a DOM-like tree of nodes in memory rather than as a flat string of characters (for the internal representation would be the only difference to my proposal). But I do not see what difference it would make for a user. But maybe I am missing something. More importantly: it would be a *lot* of work and you would need somebody who implements it. I am certainly not going to write an entirely new standalone XML browser in C. But I am willing to implement my proposal and I am willing to do it now. > Second, you could write code to enable GNU Emacs to run a standalone > XML renderer, the way it now runs W3M mode -- the advantage of this is > that more people would test the standalone XML renderer than they > would if it only worked outside of Emacs. [...] That would also be a *lot* more work and maybe it could even be worse performance-wise than rendering the XML directly in Elisp. You'd have the process communication *and* you would still need to parse and render some ad hoc made markup from the standalone reader. Oliver -- Oliver Scholz 30 Brumaire an 212 de la Révolution Taunusstr. 25 Liberté, Egalité, Fraternité! 60329 Frankfurt a. M. http://www.jungdemokratenhessen.de Tel. (069) 97 40 99 42 http://www.jdjl.org ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-11-20 18:19 ` Oliver Scholz @ 2003-11-20 20:32 ` Nic Ferrier 2003-11-20 22:05 ` Oliver Scholz ` (2 more replies) 0 siblings, 3 replies; 135+ messages in thread From: Nic Ferrier @ 2003-11-20 20:32 UTC (permalink / raw) Cc: bob, emacs-devel Oliver Scholz <epameinondas@gmx.de> writes: > "Robert J. Chassell" <bob@rattlesnake.com> writes: > [...] > > > First, it seems to me cleaner to write an XML renderer that can > > standalone, and then write separate code to enable the standalone Info > > to choose whether to use its current renderer or the new one. > > I take that to mean: to write an entirely new program that does the > same job as the current standalone reader, but renders XML. I fail to > see the benefit. I admit that it would be conceptually nicer to have > the program keep the XML document as a DOM-like tree of nodes in > memory rather than as a flat string of characters (for the internal > representation would be the only difference to my proposal). But I do > not see what difference it would make for a user. But maybe I am > missing something. > > More importantly: it would be a *lot* of work and you would need > somebody who implements it. I am certainly not going to write an > entirely new standalone XML browser in C. But I am willing to > implement my proposal and I am willing to do it now. It wouldn't be a lot of work. It would be trivial with XSLT. There are basically 2 ways of doing it: Method 1. a) patch makeinfo so the XML output can be chunked. b) prepend an xml-stylesheet processing-instruction to each chunked file c) write an XSLT stylesheet to turn the XML into HTML with navigation written in Javascript (so key bindings can be used) d) serve the files to Mozilla (or IE or any other XSLT aware browser) and it will render the XML using the stylesheet e) For Emacs/W3 we'd have to write an XSLT processing solution, they are being worked on I understand. It would be very trivial to write one using a command line XSLT tool but see method 2. Method 2. a) use a command line XSLT tool such as xsltproc (from the GNOME libxml2 project: http://www.xmlsoft.org) to chunk AND style to HTML the output of makeinfo --xml. The styling would be as method 1, part c. b) serve the files, they would be HTML so Emacs/W3 would be able to read them without alteration. > > Second, you could write code to enable GNU Emacs to run a standalone > > XML renderer, the way it now runs W3M mode -- the advantage of this is > > that more people would test the standalone XML renderer than they > > would if it only worked outside of Emacs. > [...] > > That would also be a *lot* more work and maybe it could even be worse > performance-wise than rendering the XML directly in Elisp. You'd have > the process communication *and* you would still need to parse and > render some ad hoc made markup from the standalone reader. Nah. Just call out to a command line XSLT engine to turn the XML into HTML. This project needs doing anyway because most browsers do it. I'd be happy to undertake this work on Emacs/W3. Nic ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-11-20 20:32 ` Nic Ferrier @ 2003-11-20 22:05 ` Oliver Scholz 2003-11-20 22:51 ` Nic Ferrier 2003-11-21 2:13 ` Robert J. Chassell 2003-11-21 2:10 ` Robert J. Chassell 2003-11-22 21:19 ` Richard Stallman 2 siblings, 2 replies; 135+ messages in thread From: Oliver Scholz @ 2003-11-20 22:05 UTC (permalink / raw) Cc: bob, emacs-devel Nic Ferrier <nferrier@tapsellferrier.co.uk> writes: > Oliver Scholz <epameinondas@gmx.de> writes: [...] >> I take that to mean: to write an entirely new program that does the >> same job as the current standalone reader, but renders XML. I fail to >> see the benefit. [...] >> More importantly: it would be a *lot* of work and you would need >> somebody who implements it. [...] > It wouldn't be a lot of work. It would be trivial with XSLT. There > are basically 2 ways of doing it: > > > Method 1. [...] > c) write an XSLT stylesheet to turn the XML into HTML with navigation > written in Javascript (so key bindings can be used) > > d) serve the files to Mozilla (or IE or any other XSLT aware browser) > and it will render the XML using the stylesheet > > e) For Emacs/W3 we'd have to write an XSLT processing solution, they > are being worked on I understand. It would be very trivial to write > one using a command line XSLT tool but see method 2. It seems to me that we are talking about entirely different things. I wrote under the assumption that a small and lightweight standalone info reader that works on a console is necessary. It is not that I am particulary fond of that reader. In fact I have never used it before this thread started. It is just that I believe that such a minimalistic reader must exist, because info is the GNU system's primary help and documentation system. Since everybody in this thread seemed to agree that getting the standalone console reader to support a new format would be the hart part, I focused only on this reader. I think your proposal to enable XSLT aware web browsers to serve as full info readers is great. But I also think that there has to be at least one simple, independent solution with minimum requirements that works under all circumstances, including working on a Linux tty. If you can make your solution for Emacs work without a significant performance loss (Emacs/W3 is not the fastest html renderer known to mankind), then this is fine for me, personally. Though, I don't like the idea of making C-h i depend on yet another external program, unless this program ships with the Emacs tarball. [...] >> That would also be a *lot* more work and maybe it could even be worse >> performance-wise than rendering the XML directly in Elisp. You'd have >> the process communication *and* you would still need to parse and >> render some ad hoc made markup from the standalone reader. > > Nah. Just call out to a command line XSLT engine to turn the XML into > HTML. [...] That's still process communication + rendering. Oliver -- Oliver Scholz 30 Brumaire an 212 de la Révolution Taunusstr. 25 Liberté, Egalité, Fraternité! 60329 Frankfurt a. M. http://www.jungdemokratenhessen.de Tel. (069) 97 40 99 42 http://www.jdjl.org ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-11-20 22:05 ` Oliver Scholz @ 2003-11-20 22:51 ` Nic Ferrier 2003-11-21 2:13 ` Robert J. Chassell 1 sibling, 0 replies; 135+ messages in thread From: Nic Ferrier @ 2003-11-20 22:51 UTC (permalink / raw) Cc: bob, emacs-devel Oliver Scholz <epameinondas@gmx.de> writes: > It seems to me that we are talking about entirely different things. I > wrote under the assumption that a small and lightweight standalone > info reader that works on a console is necessary. It is not that I am > particulary fond of that reader. In fact I have never used it before > this thread started. It is just that I believe that such a > minimalistic reader must exist, because info is the GNU system's > primary help and documentation system. Since everybody in this thread > seemed to agree that getting the standalone console reader to support > a new format would be the hart part, I focused only on this reader. I am not arguing for a removal of the info reader. I use the info reader A LOT. Much more than other people in this thread seem to (and I do mean the info reader, not the emacs info tool). But why does the info reader have to be adapted to support a new format? > If you can make your solution for Emacs work without a significant > performance loss (Emacs/W3 is not the fastest html renderer known to > mankind), then this is fine for me, personally. Though, I don't like > the idea of making C-h i depend on yet another external program, > unless this program ships with the Emacs tarball. We don't need to make W3 support XSLT for reading local info files, only remote ones that you read over the web. And even then... as Bob was saying, we don't NEED to make Emacs read the files because there are other solutions for doing it. I think we're looking at a fairly small problem space here. > > Nah. Just call out to a command line XSLT engine to turn the XML into > > HTML. > [...] > > That's still process communication + rendering. You could say that... but here's the elisp to do the XSL bit: (let ((x (make-temp-file "xmlout")) (n (get-buffer-create "html"))) (write-region (point-min) (point-max) x) (shell-command (concat "xsltproc --html emacsw3-xml-html.xsl " x) n) ;; now buffer n contains html so render that...) Nic ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-11-20 22:05 ` Oliver Scholz 2003-11-20 22:51 ` Nic Ferrier @ 2003-11-21 2:13 ` Robert J. Chassell 2003-11-21 8:49 ` Nic Ferrier 1 sibling, 1 reply; 135+ messages in thread From: Robert J. Chassell @ 2003-11-21 2:13 UTC (permalink / raw) Oliver Scholz <epameinondas@gmx.de> wrote It seems to me that we are talking about entirely different things. I wrote under the assumption that a small and lightweight standalone info reader that works on a console is necessary. Indeed, there are different issues. One is rendering Texinfo into a surface expression which a display program can handle as efficiently as Info. The second is providing such a display program, or several of them. If my understanding is correct, Nic Ferrier is proposing a standard for an XML format that is a moderate extension of the current XML format produced by makeinfo. Also, if I understand correctly, he thinks that the new XML format will enable existing browsers such as Mozilla to be as efficient as the current Info mode in Emacs. And, in addition, with the use of an appropriate CGI on the Web servers, people will be able to read Info documents over a slow connection as well as they can read Info on a local machine. As Karl Eichwalder <ke@gnu.franken.de> said yelp, the GNOME help browser, works directly with XML files conforming to a DocBook subset - it starts a little bit slow, be warned. This is good news, since it means that not too much work will be needed to create a decent renderer for a surface expression of Texinfo. Put another way, Info is designed for a fast connection between the program doing the rendering and the file serving the Info file. But HTML is designed for a slow connection between the program doing the rendering and the Web server providing the HTML file. As far as I know, the current HTML produced by `makeinfo --html' permits search/navigation only within a single HTML `page' or file, not within a document spread over multiple files, as with Info. So you need to create HTML documents using the `--no-split' option, which means as a practical matter, that HTML works quickly only in the same circumstance as Info, namely that there be a fast connection between the program doing the rendering and the file server. The goal is to produce an XML output that not only overcomes the disadvantages of HTML and Info, but goes ahead of them. So, to return to Oliver's comment: ... I wrote under the assumption that a small and lightweight standalone info reader that works on a console is necessary. Yes, this is necessary, as one of the various display programs that the new XML could use. -- Robert J. Chassell Rattlesnake Enterprises http://www.rattlesnake.com GnuPG Key ID: 004B4AC8 http://www.teak.cc bob@rattlesnake.com ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-11-21 2:13 ` Robert J. Chassell @ 2003-11-21 8:49 ` Nic Ferrier 0 siblings, 0 replies; 135+ messages in thread From: Nic Ferrier @ 2003-11-21 8:49 UTC (permalink / raw) Cc: emacs-devel "Robert J. Chassell" <bob@rattlesnake.com> writes: > Put another way, Info is designed for a fast connection between the > program doing the rendering and the file serving the Info file. But > HTML is designed for a slow connection between the program doing the > rendering and the Web server providing the HTML file. I don't really understand this. But maybe I'm not seeing it at the right level of detail. No matter, what I'm saying is that we can *easily* make an HTML representation of Texinfo which is better for people with slow network connections than the current format. The representation will operate in a Javascript/XSLT aware browser and have: - keyboard navigation - index term lookup - node sized downloads Search will also be included but only with the addition of a web application (a CGI script probably) held on the same server which is serving the Texinfo files. We can do this *because* we have the XML output and don't have to write complicated HTML rendering code, we can write simply HTML rendering code with XSLT. > Oliver said: > ... I wrote under the assumption that a small and lightweight > standalone info reader that works on a console is necessary. > > Yes, this is necessary, as one of the various display programs that > the new XML could use. You're not saying we have to write a new console info reader for XML are you? If you are saying that: why? The current info reader is fine for consoles, surely it's okay that it uses a different data format than XML or HTML? Nic ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-11-20 20:32 ` Nic Ferrier 2003-11-20 22:05 ` Oliver Scholz @ 2003-11-21 2:10 ` Robert J. Chassell 2003-11-21 7:57 ` Nic Ferrier 2003-11-22 21:19 ` Richard Stallman 2 siblings, 1 reply; 135+ messages in thread From: Robert J. Chassell @ 2003-11-21 2:10 UTC (permalink / raw) Nic Ferrier <nferrier@tapsellferrier.co.uk> wrote Method 1. a) patch makeinfo so the XML output can be chunked. .... This sounds the best in the long run. Some one should be able to take your code in ten years time and work with it usefully, for some purpose you never thought of. Method 2. a) use a command line XSLT tool such as xsltproc (from the GNOME libxml2 project: http://www.xmlsoft.org) to chunk AND style to HTML the output of makeinfo --xml. The styling would be as method 1, part c. How is this different from the existing `makeinfo --html' which also does chunking and styling to HTML? Without knowing much about `xsltproc', the method scares me. Does this method enable me to use keybindings in Mozilla to navigate via regexp searching within a document that is spread over multiple files? If so, good and I stop being scared. Indeed, then the suggestion becomes very attractive. But if not, it is a distraction. -- Robert J. Chassell Rattlesnake Enterprises http://www.rattlesnake.com GnuPG Key ID: 004B4AC8 http://www.teak.cc bob@rattlesnake.com ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-11-21 2:10 ` Robert J. Chassell @ 2003-11-21 7:57 ` Nic Ferrier 2003-11-24 7:57 ` Juri Linkov 0 siblings, 1 reply; 135+ messages in thread From: Nic Ferrier @ 2003-11-21 7:57 UTC (permalink / raw) Cc: emacs-devel "Robert J. Chassell" <bob@rattlesnake.com> writes: > Nic Ferrier <nferrier@tapsellferrier.co.uk> wrote > > Method 1. > a) patch makeinfo so the XML output can be chunked. > .... > > This sounds the best in the long run. Some one should be able to take > your code in ten years time and work with it usefully, for some > purpose you never thought of. Yeah... it seems that: makeinfo --xml --split should work because one expects it to. > Method 2. > a) use a command line XSLT tool such as xsltproc (from the GNOME > libxml2 project: http://www.xmlsoft.org) to chunk AND style to HTML > the output of makeinfo --xml. > The styling would be as method 1, part c. > > How is this different from the existing `makeinfo --html' which also > does chunking and styling to HTML? > > Without knowing much about `xsltproc', the method scares me. Does > this method enable me to use keybindings in Mozilla to navigate via > regexp searching within a document that is spread over multiple files? > If so, good and I stop being scared. Indeed, then the suggestion > becomes very attractive. But if not, it is a distraction. It's different because now one can attach javascript to elements on the page whevever one needs it. The existing HTML doesn't do that, nor should it because it has an existing purpose. It's not scary - it's trivial. XSLT is very easy to read and implement. The XSLT solution isn't the end. To support regex searches some sort of webapplication IS needed as well. But XSLT is exactly the best choice for turning the Texinfo XML into something that would work with a webapp. Note that for method 1 and method 2 a webapplication would be needed, but only for regexp search. All the other tools, navigation, index lookup, etc... could be solved by javascript within the page. Nic ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-11-21 7:57 ` Nic Ferrier @ 2003-11-24 7:57 ` Juri Linkov 2003-11-24 9:32 ` Nic Ferrier 0 siblings, 1 reply; 135+ messages in thread From: Juri Linkov @ 2003-11-24 7:57 UTC (permalink / raw) Cc: bob, emacs-devel Nic Ferrier <nferrier@tapsellferrier.co.uk> writes: > "Robert J. Chassell" <bob@rattlesnake.com> writes: >> Nic Ferrier <nferrier@tapsellferrier.co.uk> wrote >> Method 2. >> a) use a command line XSLT tool such as xsltproc (from the GNOME >> libxml2 project: http://www.xmlsoft.org) to chunk AND style to HTML >> the output of makeinfo --xml. >> The styling would be as method 1, part c. >> >> How is this different from the existing `makeinfo --html' which also >> does chunking and styling to HTML? >> >> Without knowing much about `xsltproc', the method scares me. Does >> this method enable me to use keybindings in Mozilla to navigate via >> regexp searching within a document that is spread over multiple files? >> If so, good and I stop being scared. Indeed, then the suggestion >> becomes very attractive. But if not, it is a distraction. > > It's different because now one can attach javascript to elements on > the page whevever one needs it. The existing HTML doesn't do that, > nor should it because it has an existing purpose. BTW, do you know that HTML files generated from Texinfo files already have keys for navigation? The <a> tag has an attribute "accesskey" which assigns keys to "u" (up), "n" (next), "p" (prev), "[1-5]" (menu). These keys can be pressed e.g. in Mozilla as M-u, M-n, M-p, M-[1-5] to navigate to the corresponding HTML node. There is another useful scheme for navigation in HTML by specifying a "link" tag in meta section, e.g. <link rel="next" href="next.html" />, but currently this is not generated in info HTML files. > The XSLT solution isn't the end. To support regex searches some sort > of webapplication IS needed as well. But XSLT is exactly the best > choice for turning the Texinfo XML into something that would work with > a webapp. Some indexing programs like swish++ is needed here. BTW, this was recently suggested to me, when I asked about searching a mail archive. I don't know what indexing programs can index info files. -- http://www.jurta.org/emacs/ ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-11-24 7:57 ` Juri Linkov @ 2003-11-24 9:32 ` Nic Ferrier 0 siblings, 0 replies; 135+ messages in thread From: Nic Ferrier @ 2003-11-24 9:32 UTC (permalink / raw) Cc: bob, emacs-devel Juri Linkov <juri@jurta.org> writes: > BTW, do you know that HTML files generated from Texinfo files already > have keys for navigation? The <a> tag has an attribute "accesskey" > which assigns keys to "u" (up), "n" (next), "p" (prev), "[1-5]" (menu). > These keys can be pressed e.g. in Mozilla as M-u, M-n, M-p, M-[1-5] > to navigate to the corresponding HTML node. > > There is another useful scheme for navigation in HTML by specifying > a "link" tag in meta section, e.g. <link rel="next" href="next.html" />, > but currently this is not generated in info HTML files. Yes. I did know that. But what you can't do is lookup a value in an index, do a secondary lookup (",") or a search or a follow on search. You can't lookup a menu item or travel through the document by node (I'm not sure the new system will allow travel by node though). In addition those keys, while being good standard HTML can probably be improved on by using the key event model of the modern web browser DOM (Document Object Model). > > The XSLT solution isn't the end. To support regex searches some sort > > of webapplication IS needed as well. But XSLT is exactly the best > > choice for turning the Texinfo XML into something that would work with > > a webapp. > > Some indexing programs like swish++ is needed here. BTW, this was > recently suggested to me, when I asked about searching a mail archive. > I don't know what indexing programs can index info files. I think it can probably be achieved by grep or awk initially. Nic ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-11-20 20:32 ` Nic Ferrier 2003-11-20 22:05 ` Oliver Scholz 2003-11-21 2:10 ` Robert J. Chassell @ 2003-11-22 21:19 ` Richard Stallman 2003-11-22 21:41 ` Nic Ferrier 2 siblings, 1 reply; 135+ messages in thread From: Richard Stallman @ 2003-11-22 21:19 UTC (permalink / raw) Cc: epameinondas, bob, emacs-devel e) For Emacs/W3 we'd have to write an XSLT processing solution, they are being worked on I understand. It would be very trivial to write one using a command line XSLT tool but see method 2. I can't begin to make sense of that. How would you propose that Emacs display one of these XML files? It can't depend on W3 because W3 is not part of Emacs. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-11-22 21:19 ` Richard Stallman @ 2003-11-22 21:41 ` Nic Ferrier 2003-11-22 21:42 ` Miles Bader ` (2 more replies) 0 siblings, 3 replies; 135+ messages in thread From: Nic Ferrier @ 2003-11-22 21:41 UTC (permalink / raw) Cc: epameinondas, bob, emacs-devel Richard Stallman <rms@gnu.org> writes: > e) For Emacs/W3 we'd have to write an XSLT processing solution, they > are being worked on I understand. It would be very trivial to write > one using a command line XSLT tool but see method 2. > > I can't begin to make sense of that. How would you propose > that Emacs display one of these XML files? > > It can't depend on W3 because W3 is not part of Emacs. One of two ways: 1. use a command line XSLT processor (such as xsltproc, part of GNOME's libxsl project) to turn the XML into plain text (or specifically marked up text). 2. write an XSLT processor in Emacs Lisp. This wouldn't be as difficult as it sounds and I'm not sure it isn't done already (by one of the various XML/Emacs projects going on). These are only technical possibilites. From an administrative standpoint the second one is probably the only option since you wouldn't want to depend the Emacs info reader on xsltproc. Nic ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-11-22 21:41 ` Nic Ferrier @ 2003-11-22 21:42 ` Miles Bader 2003-11-22 21:56 ` Nic Ferrier ` (2 more replies) 2003-11-22 23:59 ` Stefan Monnier 2003-11-24 16:22 ` Richard Stallman 2 siblings, 3 replies; 135+ messages in thread From: Miles Bader @ 2003-11-22 21:42 UTC (permalink / raw) Cc: epameinondas, bob, rms, emacs-devel On Sat, Nov 22, 2003 at 09:41:39PM +0000, Nic Ferrier wrote: > 2. write an XSLT processor in Emacs Lisp. This wouldn't be as > difficult as it sounds and I'm not sure it isn't done already (by > one of the various XML/Emacs projects going on). The main question in my mind is whether this would be fast enough -- the current info mechanism, though it has its problems, can display info pages very quickly. As a point of contrast, W3 is _very_ slow (I think it would be completely unsuitable for use in displaying info files). -Miles -- The secret to creativity is knowing how to hide your sources. --Albert Einstein ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-11-22 21:42 ` Miles Bader @ 2003-11-22 21:56 ` Nic Ferrier 2003-11-24 7:55 ` Juri Linkov 2003-11-23 17:14 ` Changes to Texinfo DTD Robert J. Chassell 2003-11-24 7:54 ` Juri Linkov 2 siblings, 1 reply; 135+ messages in thread From: Nic Ferrier @ 2003-11-22 21:56 UTC (permalink / raw) Cc: epameinondas, bob, emacs-devel Miles Bader <miles@gnu.org> writes: > On Sat, Nov 22, 2003 at 09:41:39PM +0000, Nic Ferrier wrote: > > 2. write an XSLT processor in Emacs Lisp. This wouldn't be as > > difficult as it sounds and I'm not sure it isn't done already (by > > one of the various XML/Emacs projects going on). > > The main question in my mind is whether this would be fast enough -- the > current info mechanism, though it has its problems, can display info pages > very quickly. As a point of contrast, W3 is _very_ slow (I think it would be > completely unsuitable for use in displaying info files). In this response to rms I was not suggesting W3. I was talking about writing an XSLT processor in emacs lisp. XSLT is pretty quick unless memory is very limited or the transformation it is given is particularly complex. Bob Chassell and I are intending that Emacs/W3 be used as a platform for viewing our new HTML version of Texinfo. And yes, speed is a concern. Nic ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-11-22 21:56 ` Nic Ferrier @ 2003-11-24 7:55 ` Juri Linkov 2003-11-24 9:25 ` Why XSLT in Emacs Lisp? (was Re: Changes to Texinfo DTD) Nic Ferrier 0 siblings, 1 reply; 135+ messages in thread From: Juri Linkov @ 2003-11-24 7:55 UTC (permalink / raw) Cc: epameinondas, bob, emacs-devel Nic Ferrier <nferrier@tapsellferrier.co.uk> writes: > Miles Bader <miles@gnu.org> writes: >> On Sat, Nov 22, 2003 at 09:41:39PM +0000, Nic Ferrier wrote: >> > 2. write an XSLT processor in Emacs Lisp. This wouldn't be as >> > difficult as it sounds and I'm not sure it isn't done already (by >> > one of the various XML/Emacs projects going on). >> >> The main question in my mind is whether this would be fast enough -- the >> current info mechanism, though it has its problems, can display info pages >> very quickly. As a point of contrast, W3 is _very_ slow (I think it would be >> completely unsuitable for use in displaying info files). > > In this response to rms I was not suggesting W3. I was talking about > writing an XSLT processor in emacs lisp. XSLT is pretty quick unless > memory is very limited or the transformation it is given is > particularly complex. Why do you want to write an XSLT processor in emacs lisp? The XSL is a poor and ugly copy of Lisp. I once was enthusiastic about XSL too, but soon I realized that it's simply a parody of Lisp. Much better alternative for XML transformation and style formatting could be the DSSSL, but unfortunately it is not popular now. So, if you are going to do something in Emacs, please, do it in Emacs Lisp, not in XSL or JavaScript. -- http://www.jurta.org/emacs/ ^ permalink raw reply [flat|nested] 135+ messages in thread
* Why XSLT in Emacs Lisp? (was Re: Changes to Texinfo DTD) 2003-11-24 7:55 ` Juri Linkov @ 2003-11-24 9:25 ` Nic Ferrier 2003-11-24 13:04 ` Why XSLT in Emacs Lisp? Alex Schroeder 0 siblings, 1 reply; 135+ messages in thread From: Nic Ferrier @ 2003-11-24 9:25 UTC (permalink / raw) Cc: epameinondas, bob, emacs-devel Juri Linkov <juri@jurta.org> writes: > Nic Ferrier <nferrier@tapsellferrier.co.uk> writes: > > Miles Bader <miles@gnu.org> writes: > >> On Sat, Nov 22, 2003 at 09:41:39PM +0000, Nic Ferrier wrote: > >> > 2. write an XSLT processor in Emacs Lisp. This wouldn't be as > >> > difficult as it sounds and I'm not sure it isn't done already (by > >> > one of the various XML/Emacs projects going on). > >> > >> The main question in my mind is whether this would be fast enough -- the > >> current info mechanism, though it has its problems, can display info pages > >> very quickly. As a point of contrast, W3 is _very_ slow (I think it would be > >> completely unsuitable for use in displaying info files). > > > > In this response to rms I was not suggesting W3. I was talking about > > writing an XSLT processor in emacs lisp. XSLT is pretty quick unless > > memory is very limited or the transformation it is given is > > particularly complex. > > Why do you want to write an XSLT processor in emacs lisp? > The XSL is a poor and ugly copy of Lisp. I once was enthusiastic > about XSL too, but soon I realized that it's simply a parody of Lisp. > Much better alternative for XML transformation and style formatting > could be the DSSSL, but unfortunately it is not popular now. > So, if you are going to do something in Emacs, please, do it > in Emacs Lisp, not in XSL or JavaScript. Yes, XML syntax is clearly derived from s-expressions. But this is not the same as saying that XSLT is a parody of Lisp. The reason I might consider writing an XSLT processor in Emacs Lisp is that W3 will need one in the future. Modern web browsers (such as Mozilla) allow you to render XML inside the browser, but they only do that using XSLT. Emacs/W3 could easily use an external program for doing such a transformation, but that would complicate it's instal by making it dependant on such an external XSLT. Therefore an XSLT engine written in Emacs Lisp would be beneficial. As an aside, because XML is basically s-expressions then an XSLT wouldn't be _that_ difficult to write in Emacs Lisp. As I said in my original email, I think it may already have been done. DSSL would be much more work because it is, essentially, Scheme. All the problems associated with integrating Scheme into Emacs would rear their heads, how to do lexical scoping for example. And anyway, there isn't a standard for transforming XML in a web browser with DSSL. Nic ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Why XSLT in Emacs Lisp? 2003-11-24 9:25 ` Why XSLT in Emacs Lisp? (was Re: Changes to Texinfo DTD) Nic Ferrier @ 2003-11-24 13:04 ` Alex Schroeder 0 siblings, 0 replies; 135+ messages in thread From: Alex Schroeder @ 2003-11-24 13:04 UTC (permalink / raw) Cc: Juri Linkov, epameinondas, emacs-devel, bob Nic Ferrier <nferrier@tapsellferrier.co.uk> writes: > The reason I might consider writing an XSLT processor in Emacs Lisp is > that W3 will need one in the future. Modern web browsers (such as > Mozilla) allow you to render XML inside the browser, but they only do > that using XSLT. A long time ago I wrote a dom implementation and a simple xslt implementation in elisp. It is still available from the emacs wiki. Alex. -- .O. http://www.emacswiki.org/alex/ ..O Schroeder's first law: OOO The coffee at the office shall taste terrible. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-11-22 21:42 ` Miles Bader 2003-11-22 21:56 ` Nic Ferrier @ 2003-11-23 17:14 ` Robert J. Chassell 2003-11-24 7:54 ` Juri Linkov 2 siblings, 0 replies; 135+ messages in thread From: Robert J. Chassell @ 2003-11-23 17:14 UTC (permalink / raw) Cc: bob Miles Bader <miles@gnu.org> wrote The main question in my mind is whether this would be fast enough -- the current info mechanism, though it has its problems, can display info pages very quickly. Yes, you are right. The goal is to provide an alternative to Info that is as efficient as Info and as fast. This will help both those who prefer the markup they see in Web browsers to what they get in Info, and those who use Web browsers, such as Mozilla, for reading documentation. (And as a side effect, it may inspire people to improve W3 mode or another Web browser for Emacs.) Right now, it is impossible for any HTML mechanism to be as efficient as Info, since (as a practical matter) HTML lacks the concept of `one document in many files'. HTML runs via a `one document in one file' schema. (I am told that in theory a hypertext link can point to one document that is spread over several files, but I have never seen this.) Moreover, a browser, such as Mozilla 1.0, lacks even a regexp search mechanism for navigating within one page! However, HTML does have a great advantage over Info: HTML is designed for the situation in which the rendering computer is separated from the server by a slow connection. Info depends on a fast connection between the rendering machine and the source of the Info file. Indeed the Info file is often on a disk on the rendering machine; if not, it is connected via a fast NFS or similar link. Here are the two topologies: Info: fast rendering fast terminal/display --- or --- computer --- connection --- Info source slow only connection \________ often one computer __________/ HTML: fast fast rendering or terminal/display --- connection --- computer ---- slow ---- Web server connection \____________ often one computer __________/ \______ often two computers ______/ connected over the Internet On my current connection, it takes 17 minutes to download the Emacs Lisp Reference Manual. There is no way I would wait that long before beginning to browse the manual remotely. For remote use, the manual needs to be divided into smaller files, as Texinfo files are now when converted to HTML. Moreover, even with splitting, a search will take too long, unless the search regexp is sent to the remote site. I mention search because `Info-search' is still the most efficient way to navigate through a GNU manual. String searches through a complete document (and indices) are very helpful, but simply not good enough. Consequently, both to help documentation readers who want the kind of markup they see in a Web browser, and also to help those who want to read their documentation over the Internet via a slow connection, current HTML needs to be improved in two ways: 1. The Texinfo to HTML conversion process needs to ensure that key bindings as well as mouse bindings exist for moving from one node to another, for index lookups, etc., for a document that is spread over several files. Without keybindings, you have to move the mouse, which is fine for novices or those who don't mind spending their time doing so, but which is not as efficient as simply pressing the spacebar or other key, regardless where point is. This can be done by providing the document as one or more HTML pages, appropriately chunked and formatted and with Javascript for the keybindings. Nothing need be done to the Web server. 2. The Web server needs a CGI that enables regular expression searches/navigation through a single document split among several files. Info has the wonderful `Info-search' command, usually bound to `M-s'. This feature provides the equivalent. Since whole documents are often large -- as I said, the Emacs Lisp Reference Manual takes me 17 minutes to download -- and HTML works by downloading files that are then rendered, the only way to provide quick regular expression search and navigation is by sending only a search command, such as an `s', to the Web server, and having the Web server run the search itself. This feature does require adding a module to the Web server. This is difficult, since only some Web masters will provide the added convenience. However, it is easy to install CGI scripts on Apache. If the master of the Web server has not installed the CGI script, then the Javascript in the Texinfo HTML file tell the user that the Web server to which he or she is connected is lacking. And perhaps, eventually, the people who distribute Apache will be persuaded to include this module with the others, as part of their standard distribution. I think the far more difficult issue is learning by people who want to make use of efficient searches and navigation. Partly, the difference is preference; but partly the difference is learning. The kind of efficiency provided by Info is beyond most people's dreams -- they do not even imagine that an equivalent of `Info-search' could be useful. It does not occur them to learn. Consquently, for many of the people who want to take advantage of their computer, fundamental relearning is required. (For others it is preference, as I said. Indeed, some people who use Info do not much use `Info-search'.) On the other hand, Info was not designed for the kind of network we now have, in which people have their own rendering machines, but download files from a Web server over a slow connection. Info was designed for a network in which the connection between a display or terminal and the rendering machine may be over a slow connection, but the connection between the rendering machine and the disk providing the Info files is fast. Put another way, both Info and HTML have deficiencies. The goal here is make use of HTML's features and add those needed to match Info. Next, the problem will be to encourage writers to write for all potential users, not only those who look at documentation on a high resolution/fast redisplay screen: to write for people driving cars or otherwise blind, to write for those working over a really slow connection, to write for those using limited equipment. For example, people are going to listen to documents spoken to them over a cell phone while they drive a car. Currently, Texinfo files tend to be written for such people, but I see more and more use of @image without an alternative for those who do not want images. But that is a problem for another day. -- Robert J. Chassell Rattlesnake Enterprises http://www.rattlesnake.com GnuPG Key ID: 004B4AC8 http://www.teak.cc bob@rattlesnake.com ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-11-22 21:42 ` Miles Bader 2003-11-22 21:56 ` Nic Ferrier 2003-11-23 17:14 ` Changes to Texinfo DTD Robert J. Chassell @ 2003-11-24 7:54 ` Juri Linkov 2003-11-24 16:19 ` Luc Teirlinck 2 siblings, 1 reply; 135+ messages in thread From: Juri Linkov @ 2003-11-24 7:54 UTC (permalink / raw) Cc: epameinondas, bob, nferrier, emacs-devel Miles Bader <miles@gnu.org> writes: > On Sat, Nov 22, 2003 at 09:41:39PM +0000, Nic Ferrier wrote: >> 2. write an XSLT processor in Emacs Lisp. This wouldn't be as >> difficult as it sounds and I'm not sure it isn't done already (by >> one of the various XML/Emacs projects going on). > > The main question in my mind is whether this would be fast enough -- the > current info mechanism, though it has its problems, can display info pages > very quickly. As a point of contrast, W3 is _very_ slow (I think it would be > completely unsuitable for use in displaying info files). The current info mechanism is very fast mostly because some formatting is already done at info files generation time, where the most important preformatting is the lines filling to 70 columns. So, if it is acceptable limitation, the same could be applied to XML solution, i.e. to generate from Texinfo source such XML files that after stripping all markup the remaining plain text is already properly aligned without reformatting. This will solve the current problem in Info files, where some lines change their length after hiding a part of reference. In XML all additional information can be freely included into tag attributes without affecting the filling of plain text. For example, <a xref="(elisp)Menu Keymaps">Menu Keymaps</a>. -- http://www.jurta.org/emacs/ ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-11-24 7:54 ` Juri Linkov @ 2003-11-24 16:19 ` Luc Teirlinck 2003-11-24 22:32 ` Robert J. Chassell ` (2 more replies) 0 siblings, 3 replies; 135+ messages in thread From: Luc Teirlinck @ 2003-11-24 16:19 UTC (permalink / raw) Cc: epameinondas, bob, emacs-devel, nferrier, miles I am jumping in a thread I have not been following from the beginning which always carries the danger of completely missing the point, but I believe that the quote below is talking about alternatives to the present reformatting of Info files when `Info-hide-note-references' is t. If yes, I have a point I want to make to make sure that this alternative does not make the same mistake as the present reformatting. If not, sorry. Juri Linkov wrote: This will solve the current problem in Info files, where some lines change their length after hiding a part of reference. In XML all additional information can be freely included into tag attributes without affecting the filling of plain text. For example, <a xref="(elisp)Menu Keymaps">Menu Keymaps</a>. I hope it will also solve the other problem with the current situation in Emacs with Info-hide-note-references set to t. Namely, in the above example, it would just print "Menu Keymaps" without any indication that this is going to carry you out of the manual you are reading into the Elisp manual. Take (elisp)Locales as an example. The texinfo source contains: @xref{Locales,,, libc, GNU Libc Manual}, for more information about locales and locale items. With Info-hide-note-references set to t this gives: See Locales for more information about locales and locale items. "Locales" is the node we are looking at. So the user thinks: "This is silly. This just offers to carry me to the node I am already staring at." and does not follow the reference. With Info-hide-note-references set to nil, we see: *Note Locales: (libc)Locales, for more information about locales and locale items. Oh, it is actually _not_ the node we are staring at, but a node with exactly the same name in the libc manual! Now, if we are not sure what all this "locale" stuff is really about, here is a useful link to follow. "*Note Locales: (libc)Locales" is actually OK with me, but other people consider it too ugly. That is OK with me too as long as it does not get replaced with something pretty but misleading. Replacing it with "See Locales in the (libc) manual" would be OK. I am not sure whether it would be safe to replace it with the "fully pretty": "See Locales in the GNU Libc Manual", because that refers to the printed manual. It would look OK in this example, but I do not believe it is guaranteed to always be OK. Sincerely, Luc. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-11-24 16:19 ` Luc Teirlinck @ 2003-11-24 22:32 ` Robert J. Chassell 2003-11-24 22:31 ` Miles Bader 2003-11-25 5:22 ` Juri Linkov 2003-12-02 6:42 ` Eli Zaretskii 2 siblings, 1 reply; 135+ messages in thread From: Robert J. Chassell @ 2003-11-24 22:32 UTC (permalink / raw) Luc Teirlinck <teirllm@dms.auburn.edu> makes a very good point when he says that with `Info-hide-note-references' set to t in Emacs, you can lose track of which files hold which nodes. I hope that Nic's implementation does not repeat the mistake. -- Robert J. Chassell Rattlesnake Enterprises http://www.rattlesnake.com GnuPG Key ID: 004B4AC8 http://www.teak.cc bob@rattlesnake.com ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-11-24 22:32 ` Robert J. Chassell @ 2003-11-24 22:31 ` Miles Bader 0 siblings, 0 replies; 135+ messages in thread From: Miles Bader @ 2003-11-24 22:31 UTC (permalink / raw) Cc: emacs-devel On Mon, Nov 24, 2003 at 10:32:45PM +0000, Robert J. Chassell wrote: > Luc Teirlinck <teirllm@dms.auburn.edu> makes a very good point when he > says that with `Info-hide-note-references' set to t in Emacs, you can > lose track of which files hold which nodes. I hope that Nic's > implementation does not repeat the mistake. I know you have a bug up your butt about this, but it has nothing to do with the discussion at hand -- it's a user interface issue, not an implementation issue. If you want to bitch about it again, start a new thread. -Miles -- Run away! Run away! ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-11-24 16:19 ` Luc Teirlinck 2003-11-24 22:32 ` Robert J. Chassell @ 2003-11-25 5:22 ` Juri Linkov 2003-11-25 16:48 ` Luc Teirlinck 2003-11-25 19:54 ` Luc Teirlinck 2003-12-02 6:42 ` Eli Zaretskii 2 siblings, 2 replies; 135+ messages in thread From: Juri Linkov @ 2003-11-25 5:22 UTC (permalink / raw) Cc: emacs-devel Luc Teirlinck <teirllm@dms.auburn.edu> writes: > Juri Linkov wrote: > This will solve the current problem in Info files, where some lines > change their length after hiding a part of reference. In XML all > additional information can be freely included into tag attributes > without affecting the filling of plain text. For example, > <a xref="(elisp)Menu Keymaps">Menu Keymaps</a>. > > I hope it will also solve the other problem with the current situation > in Emacs with Info-hide-note-references set to t. Namely, in the > above example, it would just print "Menu Keymaps" without any > indication that this is going to carry you out of the manual you are > reading into the Elisp manual. The same is true for web browsers too. They display only a link title without URL in the text area. But when you move the mouse pointer over a link, the browser displays the URL in the status bar. Emacs Info currently works in the same way: it puts the help-echo text property on a reference, so you can see the full address in the echo area after moving mouse over a reference. BTW, recently there was a discussion on the emacs-devel list about displaying help-echo in the echo area after point movements over a text property. What was the decision? This could be useful for Info buffers too, i.e. when point moves to a reference with help-echo text property, then Emacs could display the full address in the echo area. -- http://www.jurta.org/emacs/ ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-11-25 5:22 ` Juri Linkov @ 2003-11-25 16:48 ` Luc Teirlinck 2003-11-25 21:59 ` Juri Linkov 2003-11-25 19:54 ` Luc Teirlinck 1 sibling, 1 reply; 135+ messages in thread From: Luc Teirlinck @ 2003-11-25 16:48 UTC (permalink / raw) Cc: emacs-devel Juri Linkov wrote: BTW, recently there was a discussion on the emacs-devel list about displaying help-echo in the echo area after point movements over a text property. What was the decision? This could be useful for Info buffers too, i.e. when point moves to a reference with help-echo text property, then Emacs could display the full address in the echo area. I just asked Richard whether it was OK to install the new file "help-at-pt.el" that implements this. Richard had still some questions about details concerning help-for-help and the name of a function. Sincerely, Luc. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-11-25 16:48 ` Luc Teirlinck @ 2003-11-25 21:59 ` Juri Linkov 2003-11-25 23:32 ` Luc Teirlinck 0 siblings, 1 reply; 135+ messages in thread From: Juri Linkov @ 2003-11-25 21:59 UTC (permalink / raw) Cc: emacs-devel Luc Teirlinck <teirllm@dms.auburn.edu> writes: > Juri Linkov wrote: > > BTW, recently there was a discussion on the emacs-devel list about > displaying help-echo in the echo area after point movements over a > text property. What was the decision? This could be useful for Info > buffers too, i.e. when point moves to a reference with help-echo text > property, then Emacs could display the full address in the echo area. > > I just asked Richard whether it was OK to install the new file > "help-at-pt.el" that implements this. Richard had still some questions > about details concerning help-for-help and the name of a function. But will this work in Info buffers? As I remember, there is some additional text property with a help text such that if point moves over a character with such property, then a help text is displayed in the echo area. Is it so? This would be useful to display references to external info manuals in the echo area when references are hidden in the Info buffer and user navigates between references by keyboard. -- http://www.jurta.org/emacs/ ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-11-25 21:59 ` Juri Linkov @ 2003-11-25 23:32 ` Luc Teirlinck 0 siblings, 0 replies; 135+ messages in thread From: Luc Teirlinck @ 2003-11-25 23:32 UTC (permalink / raw) Cc: emacs-devel Yuri Linkov wrote: But will this work in Info buffers? As I remember, there is some additional text property with a help text such that if point moves over a character with such property, then a help text is displayed in the echo area. Is it so? This would be useful to display references to external info manuals in the echo area when references are hidden in the Info buffer and user navigates between references by keyboard. Essentially, the same text as the one provided on mouse-over by the help-echo property can get printed on point-over, in the echo area, if the user sets a timer. The timer is customizable in various ways. Without a timer, the text can be printed on demand using "C-h ." Even without the timer there are movement functions that move to the next or previous `help-echo' region and print the help-echo of that region in the echo area. So my file is mainly concerned with the help-echo property, although it provides for a more keyboard oriented alternative kbd-help, in case help-echo is too exclusively mouse-oriented. While all of this can be useful when Info-hide-note-references is t, I do not believe that it is a full substitute for the ability to customize that variable to nil. Making invisible text temporarily visible is something different. There you have reveal-mode, which, if I understand correctly, requires overlays and does not work well with Info's text properties. You have visible-mode which toggles invisibility regardless of whether text or overlay properties are used. If one winds up enabling visible-mode too often in Info however, one probably wants to set Info-hide-note-references to nil. Sincerely, Luc. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-11-25 5:22 ` Juri Linkov 2003-11-25 16:48 ` Luc Teirlinck @ 2003-11-25 19:54 ` Luc Teirlinck 2003-11-25 21:48 ` Juri Linkov 1 sibling, 1 reply; 135+ messages in thread From: Luc Teirlinck @ 2003-11-25 19:54 UTC (permalink / raw) Cc: emacs-devel Yuri Linkov wrote: The same is true for web browsers too. They display only a link title without URL in the text area. But when you move the mouse pointer over a link, the browser displays the URL in the status bar. Emacs Info currently works in the same way: it puts the help-echo text property on a reference, so you can see the full address in the echo area after moving mouse over a reference. Info file names are usually very short, URL's tend to be long. True, I can get the full information, but it requires some extra effort. I may not take the trouble because I expect it to go to a section of the manual I am reading, because that is the "normal" situation. Hence, I do not worry about it because I have already read it and miss out on necessary information. The suggestions in my previous message might make things too long, but there are other possibilities. For instance, one could replace: *Note Locales: (libc)Locales, for more ... with: See Locales (libc) for more ... instead of with just: See Locales for more ... Anyway, if not, then the question is whether your proposed new implementation will work fine, filling and everything, with all possible values of Info-hide-note-references. In that case, everybody can customize. (I believe I understood that this thread is talking about a format that could potentially be used by Emacs, unlike the "A new online publishing ... " thread.) Sincerely, Luc. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-11-25 19:54 ` Luc Teirlinck @ 2003-11-25 21:48 ` Juri Linkov 2003-11-26 1:08 ` Luc Teirlinck 0 siblings, 1 reply; 135+ messages in thread From: Juri Linkov @ 2003-11-25 21:48 UTC (permalink / raw) Cc: emacs-devel > The same is true for web browsers too. They display only a link title > without URL in the text area. But when you move the mouse pointer > over a link, the browser displays the URL in the status bar. > Emacs Info currently works in the same way: it puts the help-echo > text property on a reference, so you can see the full address in the > echo area after moving mouse over a reference. > > Info file names are usually very short, URL's tend to be long. True, > I can get the full information, but it requires some extra effort. I > may not take the trouble because I expect it to go to a section of the > manual I am reading, because that is the "normal" situation. Hence, I > do not worry about it because I have already read it and miss out on > necessary information. This looks like a complaint about how all current web browsers work :-) You don't see in the text area of web browsers whether a link leads to to same site or not. Well, some sites (like slashdot.org) adds the name of external site after a link in the text if link leads outside. This is actually similar to what you are proposing. > Anyway, if not, then the question is whether your proposed new > implementation will work fine, filling and everything, with all > possible values of Info-hide-note-references. In that case, everybody > can customize. (I believe I understood that this thread is talking > about a format that could potentially be used by Emacs, unlike the "A > new online publishing ... " thread.) I wanted to clarify what is the best way to display references in the current Info format or XML output of Texinfo without refilling and without changing line lengths. -- http://www.jurta.org/emacs/ ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-11-25 21:48 ` Juri Linkov @ 2003-11-26 1:08 ` Luc Teirlinck 0 siblings, 0 replies; 135+ messages in thread From: Luc Teirlinck @ 2003-11-26 1:08 UTC (permalink / raw) Cc: emacs-devel Yuri Linkov wrote: I wanted to clarify what is the best way to display references in the current Info format or XML output of Texinfo without refilling and without changing line lengths. I do not know XML. But it would seem to me that keeping Info-hide-note-references in its present form and having the XML output already "pre-filled" correctly for all values of the variable might require passing the value as an extra option to makeinfo --xml. If one then would convert Texinfo source files to such pre-filled XML files as part of the Emacs make process, like they are now converted to .info files (I do not know whether this is the intention), then one would have to change Info-hide-note-references from a customizable variable to an option given to configure (and passed along to makeinfo --xml). One could keep Info-hide-note-references as a customizable variable by regenerating the pre-filled XML files from the Texinfo source files as needed, but I do not know whether that would be fast enough. Alternatively, Info could consult the value of Info-hide-note-references and do the filling itself using an XML file that still contained enough information to respect any @* or @w commands present in the original Texinfo source. Or one could regenerate the pre-filled XML from non pre-filled XML, as needed, in some other way. The problem with present refilling attempts with Info-hide-note-references set to t is not speed, but the fact that the information contained in @*, @w and the like is not preserved in the .info files and currently the .info files is all Info has to work with. I believe to recall from previous discussions that one of the benefits of XML would be that it still would contain the XML equivalents of @*, @w and the like. Or am I misunderstanding something? (Again, I do not know XML.) Sincerely, Luc. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-11-24 16:19 ` Luc Teirlinck 2003-11-24 22:32 ` Robert J. Chassell 2003-11-25 5:22 ` Juri Linkov @ 2003-12-02 6:42 ` Eli Zaretskii 2003-12-03 1:47 ` Luc Teirlinck 2 siblings, 1 reply; 135+ messages in thread From: Eli Zaretskii @ 2003-12-02 6:42 UTC (permalink / raw) Cc: juri, epameinondas, emacs-devel, nferrier, bob > Date: Mon, 24 Nov 2003 10:19:06 -0600 (CST) > From: Luc Teirlinck <teirllm@dms.auburn.edu> > > Take (elisp)Locales as an example. The texinfo source contains: > > @xref{Locales,,, libc, GNU Libc Manual}, for more information about > locales and locale items. > > With Info-hide-note-references set to t this gives: > > See Locales for more information about locales and locale items. > > "Locales" is the node we are looking at. We could as well treat this as a case of unfortunate wording in the ELisp manual. The above sentence could be modified to solve the problem at hand: The GNU C library manual (@pxref{Locales,,, libc, GNU Libc Manual}) has more information about locales and locale items. I notice in passing that a reference to a manual that might not be installed at all, because it describes a library that is only used by some platforms, might not be a good idea for purely didactic reasons: suppose my system doesn't use glibc---how would I learn more about Locales without the manual being available? More generally, if the underlying C library is something other than glibc, I might wonder whether the discussion in the glibc manual is at all relevant to the treatment of locales I will see on my system. So the offending sentence seems to be a rather singular case that, as worded, is troubled to begin with. We might as well not develop any theories based on it. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-12-02 6:42 ` Eli Zaretskii @ 2003-12-03 1:47 ` Luc Teirlinck 2003-12-03 16:18 ` Eli Zaretskii 0 siblings, 1 reply; 135+ messages in thread From: Luc Teirlinck @ 2003-12-03 1:47 UTC (permalink / raw) Cc: juri, epameinondas, bob, nferrier, emacs-devel Eli Zaretskii wrote: We could as well treat this as a case of unfortunate wording in the ELisp manual. The above sentence could be modified to solve the problem at hand: The GNU C library manual (@pxref{Locales,,, libc, GNU Libc Manual}) has more information about locales and locale items. That would look terrible in the printed manual with a double nearly identically worded reference to the GNU Libc manual, once outside parentheses and once inside parentheses. The reference in its present form seems to come out OK in the printed manual, except that maybe "@xref{Locales,,, libc, GNU Libc Manual}," should be replaced by: "@xref{Locales,,, libc, The GNU Libc Manual},". I believe the latter would look better (in the printed manual). Anyway, Juri's patch would solve the problem I complained about. I notice in passing that a reference to a manual that might not be installed at all, because it describes a library that is only used by some platforms, might not be a good idea for purely didactic reasons: suppose my system doesn't use glibc---how would I learn more about Locales without the manual being available? How would you learn about Locales without _any_ manual being referenced? Of course, the user needs to be alerted that the reference leads to another manual that may or may not be available and, if Juri's patch gets installed, they will be. But why deprive users that do have the manual installed of this information because other users do not have the manual installed? That manual is free software. People who do not have it installed can install it. It is good to inform them that it is available. More generally, if the underlying C library is something other than glibc, I might wonder whether the discussion in the glibc manual is at all relevant to the treatment of locales I will see on my system. That manual pays considerable attention to portability. So my best guess is that it will be relevant. Sincerely, Luc. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-12-03 1:47 ` Luc Teirlinck @ 2003-12-03 16:18 ` Eli Zaretskii 2003-12-04 2:53 ` Luc Teirlinck ` (2 more replies) 0 siblings, 3 replies; 135+ messages in thread From: Eli Zaretskii @ 2003-12-03 16:18 UTC (permalink / raw) Cc: juri, epameinondas, bob, nferrier, emacs-devel > Date: Tue, 2 Dec 2003 19:47:30 -0600 (CST) > From: Luc Teirlinck <teirllm@dms.auburn.edu> > > The GNU C library manual (@pxref{Locales,,, libc, GNU Libc Manual}) > has more information about locales and locale items. > > That would look terrible in the printed manual with a double nearly > identically worded reference to the GNU Libc manual, once outside > parentheses and once inside parentheses. That just means my wording should perhaps be improved further, or maybe we should use @ifinfo and @ifnotinfo to make the text loog good in both online and hard-copy version. But I don't think the text I suggested will ``look terrible'', it will just look a bit awkward. It is my experience that Texinfo does that quite a bit: it doesn't make it easy to write cross-references that look good in all supported formats. I think the reason for this is that each format has its own rules for good style, and it isn't easy to write text that will be compatible with all of them. > How would you learn about Locales without _any_ manual being > referenced? We should first ask ourselves what is there for the user to learn before she understands what the ELisp manual says in that section. It's possible that the amount of additional info is small, in which case we could simply put it into the ELisp manual. It could also be that the user doesn't need to know anything else to understand the ELisp facilities enough to use them. Do we know what information from the glibc manual is required reading for the reader of the ELisp manual? > But why deprive users that do have the manual installed of this > information because other users do not have the manual installed? If you mention the manual, the user might think that she must read it because it contains some crucial information without which it is impossible to understand the text in point. I doubt that this is the case. > More generally, if the underlying C library is something other than > glibc, I might wonder whether the discussion in the glibc manual is at > all relevant to the treatment of locales I will see on my system. > > That manual pays considerable attention to portability. Portability has nothing to do with this. The glibc manual can describe facilities provided only by glibc and not found anywhere else. The question is, again, what exactly we want the user to pick up in the glibc manual. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-12-03 16:18 ` Eli Zaretskii @ 2003-12-04 2:53 ` Luc Teirlinck 2003-12-04 7:58 ` Eli Zaretskii 2003-12-04 2:54 ` Luc Teirlinck 2003-12-04 3:35 ` Luc Teirlinck 2 siblings, 1 reply; 135+ messages in thread From: Luc Teirlinck @ 2003-12-04 2:53 UTC (permalink / raw) Cc: juri, epameinondas, nferrier, bob, emacs-devel, karl That just means my wording should perhaps be improved further, or maybe we should use @ifinfo and @ifnotinfo to make the text loog good in both online and hard-copy version. It would be silly (and impossible) to try to manually rewrite all references to other manuals in all currently existing .texi files this way, when the xrefs contain enough information for an Info reader (actually "makeinfo --xml" reader) to rewrite these sentences _automatically_ the way you want them rewritten, without requiring any changes in .texi files and, hence, without any danger of messing up any other formats. That was exactly what I proposed in the message you reacted too. If you want to do that though, you can not use the Info format. In fact, you can not use the Info format to correctly implement a value of t for Info-hide-note-references. I do not believe that the main intent of the Info format ever was to "look cool". If I understand correctly, the main intent was that even Info readers with minimal capabilities should be able to handle it. That is not very compatible with making things look "cool", "modern", "beautiful" or whatever you want to call it. For me Emacs info does not need to look "cool", it needs to be easy and efficient to use, but for other people it is extremely important that it looks as "cool" as possible. OK with me, but then it needs to use another format. If we use XML, we can not only make these and other xrefs come out the way you want them too, we can do so while filling correctly, respecting all @*, @w, @verb and the like. In addition to everything else people wanted to use XML for in this thread. Sincerely, Luc. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-12-04 2:53 ` Luc Teirlinck @ 2003-12-04 7:58 ` Eli Zaretskii 0 siblings, 0 replies; 135+ messages in thread From: Eli Zaretskii @ 2003-12-04 7:58 UTC (permalink / raw) Cc: juri, epameinondas, nferrier, bob, emacs-devel, karl > Date: Wed, 3 Dec 2003 20:53:15 -0600 (CST) > From: Luc Teirlinck <teirllm@dms.auburn.edu> > > It would be silly (and impossible) to try to manually rewrite all > references to other manuals in all currently existing .texi files this > way In general, I see nothing silly about making the manual look better. More specifically, references to other manuals are relatively rare, to the best of my memory. And there's no need to rewrite all of them at once: we could do that whenever we find a problem. > when the xrefs contain enough information for an Info reader > (actually "makeinfo --xml" reader) to rewrite these sentences > _automatically_ the way you want them rewritten As long as XML didn't replace the current Info format, this option is a bit academic, IMHO. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-12-03 16:18 ` Eli Zaretskii 2003-12-04 2:53 ` Luc Teirlinck @ 2003-12-04 2:54 ` Luc Teirlinck 2003-12-04 8:04 ` Eli Zaretskii ` (3 more replies) 2003-12-04 3:35 ` Luc Teirlinck 2 siblings, 4 replies; 135+ messages in thread From: Luc Teirlinck @ 2003-12-04 2:54 UTC (permalink / raw) Cc: juri, epameinondas, nferrier, bob, emacs-devel, karl Does anybody have any idea where we stand now with this thread and its various relatives? Is the following a reasonable summary? 1. The Info format is "here to stay". It is intended for readers with minimal capabilities and it is important that people can access documentation via these readers. 2. Emacs is not a reader with minimal capabilities. It could use XML to make Emacs info look as pretty as it can be, without paying a price in terms of functionality. 3. Oliver Scholz has a patch to allow the standalone reader to convert XML to Info format "on the fly", so people would only need to have the XML files installed to use both Emacs Info and standalone Info. Oliver's patch would add some "color" to standalone Info. (Unless these colors would be very customizable, or maybe even if they are, please provide a command line option to disable this. Not everybody can read yellow on white, cyan on white or red on black.) 4. Oliver is not volunteering to rewrite info.el to be able to use XML himself, although he has offered help, as explained in his earlier message. (I do not know XML and am not volunteering either.) Would there be anybody feeling comfortable with this, assuming this is really what we wanted to do? 5. Emacs will still need to be able to handle .info files, if no XML file is available, but certainly if we produce XML files from the .texi files, that case becomes marginal enough that we should not waste a lot of energy trying to do the impossible by attempting to present .info files in "nicer" ways than theoretically possible. Sincerely, Luc. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-12-04 2:54 ` Luc Teirlinck @ 2003-12-04 8:04 ` Eli Zaretskii 2003-12-04 9:39 ` Oliver Scholz 2003-12-04 8:19 ` Oliver Scholz ` (2 subsequent siblings) 3 siblings, 1 reply; 135+ messages in thread From: Eli Zaretskii @ 2003-12-04 8:04 UTC (permalink / raw) Cc: juri, epameinondas, nferrier, bob, emacs-devel, karl > Date: Wed, 3 Dec 2003 20:54:45 -0600 (CST) > From: Luc Teirlinck <teirllm@dms.auburn.edu> > > Does anybody have any idea where we stand now with this thread and its > various relatives? IMHO, to make this discussion useful, it needs to be conducted on a Texinfo forum first and foremost. This is mostly because the following item: > 3. Oliver Scholz has a patch to allow the standalone reader to convert > XML to Info format "on the fly", so people would only need to have > the XML files installed to use both Emacs Info and standalone Info. > Oliver's patch would add some "color" to standalone Info. (Unless > these colors would be very customizable, or maybe even if they are, > please provide a command line option to disable this. Not > everybody can read yellow on white, cyan on white or red on black.) is related to the stand-alone reader, not to Emacs (for which no equivalent changes are available). Personally, I think that a move to XML is a good idea, but such a transition would take a non-trivial period of time, during which we will need to support installations where some or all of the manuals are in Info format. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-12-04 8:04 ` Eli Zaretskii @ 2003-12-04 9:39 ` Oliver Scholz 2003-12-04 11:48 ` Oliver Scholz 2003-12-04 15:35 ` Eli Zaretskii 0 siblings, 2 replies; 135+ messages in thread From: Oliver Scholz @ 2003-12-04 9:39 UTC (permalink / raw) Cc: juri, bob, Luc Teirlinck, nferrier, karl, emacs-devel Eli Zaretskii <eliz@elta.co.il> writes: >> Date: Wed, 3 Dec 2003 20:54:45 -0600 (CST) >> From: Luc Teirlinck <teirllm@dms.auburn.edu> [...] > IMHO, to make this discussion useful, it needs to be conducted on a > Texinfo forum first and foremost. This is mostly because the > following item: > >> 3. Oliver Scholz has a patch to allow the standalone reader to convert >> XML to Info format "on the fly", so people would only need to have >> the XML files installed to use both Emacs Info and standalone Info. >> Oliver's patch would add some "color" to standalone Info. (Unless >> these colors would be very customizable, or maybe even if they are, >> please provide a command line option to disable this. Not >> everybody can read yellow on white, cyan on white or red on black.) > > is related to the stand-alone reader, not to Emacs (for which no > equivalent changes are available). > > Personally, I think that a move to XML is a good idea, but such a > transition would take a non-trivial period of time, during which we > will need to support installations where some or all of the manuals > are in Info format. Now that you mention it ... It is probably a better idea to implement the feature in Emacs first. So people who want it can put XML files into their /usr/local/info directories on their single-user machines and gain experiences with it. If it works as advertised, then my proposed compatibility feature could be added to standalone info afterwards. Maybe this is a more sensible road-map. [For testing this extensively, it would be nice if "makeinfo my-texinfo-source.texi" would produce XML instead of info format, dependend on the value of some environment variable. Most of my local info files have been generated by makefiles.] Oliver -- Oliver Scholz 14 Frimaire an 212 de la Révolution Taunusstr. 25 Liberté, Egalité, Fraternité! 60329 Frankfurt a. M. http://www.jungdemokratenhessen.de Tel. (069) 97 40 99 42 http://www.jdjl.org ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-12-04 9:39 ` Oliver Scholz @ 2003-12-04 11:48 ` Oliver Scholz 2003-12-04 15:35 ` Eli Zaretskii 1 sibling, 0 replies; 135+ messages in thread From: Oliver Scholz @ 2003-12-04 11:48 UTC (permalink / raw) Cc: bob, emacs-devel, Luc Teirlinck, nferrier, karl Oliver Scholz <epameinondas@gmx.de> writes: > Eli Zaretskii <eliz@elta.co.il> writes: > [...] >> Personally, I think that a move to XML is a good idea, but such a >> transition would take a non-trivial period of time, during which we >> will need to support installations where some or all of the manuals >> are in Info format. In my previous message I forgot to add: I think you are right. Both the standalone info and `C-h i' should check for each file whether it is info XML or the current info format and DTRT. Maybe they should never (i.e. not for a very, very long period of time) cease to do so. However efficient XML rendering may become, it will take more space and more CPU cycles than the current info format. Some people still use i486 processors with 8 MB of core. text/plain info will continue to be a good alternative on low end machines. > Now that you mention it ... It is probably a better idea to implement > the feature in Emacs first. [...] Oliver -- Oliver Scholz 14 Frimaire an 212 de la Révolution Taunusstr. 25 Liberté, Egalité, Fraternité! 60329 Frankfurt a. M. http://www.jungdemokratenhessen.de Tel. (069) 97 40 99 42 http://www.jdjl.org ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-12-04 9:39 ` Oliver Scholz 2003-12-04 11:48 ` Oliver Scholz @ 2003-12-04 15:35 ` Eli Zaretskii 1 sibling, 0 replies; 135+ messages in thread From: Eli Zaretskii @ 2003-12-04 15:35 UTC (permalink / raw) Cc: juri, bob, emacs-devel, nferrier, karl > From: Oliver Scholz <epameinondas@gmx.de> > Date: Thu, 04 Dec 2003 10:39:27 +0100 > > Now that you mention it ... It is probably a better idea to implement > the feature in Emacs first. It's certainly much easier, so I'm in full agreement with you here. > [For testing this extensively, it would be nice if "makeinfo > my-texinfo-source.texi" would produce XML instead of info format, > dependend on the value of some environment variable. Most of my local > info files have been generated by makefiles.] One way to do that is to build a hacked version of makeinfo where XML output is the default. Then at least you can test this on your machine(s) with minimal fuss. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-12-04 2:54 ` Luc Teirlinck 2003-12-04 8:04 ` Eli Zaretskii @ 2003-12-04 8:19 ` Oliver Scholz 2003-12-04 13:49 ` Robert J. Chassell 2003-12-05 0:11 ` Richard Stallman 3 siblings, 0 replies; 135+ messages in thread From: Oliver Scholz @ 2003-12-04 8:19 UTC (permalink / raw) Cc: juri, bob, nferrier, eliz, karl, emacs-devel Luc Teirlinck <teirllm@dms.auburn.edu> writes: [...] > 3. Oliver Scholz has a patch to allow the standalone reader to convert > XML to Info format "on the fly", so people would only need to have > the XML files installed to use both Emacs Info and standalone Info. > Oliver's patch would add some "color" to standalone Info. (Unless > these colors would be very customizable, or maybe even if they are, > please provide a command line option to disable this. Not > everybody can read yellow on white, cyan on white or red on black.) More precisely: I have an incomplete patch that does this for a specialised subset of HTML that I invented ad hoc for demonstrational purposes. It could be extended to support nearly any pointy-brackets format that's suitable. Thus it should be straight-forward to make it work with info XML and I have offered to do that. > 4. Oliver is not volunteering to rewrite info.el to be able to use XML > himself [...] Not yet, at least. I do want to make some progress in my pet project in the next few weeks and months ... Oliver -- Oliver Scholz 14 Frimaire an 212 de la Révolution Taunusstr. 25 Liberté, Egalité, Fraternité! 60329 Frankfurt a. M. http://www.jungdemokratenhessen.de Tel. (069) 97 40 99 42 http://www.jdjl.org ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-12-04 2:54 ` Luc Teirlinck 2003-12-04 8:04 ` Eli Zaretskii 2003-12-04 8:19 ` Oliver Scholz @ 2003-12-04 13:49 ` Robert J. Chassell 2003-12-05 0:11 ` Richard Stallman 3 siblings, 0 replies; 135+ messages in thread From: Robert J. Chassell @ 2003-12-04 13:49 UTC (permalink / raw) Luc Teirlinck <teirllm@dms.auburn.edu> writes 1. The Info format is "here to stay". It is intended for readers with minimal capabilities and it is important that people can access documentation via these readers. Yes. That is true, but understates Info capabilities: Info is also, at the moment, the single most efficient online help mechanism in existance -- and has been for a generation. Nic and my goal is to improve HTML (via XML) to be as efficient or nearly as efficient as Info was in the 1980s. (Incidentally, Nic, I still cannot send messages to you via either nferrier@tapsellferrier.co.uk or nferrier@80.168.156.73. Please suggest some other address.) 2. Emacs is not a reader with minimal capabilities. It could use XML to make Emacs info look as pretty as it can be, without paying a price in terms of functionality. This is mixing the Info renderer with an XML renderer. It makes more sense to have them separate. (It helps keep purposes clearer by separating the notion of an `info' mechanism for rendering documents, on line from the `info' format.) Later, if people want to mix the two, someone could write a wrapper so that the reader detects whether the document is in XML format rather than Info format, and, if so, switches to the XML renderer, or whether it is man page format and, if so, switches to the man page renderer. 5. Emacs will still need to be able to handle .info files, if no XML file is available, ... Yes: we currently produce Info, XML, HTML, plain text, and DVI files directly from the Texinfo files and indirectly PS and PDF and maybe others. Info needs to be kept. Unfortunately, the HTML output does not equal Info in efficiency. As I said, Nic and my goal is to improve it via XML. (In this case rather than think of the XML output as a `surface expression' of the Texinfo `deep representation', the XML serves as an `intermediate representation'. But clearly, if Emacs gains an XML renderer, then the XML output from Texinfo acts a surface expression.) (It is rather interesting to consider the historic transformation of Emacs from an environment that displayed nearly everything `literally' to one in which some buffer displays are not literal, but are surface expressions of a different deep representation. Nowadays, we even have a `find-file-literally' command that was not necessary initially. But this is off-topic.) -- Robert J. Chassell Rattlesnake Enterprises http://www.rattlesnake.com GnuPG Key ID: 004B4AC8 http://www.teak.cc bob@rattlesnake.com ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-12-04 2:54 ` Luc Teirlinck ` (2 preceding siblings ...) 2003-12-04 13:49 ` Robert J. Chassell @ 2003-12-05 0:11 ` Richard Stallman 2003-12-05 9:49 ` Kim F. Storm 3 siblings, 1 reply; 135+ messages in thread From: Richard Stallman @ 2003-12-05 0:11 UTC (permalink / raw) Cc: juri, epameinondas, nferrier, bob, eliz, karl, emacs-devel 5. Emacs will still need to be able to handle .info files, if no XML file is available, but certainly if we produce XML files from the .texi files, that case becomes marginal enough that we should not waste a lot of energy trying to do the impossible by attempting to present .info files in "nicer" ways than theoretically possible. It is conceivable that this situation will come to pass, but we should not presume it unless/until it actually happens. For the moment, Info format is important and is worth improving. If it happens some day that use of XML makes Info format unimportant, we can act accordingly. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-12-05 0:11 ` Richard Stallman @ 2003-12-05 9:49 ` Kim F. Storm 2003-12-06 16:11 ` Alfred M. Szmidt 0 siblings, 1 reply; 135+ messages in thread From: Kim F. Storm @ 2003-12-05 9:49 UTC (permalink / raw) > 5. Emacs will still need to be able to handle .info files, if no XML > file is available, but certainly if we produce XML files from the > .texi files, that case becomes marginal enough that we should not > waste a lot of energy trying to do the impossible by attempting to > present .info files in "nicer" ways than theoretically possible. In practice, you could also go another route -- and let makeinfo produce two files, a .info and a .markup file. The .info file will be identical to what we have today, while the .markup file will contain a simple list of "tagging info" for the .info file, which reflects what @-commands were used to produce each part of the .info file. something like @code 341 345 @xref 359 371 378 389 (list each section in the *Note .... output) @* 459 @page 1033 etc. i.e. something which a reader (like emacs' info reader) can use more or less directly to propertize the .info file. -- Kim F. Storm <storm@cua.dk> http://www.cua.dk ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-12-05 9:49 ` Kim F. Storm @ 2003-12-06 16:11 ` Alfred M. Szmidt 2003-12-06 17:11 ` Eli Zaretskii 0 siblings, 1 reply; 135+ messages in thread From: Alfred M. Szmidt @ 2003-12-06 16:11 UTC (permalink / raw) Cc: juri, epameinondas, teirllm, nferrier, bob, eliz, emacs-devel, karl > 5. Emacs will still need to be able to handle .info files, if > no XML file is available, but certainly if we produce XML > files from the .texi files, that case becomes marginal > enough that we should not waste a lot of energy trying to > do the impossible by attempting to present .info files in > "nicer" ways than theoretically possible. In practice, you could also go another route -- and let makeinfo produce two files, a .info and a .markup file. The .info file will be identical to what we have today, while the .markup file will contain a simple list of "tagging info" for the .info file, which reflects what @-commands were used to produce each part of the .info file. If going that route, don't make it a seperate file. Instead make it something similar to the "tag table" which exists in info files already; and call it "markup table". Cheers. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-12-06 16:11 ` Alfred M. Szmidt @ 2003-12-06 17:11 ` Eli Zaretskii 2003-12-09 16:47 ` Alfred M. Szmidt 0 siblings, 1 reply; 135+ messages in thread From: Eli Zaretskii @ 2003-12-06 17:11 UTC (permalink / raw) Cc: juri, epameinondas, nferrier, storm, emacs-devel, karl > Date: Sat, 6 Dec 2003 17:11:20 +0100 (MET) > From: "Alfred M. Szmidt" <ams@kemisten.nu> > > In practice, you could also go another route -- and let makeinfo > produce two files, a .info and a .markup file. The .info file will > be identical to what we have today, while the .markup file will > contain a simple list of "tagging info" for the .info file, which > reflects what @-commands were used to produce each part of the > .info file. > > If going that route, don't make it a seperate file. Instead make it > something similar to the "tag table" which exists in info files > already; and call it "markup table". But that would break old versions of the standalone reader, right? The whole point of Kim's suggestion was to make a change that cannot possibly break old versions of Info. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-12-06 17:11 ` Eli Zaretskii @ 2003-12-09 16:47 ` Alfred M. Szmidt 2003-12-10 7:25 ` Eli Zaretskii 0 siblings, 1 reply; 135+ messages in thread From: Alfred M. Szmidt @ 2003-12-09 16:47 UTC (permalink / raw) Cc: juri, epameinondas, nferrier, storm, ams, emacs-devel, karl > If going that route, don't make it a seperate file. Instead make > it something similar to the "tag table" which exists in info > files already; and call it "markup table". But that would break old versions of the standalone reader, right? I don't think that they should break the standalone read, but I am not that familiar with the info format. But I don't think that it should break anything. Cheers. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-12-09 16:47 ` Alfred M. Szmidt @ 2003-12-10 7:25 ` Eli Zaretskii 0 siblings, 0 replies; 135+ messages in thread From: Eli Zaretskii @ 2003-12-10 7:25 UTC (permalink / raw) Cc: juri, epameinondas, nferrier, ams, karl, emacs-devel > Date: Tue, 9 Dec 2003 17:47:43 +0100 (MET) > From: "Alfred M. Szmidt" <ams@kemisten.nu> > > > If going that route, don't make it a seperate file. Instead make > > it something similar to the "tag table" which exists in info > > files already; and call it "markup table". > > But that would break old versions of the standalone reader, right? > > I don't think that they should break the standalone read, but I am not > that familiar with the info format. I think it will break the standalone reader. The way the code that reads the tag tables is written is not very robust to changes in that part of the Info file. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-12-03 16:18 ` Eli Zaretskii 2003-12-04 2:53 ` Luc Teirlinck 2003-12-04 2:54 ` Luc Teirlinck @ 2003-12-04 3:35 ` Luc Teirlinck 2003-12-04 8:12 ` Eli Zaretskii 2 siblings, 1 reply; 135+ messages in thread From: Luc Teirlinck @ 2003-12-04 3:35 UTC (permalink / raw) Cc: juri, epameinondas, emacs-devel, nferrier, bob Eli Zaretskii wrote: Do we know what information from the glibc manual is required reading for the reader of the ELisp manual? None. Some readers _might_ need to know more about locales (hence the reference), but the _reason_ they would need that knowledge would definitely not be to understand the Elisp manual. The same is (or so I believe) true for all external references in the Elisp manual, except references to the Emacs manual. The Emacs manual is a prerequisite to understanding the Elisp manual, other manuals are not. Note that this is one more reason why, if a reference refers to another manual, the reader needs to know that and needs to know which manual. If you mention the manual, the user might think that she must read it because it contains some crucial information without which it is impossible to understand the text in point. I doubt that this is the case. As I already said, it indeed is not the case. But (elisp)Locales says as the very last sentence of the note and of the chapter: *Note Locales: (libc)Locales, for more information about locales and locale items. It says: "for more information", it does not say: "If you want to understand anything of what you just read". Portability has nothing to do with this. Portability has a lot to do with this. This is the Elisp manual, not the Emacs manual. The author may want his code to not just work, as efficiently as possible, for his computer and for his locale, but for other people's as well. The question is, again, what exactly we want the user to pick up in the glibc manual. Whichever information the reader happens to need. The reference means: If you need to know something we did not tell you above, here is a reasonable place to search for that information. Sincerely, Luc. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-12-04 3:35 ` Luc Teirlinck @ 2003-12-04 8:12 ` Eli Zaretskii 0 siblings, 0 replies; 135+ messages in thread From: Eli Zaretskii @ 2003-12-04 8:12 UTC (permalink / raw) Cc: juri, epameinondas, emacs-devel, nferrier, bob > Date: Wed, 3 Dec 2003 21:35:56 -0600 (CST) > From: Luc Teirlinck <teirllm@dms.auburn.edu> > > Do we know what information from the glibc manual is required reading > for the reader of the ELisp manual? > > None. Some readers _might_ need to know more about locales (hence the > reference), but the _reason_ they would need that knowledge would > definitely not be to understand the Elisp manual. In that case, we should consider removing the xref or maybe rewording it so that its importance is minimized. > Note that this is one more reason why, if a reference refers to another > manual, the reader needs to know that and needs to know which manual. I don't need to note this, since I agreed with you in the first place: that's why I suggested to change the wording to make this point clear. > But (elisp)Locales says as the very last sentence of the note and of > the chapter: > > *Note Locales: (libc)Locales, for more information about locales and > locale items. > > It says: "for more information", it does not say: "If you want to > understand anything of what you just read". "@xref{Something}, for more information" is a standard wording, we use it for many references that are quite important. > Portability has nothing to do with this. > > Portability has a lot to do with this. This is the Elisp manual, not > the Emacs manual. The author may want his code to not just work, as > efficiently as possible, for his computer and for his locale, but for > other people's as well. In that case, we should provide information (or a pointer to a source of such information) that describes the locale issue in a manner that is independent of any particular implementation. The glibc manual is an unlikely place to find such a description, as the glibc implementation of locale-specific stuff differs in many aspects from other implementations. > The question is, again, what exactly we want the user to pick up in > the glibc manual. > > Whichever information the reader happens to need. The reference means: > If you need to know something we did not tell you above, here is a > reasonable place to search for that information. See above: when we say "see elsewhere for more info", we normally invite the user to actually go there. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-11-22 21:41 ` Nic Ferrier 2003-11-22 21:42 ` Miles Bader @ 2003-11-22 23:59 ` Stefan Monnier 2003-11-23 0:05 ` Nic Ferrier 2003-11-24 16:22 ` Richard Stallman 2 siblings, 1 reply; 135+ messages in thread From: Stefan Monnier @ 2003-11-22 23:59 UTC (permalink / raw) Cc: epameinondas, bob, rms, emacs-devel > 1. use a command line XSLT processor (such as xsltproc, part of > GNOME's libxsl project) to turn the XML into plain text (or > specifically marked up text). The original reason for discussing such things is that the Info format has serious limitations w.r.t. additional markup. "Markup" in this context in the Emacs viewer means "text-properties" or "overlays", neither of which can be provided directly from a process's output, so it would just bring us back to square one: which text representation top use for the markup (either HTML-like or ANSI-escape-sequences-like, or something else). I'm not necessarily opposed to using an external tool, but it won't solve the problem at hand. Stefan ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-11-22 23:59 ` Stefan Monnier @ 2003-11-23 0:05 ` Nic Ferrier 2003-11-23 14:16 ` Oliver Scholz 0 siblings, 1 reply; 135+ messages in thread From: Nic Ferrier @ 2003-11-23 0:05 UTC (permalink / raw) Cc: epameinondas, bob, rms, emacs-devel Stefan Monnier <monnier@IRO.UMontreal.CA> writes: > > 1. use a command line XSLT processor (such as xsltproc, part of > > GNOME's libxsl project) to turn the XML into plain text (or > > specifically marked up text). > > The original reason for discussing such things is that the Info format > has serious limitations w.r.t. additional markup. > > "Markup" in this context in the Emacs viewer means "text-properties" > or "overlays", neither of which can be provided directly from a process's > output, so it would just bring us back to square one: which text > representation top use for the markup (either HTML-like or > ANSI-escape-sequences-like, or something else). > > I'm not necessarily opposed to using an external tool, but it won't solve > the problem at hand. I thought I remembered that you could generate saved files with embedded text properties (they're lisp expressions aren't they?) Nic ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-11-23 0:05 ` Nic Ferrier @ 2003-11-23 14:16 ` Oliver Scholz 2003-11-23 15:11 ` Nic Ferrier 0 siblings, 1 reply; 135+ messages in thread From: Oliver Scholz @ 2003-11-23 14:16 UTC (permalink / raw) Cc: bob, rms, emacs-devel Nic Ferrier <nferrier@tapsellferrier.co.uk> writes: > Stefan Monnier <monnier@IRO.UMontreal.CA> writes: > >> > 1. use a command line XSLT processor (such as xsltproc, part of >> > GNOME's libxsl project) to turn the XML into plain text (or >> > specifically marked up text). >> >> The original reason for discussing such things is that the Info format >> has serious limitations w.r.t. additional markup. >> >> "Markup" in this context in the Emacs viewer means "text-properties" >> or "overlays", neither of which can be provided directly from a process's >> output, so it would just bring us back to square one: which text >> representation top use for the markup (either HTML-like or >> ANSI-escape-sequences-like, or something else). >> >> I'm not necessarily opposed to using an external tool, but it won't solve >> the problem at hand. > > I thought I remembered that you could generate saved files with > embedded text properties (they're lisp expressions aren't they?) Well, the canonical way to save embedded text properties is with M-x enriched-mode. Or otherwise with the framework provided by format.el or with (info "(elisp)Saving Properties"). This is technically what I proposed for Emacs. But yes, there is a print and read syntax for strings with text properties: (let ((str "#(\"Lirum larum.\" 0 12 (fontified t font-lock-face (variable-pitch :foreground \"Blue\")))")) (insert (car (read-from-string str)))) So if it is possible to generate this with XSLT it could be done with XSLT only. Mostly, at least. [I'd just like to point out that improving the info file format and serving info files over the web are two orthogonal issues. It might be good two use two different approaches to these different goals. However, if it is feasible to have the same technical solution for both, then this is fine for me and I'll shut up.] Oliver -- Oliver Scholz 3 Frimaire an 212 de la Révolution Taunusstr. 25 Liberté, Egalité, Fraternité! 60329 Frankfurt a. M. http://www.jungdemokratenhessen.de Tel. (069) 97 40 99 42 http://www.jdjl.org ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-11-23 14:16 ` Oliver Scholz @ 2003-11-23 15:11 ` Nic Ferrier 0 siblings, 0 replies; 135+ messages in thread From: Nic Ferrier @ 2003-11-23 15:11 UTC (permalink / raw) Cc: bob, rms, emacs-devel Oliver Scholz <epameinondas@gmx.de> writes: > [I'd just like to point out that improving the info file format and > serving info files over the web are two orthogonal issues. It might > be good two use two different approaches to these different goals. > However, if it is feasible to have the same technical solution for > both, then this is fine for me and I'll shut up.] Absolutely. Bob and I have aimed to solve the web problem, not improve info in anyway. Personally, I don't think Info is broken. I use it a lot in preference to web based tools. Nic ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-11-22 21:41 ` Nic Ferrier 2003-11-22 21:42 ` Miles Bader 2003-11-22 23:59 ` Stefan Monnier @ 2003-11-24 16:22 ` Richard Stallman 2 siblings, 0 replies; 135+ messages in thread From: Richard Stallman @ 2003-11-24 16:22 UTC (permalink / raw) Cc: epameinondas, bob, emacs-devel 1. use a command line XSLT processor (such as xsltproc, part of GNOME's libxsl project) to turn the XML into plain text (or specifically marked up text). That's much better than making Emacs link with an additional library. 2. write an XSLT processor in Emacs Lisp. This wouldn't be as difficult as it sounds and I'm not sure it isn't done already (by one of the various XML/Emacs projects going on). If someone wants to do it, and it gives good performance, it's an ok solution. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-11-20 16:55 ` Robert J. Chassell 2003-11-20 18:19 ` Oliver Scholz @ 2003-11-20 18:24 ` Karl Eichwalder 1 sibling, 0 replies; 135+ messages in thread From: Karl Eichwalder @ 2003-11-20 18:24 UTC (permalink / raw) Cc: emacs-devel "Robert J. Chassell" <bob@rattlesnake.com> writes: > Third, ... I don't know whether this is readily possible, but it looks > to me to be a good idea ... you could add a standalone XML renderer > to Mozilla and related browsers. yelp, the GNOME help browser, works directly with XML files conforming to a DocBook subset - it starts a little bit slow, be warned. -- | ,__o | _-\_<, http://www.gnu.franken.de/ke/ | (*)/'(*) ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Changes to Texinfo DTD 2003-11-20 10:37 ` Oliver Scholz 2003-11-20 16:55 ` Robert J. Chassell @ 2003-11-24 16:23 ` Richard Stallman 1 sibling, 0 replies; 135+ messages in thread From: Richard Stallman @ 2003-11-24 16:23 UTC (permalink / raw) Cc: emacs-devel My proposal is to keep the current text/plain info format as an internal representation in the standalone info reader. The reader would then check whether a particular file is in the text/plain info format or in the XML format. If the former: business as usual. If the latter, it would convert this XML to plain/text with the necessary If this method can be implemented in both the standalone reader and Emacs, and runs fast enough, then I see no objection. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: HTML as info format 2003-11-17 13:29 ` HTML as info format Juri Linkov 2003-11-18 7:01 ` Richard Stallman @ 2003-12-02 7:08 ` Eli Zaretskii 2003-12-01 10:38 ` Info enhancements Juri Linkov 1 sibling, 1 reply; 135+ messages in thread From: Eli Zaretskii @ 2003-12-02 7:08 UTC (permalink / raw) Cc: epameinondas, emacs-devel [I have no idea why mailman sent me this message from 2 weeks ago.] > From: Juri Linkov <juri@jurta.org> > Date: Mon, 17 Nov 2003 15:29:54 +0200 > > Current Info format can't make a link to another part of the same > Info node. I think you miss the @anchor directive, introduced in Texinfo 4.x. > The same problem appears in the Glossary node of the Emacs manual, > where links to the same node are marked by the "(q.v.)". Arguably, we could modify the Glossary by using anchors in the online formats. > There are other problems with the current Info format. For example, > currently there is no way to hide the address part of the link without > corrupting the paragraph formatting. IMHO, the current way to hide the address of the link is still experimental and needs further work. > After hiding the address part of > the link lines become either too short or too long. For example, lines: > > See *Note Customizing Indentation: (ccmode)Customizing Indentation, for > more information on customizing indentation for C and related modes, > > in Info the first line becomes too short: > > See Customizing Indentation for > more information on customizing indentation for C and related modes, Doing this in some other way, like physically erasing the text we now hide and then re-filling the paragraph, would solve this. In any case, this problem is not relevant to Info format per se, it is due to the way the Emacs Info reader renders an Info document. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Info enhancements @ 2003-12-01 10:38 ` Juri Linkov 2003-12-02 3:34 ` Luc Teirlinck ` (6 more replies) 0 siblings, 7 replies; 135+ messages in thread From: Juri Linkov @ 2003-12-01 10:38 UTC (permalink / raw) I would like to submit a patch that fixes some problems in the Emacs Info reader and adds features most web browsers already have. This patch don't change the existing Info file format. It improves usability of the Emacs Info reader with the current Info file format. Any comments are welcome. New features: - distinguish visited nodes from unvisited by displaying their references in a different color. Standard colors of web browsers are used: blue - for unvisited links, magenta - for visited links. - show full history list or tree of visited Info nodes. This list is displayed in the Info buffer using "*Note" references, so standard Info functions can be used for navigation to visited nodes from the history buffer. - http links are fontified and available for navigation by calling the `browse-url' function. - a new argument `fork' is added to Info-follow-reference, Info-follow-nearest-node and Info-try-follow-nearest-node functions, so if these functions are called interactively with a prefix arg, they show the node in a new info buffer. This feature is copied from the `Info-menu' which works only for menu items. But this is useful for references too, especially for references that carry out of the current manual. - use reference names to move point to the place within the current node where reference name is defined. For example, by following the reference "*Note file-coding-system-alist: Default Coding Systems," Info finds a node with the name "Default Coding Systems" and moves point to the line where reference name "file-coding-system-alist" is defined. This feature uses the function `Info-find-index-name' that currently works only for the function `Info-index'. Now it works also for index items and cross references. This feature solves problems in the Glossary node of the Emacs manual, where links to the same node are marked by the "(q.v.)" or "See `text'". Such text can be replaced in references to the same node with this text as a reference name. For example, the text "is shared by an indirect buffer (q.v.@:)" can be replaced with "is shared by an @ref{Glossary,indirect buffer}", and text "See `filling.'" can be replaced with "@xref{Glossary,filling}.". Following such a reference will move point to the place in the same node where this glossary term is defined. - rebind `M-s' key to a new function `Info-search-next' that searches for another occurrence of regular expression from a previous `Info-search' command (key `s'). Pressing only one key to repeat a search is more convenient than pressing two keys (`s RET'). Fixed problems: - don't hide the newline (with following whitespace) in references when Info-hide-note-references is t. This fixes the problem where hidden newlines cause too long (and truncated) lines. - don't hide the name of external Info file in references in case when Info-hide-note-references is t and references lead outside the current Info file. It's important for user to know about such situation. - don't insert the text "See" instead of "Note" because inserting a new text in Info buffer breaks the stored point positions. This bug can be observed by calling `Info-last', `Info-search' where point is moved with some offset to its correct position (the offset is the sum of lengths of strings "See" inserted in the buffer above the point). - add a character ` to the list of prefix characters used to escape the literal meaning of the text "*Note". The wrong fontification caused by this bug can be observed in (info "(info)Cross-refs"). Index: emacs/lisp/info.el =================================================================== RCS file: /cvsroot/emacs/emacs/lisp/info.el,v retrieving revision 1.374 diff -c -r1.374 info.el *** emacs/lisp/info.el 7 Oct 2003 00:04:45 -0000 1.374 --- emacs/lisp/info.el 1 Dec 2003 11:48:03 -0000 *************** *** 48,53 **** --- 48,60 ---- "List of info nodes user has visited. Each element of list is a list (FILENAME NODENAME BUFFERPOS).") + (defvar Info-history-tree nil + "Tree of info nodes user has visited. + Each element of list is a list (FILENAME NODENAME PARENT-INDEX).") + + (defvar Info-history-node -1 + "Position of the current node on the info nodes tree user has visited.") + (defcustom Info-enable-edit nil "*Non-nil means the \\<Info-mode-map>\\[Info-edit] command in Info can edit the current node. This is convenient if you want to write info files by hand. *************** *** 76,87 **** :group 'info) (defface info-xref ! '((((class color) (background light)) (:foreground "magenta4" :weight bold)) ! (((class color) (background dark)) (:foreground "cyan" :weight bold)) ! (t (:weight bold))) "Face for Info cross-references." :group 'info) (defcustom Info-fontify-maximum-menu-size 100000 "*Maximum size of menu to fontify if `font-lock-mode' is non-nil." :type 'integer --- 83,107 ---- :group 'info) (defface info-xref ! '((((class color) (background light)) (:foreground "blue")) ! (((class color) (background dark)) (:foreground "cyan")) ! (t (:underline t))) "Face for Info cross-references." :group 'info) + (defface info-xref-visited + '((((class color) (background light)) (:foreground "magenta4")) + (((class color) (background dark)) (:foreground "magenta4")) + (t (:underline t))) + "Face for visited Info cross-references." + :group 'info) + + (defcustom Info-visited-nodes t + "*Non-nil means to fontify visited nodes in a different color." + :version "21.4" + :type 'boolean + :group 'info) + (defcustom Info-fontify-maximum-menu-size 100000 "*Maximum size of menu to fontify if `font-lock-mode' is non-nil." :type 'integer *************** *** 155,161 **** (defcustom Info-hide-note-references t "*If non-nil, hide the tag and section reference in *note and * menu items. - Also replaces the \"*note\" text with \"see\". If value is non-nil but not t, the reference section is still shown." :version "21.4" :type '(choice (const :tag "No reformatting" nil) --- 175,180 ---- *************** *** 205,210 **** --- 224,232 ---- (defvar Info-index-alternatives nil "List of possible matches for last `Info-index' command.") + (defvar Info-reference-name nil + "Name of the current reference.") + (defvar Info-standalone nil "Non-nil if Emacs was started solely as an Info browser.") \f *************** *** 787,793 **** nodename))) (Info-select-node) ! (goto-char (or anchorpos (point-min)))))) ;; If we did not finish finding the specified node, ;; go back to the previous one. (or Info-current-node no-going-back (null Info-history) --- 809,820 ---- nodename))) (Info-select-node) ! (goto-char (or anchorpos (point-min))) ! ! ;; Move point to the place where the referer name points to ! (when Info-reference-name ! (Info-find-index-name Info-reference-name) ! (setq Info-reference-name nil))))) ;; If we did not finish finding the specified node, ;; go back to the previous one. (or Info-current-node no-going-back (null Info-history) *************** *** 1176,1181 **** --- 1203,1225 ---- (if Info-enable-active-nodes (eval active-expression)) (Info-fontify-node) (Info-display-images-node) + + ;; Add a new history node or use old node from the history tree + (let ((tree Info-history-tree) + (i 0) res) + (while tree + (if (and (equal (nth 0 (car tree)) Info-current-file) + (equal (nth 1 (car tree)) Info-current-node)) + (setq res i tree nil)) + (setq tree (cdr tree) i (1+ i))) + (if res + (setq Info-history-node res) + (setq Info-history-tree + (nconc Info-history-tree + (list (list Info-current-file Info-current-node + Info-history-node))) + Info-history-node (1- (length Info-history-tree))))) + (run-hooks 'Info-selection-hook))))) (defun Info-set-mode-line () *************** *** 1207,1212 **** --- 1251,1258 ---- (if fork (set-buffer (clone-buffer (concat "*info-" (if (stringp fork) fork nodename) "*") t))) + (if (equal (buffer-name) "*info-history*") + (switch-to-buffer "*info*")) (let (filename) (string-match "\\s *\\((\\s *\\([^\t)]*\\)\\s *)\\s *\\|\\)\\(.*\\)" nodename) *************** *** 1409,1414 **** --- 1455,1468 ---- (equal ofile Info-current-file)) (setq Info-history (cons (list ofile onode opoint) Info-history)))))) + + (defun Info-search-next () + "Search for next regexp from a previous `Info-search' command." + (interactive) + (if Info-search-history + (Info-search (car Info-search-history)) + ;; If no history then read search string in Info-search + (call-interactively 'Info-search))) \f (defun Info-extract-pointer (name &optional errorname) "Extract the value of the node-pointer named NAME. *************** *** 1481,1495 **** (setq Info-history (cdr Info-history)) (goto-char opoint))) ;;;###autoload (defun Info-directory () "Go to the Info directory node." (interactive) (Info-find-node "dir" "top")) \f ! (defun Info-follow-reference (footnotename) "Follow cross reference named FOOTNOTENAME to the node it refers to. ! FOOTNOTENAME may be an abbreviation of the reference name." (interactive (let ((completion-ignore-case t) (case-fold-search t) --- 1535,1594 ---- (setq Info-history (cdr Info-history)) (goto-char opoint))) + ;;;###autoload (add-hook 'same-window-buffer-names "*info-history*") + + (defun Info-history-buffer (&optional tree-p) + "Create the buffer *info-history* with references to visited nodes. + Optional argument TREE-P creates a tree of nodes; the default + creates the plain list of nodes." + (interactive "P") + (let ((curr-node Info-history-node) + p) + (pop-to-buffer + (with-current-buffer (get-buffer-create "*info-history*") + (let ((Info-hide-note-references t) + (Info-visited-nodes t) + (inhibit-read-only t)) + (erase-buffer) + (goto-char (point-min)) + (setq p (Info-insert-history-tree -1 0 (or curr-node 0) tree-p)) + (if (not (bobp)) (Info-fontify-node)) + (or (eq major-mode 'Info-mode) (Info-mode)) + (let ((Info-current-file "history") + (Info-current-node "History")) + (Info-set-mode-line)) + (current-buffer)))) + (goto-char (or p (point-min))))) + + (defun Info-insert-history-tree (index indent curr-node tree-p) + "Insert the tree or list of references to visited nodes. + Return the position of the current node on the generated tree." + (let ((tree Info-history-tree) + (i 0) p) + (while tree + (when (or (null tree-p) (eq (nth 2 (car tree)) index)) + (if tree-p (insert (make-string indent ?\040))) + (if (eq i curr-node) (setq p (point))) + (insert "*Note " (nth 1 (car tree)) ": (" + (file-name-nondirectory (nth 0 (car tree))) + ")" (nth 1 (car tree)) ".\n") + (if tree-p (setq p (or (Info-insert-history-tree + i (1+ indent) curr-node tree-p) p)))) + (setq tree (cdr tree) i (1+ i))) + p)) + ;;;###autoload (defun Info-directory () "Go to the Info directory node." (interactive) (Info-find-node "dir" "top")) \f ! (defun Info-follow-reference (footnotename &optional fork) "Follow cross reference named FOOTNOTENAME to the node it refers to. ! FOOTNOTENAME may be an abbreviation of the reference name. ! If FORK is non-nil (interactively with a prefix arg), show the node in ! a new info buffer. If FORK is a string, it is the name to use for the ! new buffer." (interactive (let ((completion-ignore-case t) (case-fold-search t) *************** *** 1539,1545 **** "Follow reference named: ") completions nil t))) (list (if (equal input "") ! default input))) (error "No cross-references in this node")))) (unless footnotename --- 1638,1644 ---- "Follow reference named: ") completions nil t))) (list (if (equal input "") ! default input) current-prefix-arg)) (error "No cross-references in this node")))) (unless footnotename *************** *** 1561,1567 **** (setq target (concat (substring target 0 i) " " (substring target (match-end 0)))) (setq i (+ i 1))) ! (Info-goto-node target))) (defconst Info-menu-entry-name-re "\\(?:[^:]\\|:[^:,.;() \t\n]\\)*" ;; We allow newline because this is also used in Info-follow-reference, --- 1660,1666 ---- (setq target (concat (substring target 0 i) " " (substring target (match-end 0)))) (setq i (+ i 1))) ! (Info-goto-node target fork))) (defconst Info-menu-entry-name-re "\\(?:[^:]\\|:[^:,.;() \t\n]\\)*" ;; We allow newline because this is also used in Info-follow-reference, *************** *** 1968,1974 **** (defun Info-next-reference (&optional recur) "Move cursor to the next cross-reference or menu item in the node." (interactive) ! (let ((pat "\\*note[ \n\t]*\\([^:]*\\):\\|^\\* .*:") (old-pt (point)) (case-fold-search t)) (or (eobp) (forward-char 1)) --- 2067,2073 ---- (defun Info-next-reference (&optional recur) "Move cursor to the next cross-reference or menu item in the node." (interactive) ! (let ((pat "\\*note[ \n\t]*\\([^:]*\\):\\|^\\* .*:\\|http://") (old-pt (point)) (case-fold-search t)) (or (eobp) (forward-char 1)) *************** *** 1988,1994 **** (defun Info-prev-reference (&optional recur) "Move cursor to the previous cross-reference or menu item in the node." (interactive) ! (let ((pat "\\*note[ \n\t]*\\([^:]*\\):\\|^\\* .*:") (old-pt (point)) (case-fold-search t)) (or (re-search-backward pat nil t) --- 2087,2093 ---- (defun Info-prev-reference (&optional recur) "Move cursor to the previous cross-reference or menu item in the node." (interactive) ! (let ((pat "\\*note[ \n\t]*\\([^:]*\\):\\|^\\* .*:\\|http://") (old-pt (point)) (case-fold-search t)) (or (re-search-backward pat nil t) *************** *** 2209,2220 **** (save-excursion (forward-line 1) (eobp)) (Info-next-preorder))) ! (defun Info-follow-nearest-node () "Follow a node reference near point. If point is on a reference, follow that reference. Otherwise, if point is in a menu item description, follow that menu item." ! (interactive) ! (or (Info-try-follow-nearest-node) (when (save-excursion (search-backward "\n* menu:" nil t)) (save-excursion --- 2308,2319 ---- (save-excursion (forward-line 1) (eobp)) (Info-next-preorder))) ! (defun Info-follow-nearest-node (&optional fork) "Follow a node reference near point. If point is on a reference, follow that reference. Otherwise, if point is in a menu item description, follow that menu item." ! (interactive "P") ! (or (Info-try-follow-nearest-node fork) (when (save-excursion (search-backward "\n* menu:" nil t)) (save-excursion *************** *** 2223,2257 **** (beginning-of-line 0)) (when (looking-at "\\* +\\([^\t\n]*\\):") (Info-goto-node ! (Info-extract-menu-item (match-string-no-properties 1))) t))) (error "Point neither on reference nor in menu item description"))) ;; Common subroutine. ! (defun Info-try-follow-nearest-node () "Follow a node reference near point. Return non-nil if successful." (let (node) (cond ((setq node (Info-get-token (point) "\\*note[ \n]" "\\*note[ \n]\\([^:]*\\):")) ! (Info-follow-reference node)) ;; menu item: node name ((setq node (Info-get-token (point) "\\* +" "\\* +\\([^:]*\\)::")) ! (Info-goto-node node)) ;; menu item: index entry ((Info-get-token (point) "\\* +" "\\* +\\(.*\\): ") (beginning-of-line) (forward-char 2) (setq node (Info-extract-menu-node-name)) ! (Info-goto-node node)) ((setq node (Info-get-token (point) "Up: " "Up: \\([^,\n\t]*\\)")) ! (Info-goto-node node)) ((setq node (Info-get-token (point) "Next: " "Next: \\([^,\n\t]*\\)")) ! (Info-goto-node node)) ((setq node (Info-get-token (point) "File: " "File: \\([^,\n\t]*\\)")) ! (Info-goto-node "Top")) ((setq node (Info-get-token (point) "Prev: " "Prev: \\([^,\n\t]*\\)")) ! (Info-goto-node node))) node)) \f (defvar Info-mode-map nil --- 2322,2363 ---- (beginning-of-line 0)) (when (looking-at "\\* +\\([^\t\n]*\\):") (Info-goto-node ! (Info-extract-menu-item (match-string-no-properties 1)) fork) t))) (error "Point neither on reference nor in menu item description"))) ;; Common subroutine. ! (defun Info-try-follow-nearest-node (&optional fork) "Follow a node reference near point. Return non-nil if successful." (let (node) (cond + ((and (Info-get-token (point) "http://" "\\(http://\\)") + (or (featurep 'browse-url) (require 'browse-url nil t))) + (setq node t) + (browse-url (browse-url-url-at-point))) ((setq node (Info-get-token (point) "\\*note[ \n]" "\\*note[ \n]\\([^:]*\\):")) ! (setq Info-reference-name (replace-regexp-in-string ! "[ \t\n]+" " " (match-string-no-properties 1))) ! (Info-follow-reference node fork)) ;; menu item: node name ((setq node (Info-get-token (point) "\\* +" "\\* +\\([^:]*\\)::")) ! (Info-goto-node node fork)) ;; menu item: index entry ((Info-get-token (point) "\\* +" "\\* +\\(.*\\): ") + (setq Info-reference-name (match-string-no-properties 1)) (beginning-of-line) (forward-char 2) (setq node (Info-extract-menu-node-name)) ! (Info-goto-node node fork)) ((setq node (Info-get-token (point) "Up: " "Up: \\([^,\n\t]*\\)")) ! (Info-goto-node node fork)) ((setq node (Info-get-token (point) "Next: " "Next: \\([^,\n\t]*\\)")) ! (Info-goto-node node fork)) ((setq node (Info-get-token (point) "File: " "File: \\([^,\n\t]*\\)")) ! (Info-goto-node "Top" fork)) ((setq node (Info-get-token (point) "Prev: " "Prev: \\([^,\n\t]*\\)")) ! (Info-goto-node node fork))) node)) \f (defvar Info-mode-map nil *************** *** 2295,2306 **** (define-key Info-mode-map "p" 'Info-prev) (define-key Info-mode-map "q" 'Info-exit) (define-key Info-mode-map "s" 'Info-search) ! ;; For consistency with Rmail. ! (define-key Info-mode-map "\M-s" 'Info-search) (define-key Info-mode-map "\M-n" 'clone-buffer) (define-key Info-mode-map "t" 'Info-top-node) (define-key Info-mode-map "u" 'Info-up) (define-key Info-mode-map "," 'Info-index-next) (define-key Info-mode-map "\177" 'Info-scroll-down) (define-key Info-mode-map [mouse-2] 'Info-mouse-follow-nearest-node) ) --- 2401,2412 ---- (define-key Info-mode-map "p" 'Info-prev) (define-key Info-mode-map "q" 'Info-exit) (define-key Info-mode-map "s" 'Info-search) ! (define-key Info-mode-map "\M-s" 'Info-search-next) (define-key Info-mode-map "\M-n" 'clone-buffer) (define-key Info-mode-map "t" 'Info-top-node) (define-key Info-mode-map "u" 'Info-up) (define-key Info-mode-map "," 'Info-index-next) + (define-key Info-mode-map "\\" 'Info-history-buffer) (define-key Info-mode-map "\177" 'Info-scroll-down) (define-key Info-mode-map [mouse-2] 'Info-mouse-follow-nearest-node) ) *************** *** 2335,2344 **** ("Reference" ["You should never see this" report-emacs-bug t]) ["Search..." Info-search :help "Search for regular expression in this Info file"] ["Go to Node..." Info-goto-node :help "Go to a named node"] ! ["Last" Info-last :active Info-history :help "Go to the last node you were at"] ("Index..." ["Lookup a String" Info-index :help "Look for a string in the index items"] --- 2441,2454 ---- ("Reference" ["You should never see this" report-emacs-bug t]) ["Search..." Info-search :help "Search for regular expression in this Info file"] + ["Search Next" Info-search-next + :help "Search for another occurrence of regular expression"] ["Go to Node..." Info-goto-node :help "Go to a named node"] ! ["Last (Back)" Info-last :active Info-history :help "Go to the last node you were at"] + ["History" Info-history-buffer :active Info-history-tree + :help "Go to the history buffer"] ("Index..." ["Lookup a String" Info-index :help "Look for a string in the index items"] *************** *** 2476,2481 **** --- 2586,2592 ---- \\[Info-directory] Go to the Info directory node. \\[Info-follow-reference] Follow a cross reference. Reads name of reference. \\[Info-last] Move to the last node you were at. + \\[Info-history-buffer] Go to the history buffer. \\[Info-index] Look up a topic in this file's Index and move to that node. \\[Info-index-next] (comma) Move to the next match from a previous `i' command. \\[Info-top-node] Go to the Top node of this file. *************** *** 2504,2509 **** --- 2615,2622 ---- \\[universal-argument] \\[info] Move to new Info file with completion. \\[Info-search] Search through this Info file for specified regexp, and select the node in which the next occurrence is found. + \\[Info-search-next] Search for another occurrence of regexp + from a previous `Info-search' command. \\[Info-next-reference] Move cursor to next cross-reference or menu item. \\[Info-prev-reference] Move cursor to previous cross-reference or menu item." (kill-all-local-variables) *************** *** 2524,2529 **** --- 2637,2643 ---- (make-local-variable 'Info-tag-table-buffer) (setq Info-tag-table-buffer nil) (make-local-variable 'Info-history) + (make-local-variable 'Info-history-node) (make-local-variable 'Info-index-alternatives) (setq header-line-format (if Info-use-header-line *************** *** 2833,2841 **** "Keymap to put on the Up link in the text or the header line.") (defun Info-fontify-node () ! ;; Only fontify the node if it hasn't already been done. ! (unless (let ((where (next-property-change (point-min)))) ! (and where (not (= where (point-max))))) (save-excursion (let ((inhibit-read-only t) (case-fold-search t) --- 2947,2957 ---- "Keymap to put on the Up link in the text or the header line.") (defun Info-fontify-node () ! ;; Only fontify the node if it hasn't already been done ! ;; or always fontify visited nodes (because of their dynamic nature). ! (when (or Info-visited-nodes ! (not (let ((where (next-property-change (point-min)))) ! (and where (not (= where (point-max))))))) (save-excursion (let ((inhibit-read-only t) (case-fold-search t) *************** *** 2911,2961 **** (add-text-properties (1- (match-beginning 2)) (match-end 2) '(invisible t front-sticky nil rear-nonsticky t)))) (goto-char (point-min)) ! (while (re-search-forward "\\(\\*Note[ \t]*\\)\n?[ \t]*\\([^:]*\\)\\(:[^.,:(]*\\(([^)]*)[^.,:]*\\)?[,:]?\n?\\)" nil t) ! (unless (= (char-after (1- (match-beginning 0))) ?\") ; hack (let ((start (match-beginning 0)) ! (next (point)) ! (hide-tag Info-hide-note-references) ! other-tag) ! (when hide-tag ! ;; *Note is often used where *note should have been ! (goto-char start) ! (skip-syntax-backward " ") ! (setq other-tag ! (cond ((memq (char-before) '(nil ?\. ?! ??)) ! "See ") ! ((memq (char-before) '(?\, ?\; ?\: ?-)) ! "see ") ! ((memq (char-before) '(?\( ?\[ ?\{)) ! ;; Check whether the paren is preceded by ! ;; an end of sentence ! (skip-syntax-backward " (") ! (if (memq (char-before) '(nil ?\. ?! ??)) ! "See " ! "see ")) ! ((save-match-data (looking-at "\n\n")) ! "See "))) ! (goto-char next)) ! (if hide-tag ! (add-text-properties (match-beginning 1) (match-end 1) ! '(invisible t front-sticky nil rear-nonsticky t))) (add-text-properties (match-beginning 2) (match-end 2) ! (cons 'help-echo ! (cons (if (match-end 4) ! (concat "mouse-2: go to " (match-string 4)) ! "mouse-2: go to this node") ! '(font-lock-face info-xref ! mouse-face highlight)))) (when (eq Info-hide-note-references t) (add-text-properties (match-beginning 3) (match-end 3) ! '(invisible t front-sticky nil rear-nonsticky t))) ! (when other-tag ! (save-excursion ! (goto-char (match-beginning 1)) ! (insert other-tag))) ! (when (and Info-refill-paragraphs ! (or hide-tag (eq Info-hide-note-references t))) (push (set-marker (make-marker) start) paragraph-markers))))) --- 3027,3101 ---- (add-text-properties (1- (match-beginning 2)) (match-end 2) '(invisible t front-sticky nil rear-nonsticky t)))) (goto-char (point-min)) ! (while (re-search-forward "\\(\\*Note[ \t]*\\)\n?[ \t]*\\([^:]*\\)\\(:[^.,:(]*\\((\\([^)]*\\))\\([^.,:]*\\)\\)?[,:]?\n?\\)" nil t) ! (unless (memq (char-after (1- (match-beginning 0))) '(?\" ?\`)) ; hack (let ((start (match-beginning 0)) ! ;; (next (point)) ! ;; other-tag ! ) ! (when Info-hide-note-references ! ;; ;; *Note is often used where *note should have been ! ;; (goto-char start) ! ;; (skip-syntax-backward " ") ! ;; (setq other-tag ! ;; (cond ((memq (char-before) '(nil ?\. ?! ??)) ! ;; "See ") ! ;; ((memq (char-before) '(?\, ?\; ?\: ?-)) ! ;; "see ") ! ;; ((memq (char-before) '(?\( ?\[ ?\{)) ! ;; ;; Check whether the paren is preceded by ! ;; ;; an end of sentence ! ;; (skip-syntax-backward " (") ! ;; (if (memq (char-before) '(nil ?\. ?! ??)) ! ;; "See " ! ;; "see ")) ! ;; ((save-match-data (looking-at "\n\n")) ! ;; "See "))) ! ;; (goto-char next) ! (add-text-properties (match-beginning 1) (match-end 1) ! '(invisible t front-sticky nil rear-nonsticky t))) (add-text-properties (match-beginning 2) (match-end 2) ! (list ! 'help-echo (if (match-end 4) ! (concat "mouse-2: go to " (match-string 4)) ! "mouse-2: go to this node") ! 'font-lock-face ! ;; Display visited nodes in a different face ! (if (and Info-visited-nodes ! (save-match-data ! (let* ((file (concat (or (match-string 5) Info-current-file) "$")) ! (node (replace-regexp-in-string ! "[ \t\n]+" " " ! (or (match-string 6) (match-string 2)))) ! (l Info-history-tree) ! res) ! (while l ! (if (and (equal (cadr (car l)) node) ! (string-match file (caar l))) ! (setq res (car l) l nil)) ! (setq l (cdr l))) ! res))) 'info-xref-visited 'info-xref) ! 'mouse-face 'highlight)) (when (eq Info-hide-note-references t) (add-text-properties (match-beginning 3) (match-end 3) ! '(invisible t front-sticky nil rear-nonsticky t)) ! ;; Unhide the file name of the reference in parens ! (if (match-string 5) ! (remove-text-properties (1- (match-beginning 5)) (1+ (match-end 5)) ! '(invisible t front-sticky nil rear-nonsticky t))) ! ;; Unhide newline because hidden newlines cause too long lines ! (save-match-data ! (let ((start3 (match-beginning 3))) ! (if (string-match "\n[ \t]*" (match-string 3)) ! (remove-text-properties (+ start3 (match-beginning 0)) (+ start3 (match-end 0)) ! '(invisible t front-sticky nil rear-nonsticky t))))) ! ) ! ;; (when other-tag ! ;; (save-excursion ! ;; (goto-char (match-beginning 1)) ! ;; (insert other-tag))) ! (when (and Info-refill-paragraphs Info-hide-note-references) (push (set-marker (make-marker) start) paragraph-markers))))) *************** *** 2997,3009 **** 'font-lock-face 'info-menu-5)) (add-text-properties (match-beginning 1) (match-end 1) ! (cons 'help-echo ! (cons ! (if (match-end 3) ! (concat "mouse-2: go to " (match-string 3)) ! "mouse-2: go to this node") ! '(font-lock-face info-xref ! mouse-face highlight)))) (when (eq Info-hide-note-references t) (put-text-property (match-beginning 2) (1- (match-end 6)) 'invisible t) --- 3137,3161 ---- 'font-lock-face 'info-menu-5)) (add-text-properties (match-beginning 1) (match-end 1) ! (list ! 'help-echo (if (match-end 3) ! (concat "mouse-2: go to " (match-string 3)) ! "mouse-2: go to this node") ! 'font-lock-face ! ;; Display visited nodes in a different face ! (if (and Info-visited-nodes ! (let ((node (if (equal (match-string 3) "") ! (match-string 1) ! (match-string 3))) ! (l Info-history-tree) ! res) ! (while l ! (if (and (equal (cadr (car l)) node) ! (equal Info-current-file (caar l))) ! (setq res (car l) l nil)) ! (setq l (cdr l))) ! res)) 'info-xref-visited 'info-xref) ! 'mouse-face 'highlight)) (when (eq Info-hide-note-references t) (put-text-property (match-beginning 2) (1- (match-end 6)) 'invisible t) *************** *** 3026,3031 **** --- 3178,3190 ---- '(space :align-to 24))) (setq cont t)))))) + (goto-char (point-min)) + (while (re-search-forward "http://[-~/[:alnum:]_.${}#%,:?=&]+" nil t) + (add-text-properties (match-beginning 0) (match-end 0) + '(font-lock-face info-xref + mouse-face highlight + help-echo "mouse-2: go to this URL"))) + (Info-fontify-menu-headers) (set-buffer-modified-p nil))))) \f =================================================================== -- http://www.jurta.org/emacs/ ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Info enhancements 2003-12-01 10:38 ` Info enhancements Juri Linkov @ 2003-12-02 3:34 ` Luc Teirlinck 2003-12-02 10:54 ` Juri Linkov 2003-12-02 4:43 ` Luc Teirlinck ` (5 subsequent siblings) 6 siblings, 1 reply; 135+ messages in thread From: Luc Teirlinck @ 2003-12-02 3:34 UTC (permalink / raw) Cc: emacs-devel I have not yet had the time to look at your patch in detail. I just looked at one feature: - use reference names to move point to the place within the current node where reference name is defined. For example, by following the reference "*Note file-coding-system-alist: Default Coding Systems," Info finds a node with the name "Default Coding Systems" and moves point to the line where reference name "file-coding-system-alist" is defined. I applied your patch. I replaced the @xref{Default Coding Systems} in nonascii.texi you are referring to by @xref{Default Coding Systems, file-coding-system-alist}. Then I launch info, go to (elisp)Default Coding Systems and click on that reference. It indeed carries me to the intended place. But the header-line goes blank. `u' sometimes, but not always makes the header-line go blank: C-h i m elisp RET m non- RET m text re RET u Blank header line. In general, it seems pretty easy to get a blank header line. This happens regardless of the value of Info-hide-note-references. As an other remark on the feature, it needs help from the .texi source file. So either other Info readers will have to adapt to the feature, or the references in the .texi files will have to be written in such a way that they look reasonable even in Info readers that do not have your feature. (These Info readers behave like the Emacs Info reader with Info-hide-note-references set to nil.) Maybe the latter is no problem, because "*Note file-coding-system-alist: Default Coding Systems." makes sense to me, even without your feature. Sincerely, Luc. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Info enhancements 2003-12-02 3:34 ` Luc Teirlinck @ 2003-12-02 10:54 ` Juri Linkov 0 siblings, 0 replies; 135+ messages in thread From: Juri Linkov @ 2003-12-02 10:54 UTC (permalink / raw) Cc: emacs-devel Luc Teirlinck <teirllm@dms.auburn.edu> writes: > I have not yet had the time to look at your patch in detail. I just > looked at one feature: > > - use reference names to move point to the place within the current > node where reference name is defined. For example, by following the > reference "*Note file-coding-system-alist: Default Coding Systems," > Info finds a node with the name "Default Coding Systems" and moves > point to the line where reference name "file-coding-system-alist" is > defined. > > I applied your patch. I replaced the @xref{Default Coding Systems} > in nonascii.texi you are referring to by > @xref{Default Coding Systems, file-coding-system-alist}. > > Then I launch info, go to (elisp)Default Coding Systems and click on > that reference. It indeed carries me to the intended place. But the > header-line goes blank. `u' sometimes, but not always makes the > header-line go blank: C-h i m elisp RET m non- RET m text re RET u > Blank header line. In general, it seems pretty easy to get a blank > header line. This happens regardless of the value of > Info-hide-note-references. Yes, this is because `Info-fontify-node' was called twice on the same node where header was already made invisible, so it was copied again with invisibility property to a header line. I will fix it by calling code that re-fontifies only node references. BTW, I just noticed that `Info-fontify-node' uses the function `Info-escape-percent' which have very limited applicability. It doubles all occurrences of only one particular character %. Seems this function is a copy of `replace-regexp-in-string' with a little modification. I think it's too bad to have such a limited function: it should be removed with making modifications in the `replace-regexp-in-string'. What do you think? > As an other remark on the feature, it needs help from the .texi source > file. So either other Info readers will have to adapt to the feature, > or the references in the .texi files will have to be written in such a > way that they look reasonable even in Info readers that do not have your > feature. (These Info readers behave like the Emacs Info reader with > Info-hide-note-references set to nil.) Maybe the latter is no > problem, because "*Note file-coding-system-alist: Default Coding Systems." > makes sense to me, even without your feature. I just discovered that the stand-alone Info reader already provides exactly the same feature. It uses a reference name to move to correct position within the selected Info node. It's too surprising to see a feature the stand-alone Info reader has, but Emacs Info reader hasn't! -- http://www.jurta.org/emacs/ ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Info enhancements 2003-12-01 10:38 ` Info enhancements Juri Linkov 2003-12-02 3:34 ` Luc Teirlinck @ 2003-12-02 4:43 ` Luc Teirlinck 2003-12-02 10:18 ` Info enhancements (was: Re: HTML as info format) Juri Linkov ` (4 subsequent siblings) 6 siblings, 0 replies; 135+ messages in thread From: Luc Teirlinck @ 2003-12-02 4:43 UTC (permalink / raw) Cc: emacs-devel Juri Linkov wrote: I would like to submit a patch that fixes some problems in the Emacs Info reader and adds features most web browsers already have. This patch don't change the existing Info file format. It improves usability of the Emacs Info reader with the current Info file format. Any comments are welcome. I now took a look at your other features. I have not yet looked at them carefully enough, but at first sight, it looks like all your new features are useful and real improvements. You have to do something about that header line going blank problem I mentioned in my previous message, however. Sincerely, Luc. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Info enhancements (was: Re: HTML as info format) 2003-12-01 10:38 ` Info enhancements Juri Linkov 2003-12-02 3:34 ` Luc Teirlinck 2003-12-02 4:43 ` Luc Teirlinck @ 2003-12-02 10:18 ` Juri Linkov 2003-12-02 17:27 ` Eli Zaretskii 2003-12-02 21:22 ` Info enhancements Reiner Steib ` (3 subsequent siblings) 6 siblings, 1 reply; 135+ messages in thread From: Juri Linkov @ 2003-12-02 10:18 UTC (permalink / raw) Cc: emacs-devel Eli Zaretskii <eliz@elta.co.il> writes: > [I have no idea why mailman sent me this message from 2 weeks ago.] >> From: Juri Linkov <juri@jurta.org> >> Date: Mon, 17 Nov 2003 15:29:54 +0200 >> >> Current Info format can't make a link to another part of the same >> Info node. > > I think you miss the @anchor directive, introduced in Texinfo 4.x. > >> The same problem appears in the Glossary node of the Emacs manual, >> where links to the same node are marked by the "(q.v.)". > > Arguably, we could modify the Glossary by using anchors in the online > formats. Yes, using anchors might be a more clean solution, but it has one drawback: it will generate too many excessive references in the tag table for its Info file. And these references will be mixed up with node names, e.g. in the completion list of `Info-goto-node'. Maybe this is not too bad to jump directly to the glossary term definition by `Info-goto-node', but seems that its disadvantages outweigh a little convenience it provides. I solved this problem by using reference names for finding correct position within an Info node by calling the function `Info-find-index-name' with reference name after selecting an Info node. For example, instead of the text "is shared by an indirect buffer (q.v.@:)" the text "is shared by an @ref{Glossary,indirect buffer}" could be used. But I just noticed one problem with using it in the Glossary node. If some glossary term coincides with the node name then Info jumps to this node instead of finding a term in the some Glossary node. It's because the function `Info-follow-reference' always selects the first occurrence of the "*Note:" text within one Info node. For example, if Glossary node has two following references: *Note Input Methods::. *Note input method: Glossary. it will always jump to the first reference even if point was on second before calling the `Info-follow-reference' function. I hope this should be fixed somehow in this function. >> There are other problems with the current Info format. For example, >> currently there is no way to hide the address part of the link without >> corrupting the paragraph formatting. > > IMHO, the current way to hide the address of the link is still > experimental and needs further work. I already fixed some its deficiencies, so now it looks quite good. It don't cause too long lines, but still don't fix too short lines. But I think too short lines is not a big problem. Long lines were much worse, because they became partially invisible when truncated. >> After hiding the address part of >> the link lines become either too short or too long. For example, lines: >> >> See *Note Customizing Indentation: (ccmode)Customizing Indentation, for >> more information on customizing indentation for C and related modes, >> >> in Info the first line becomes too short: >> >> See Customizing Indentation for >> more information on customizing indentation for C and related modes, > > Doing this in some other way, like physically erasing the text we now > hide and then re-filling the paragraph, would solve this. In any > case, this problem is not relevant to Info format per se, it is due to > the way the Emacs Info reader renders an Info document. The proper refilling in the Emacs Info reader is impossible because Info file format loses some information about formatting presented in a source Texinfo file, like @*, @w{...}, etc. -- http://www.jurta.org/emacs/ ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Info enhancements (was: Re: HTML as info format) 2003-12-02 10:18 ` Info enhancements (was: Re: HTML as info format) Juri Linkov @ 2003-12-02 17:27 ` Eli Zaretskii 2003-12-02 19:26 ` Karl Berry 0 siblings, 1 reply; 135+ messages in thread From: Eli Zaretskii @ 2003-12-02 17:27 UTC (permalink / raw) Cc: karl, emacs-devel > From: Juri Linkov <juri@jurta.org> > Date: Tue, 02 Dec 2003 12:18:09 +0200 > > Yes, using anchors might be a more clean solution, but it has one > drawback: it will generate too many excessive references in the tag > table for its Info file. And these references will be mixed up with > node names, e.g. in the completion list of `Info-goto-node'. Perhaps there should be a way to tell Info-goto-node to complete on node names only, or maybe we should have two distinct commands, one which considers only nodes, the other which considers all entries in the tag tables. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Info enhancements (was: Re: HTML as info format) @ 2003-12-02 19:26 ` Karl Berry 2003-12-03 5:38 ` Info enhancements Juri Linkov 2003-12-03 17:16 ` Info enhancements (was: Re: HTML as info format) Richard Stallman 0 siblings, 2 replies; 135+ messages in thread From: Karl Berry @ 2003-12-02 19:26 UTC (permalink / raw) Cc: juri, emacs-devel > From: Juri Linkov <juri@jurta.org> > Date: Tue, 02 Dec 2003 12:18:09 +0200 > > Yes, using anchors might be a more clean solution, but it has one > drawback: it will generate too many excessive references in the tag > table for its Info file. And these references will be mixed up with > node names, e.g. in the completion list of `Info-goto-node'. Perhaps there should be a way to tell Info-goto-node to complete on node names only, or maybe we should have two distinct commands, one which considers only nodes, the other which considers all entries in the tag tables. Once again I've been removed from the thread. What is under discussion now? I doubt having two different completion commands would make users happy. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Info enhancements 2003-12-02 19:26 ` Karl Berry @ 2003-12-03 5:38 ` Juri Linkov 2003-12-03 13:27 ` Karl Berry 2003-12-03 17:16 ` Info enhancements (was: Re: HTML as info format) Richard Stallman 1 sibling, 1 reply; 135+ messages in thread From: Juri Linkov @ 2003-12-03 5:38 UTC (permalink / raw) Cc: texinfo-pretest karl@freefriends.org (Karl Berry) writes: > > From: Juri Linkov <juri@jurta.org> > > Date: Tue, 02 Dec 2003 12:18:09 +0200 > > > > Yes, using anchors might be a more clean solution, but it has one > > drawback: it will generate too many excessive references in the tag > > table for its Info file. And these references will be mixed up with > > node names, e.g. in the completion list of `Info-goto-node'. > > Perhaps there should be a way to tell Info-goto-node to complete on > node names only, or maybe we should have two distinct commands, one > which considers only nodes, the other which considers all entries in > the tag tables. > > Once again I've been removed from the thread. What is under discussion now? There is a problem of more accurate addressing of a position within a given Info node. For example, currently the Glossary node of the Emacs Manual has non-functional references that merely has a form of a simple text "(q.v.)" or "See `default.'". There are many other places in Info documentation where more exact referencing is needed. This discussion currently goes about two solutions to this problem: - use anchors for example: @item Argument @xref{Numeric Argument}. ... @item Numeric Argument @anchor{Numeric Argument} A numeric argument is a number, specified before a command, to change - or use reference names @item Argument @xref{Glossary,Numeric Argument}. This works by selecting an Info node ("Glossary") and then by using some heuristics to find a needed position in this Info node. The stand-alone Info reader searches for the first occurrence of the reference name ("Numeric Argument") and moves point here. The Emacs Info reader now uses the function `Info-find-index-name' to move point to the place within the current node where reference name ("Numeric Argument") is defined (but still sometimes it misses the correct place). If the solution will be to use anchors, then I can suggest to develop it further and generate anchors (i.e. Ref: tags in tag tables of Info files) from all indexing commands (@findex, @vindex, etc.). Currently their positions are not available in Info files, but it might be useful to jump unambiguously to positions in Info files where these index entries were defined in Texinfo source files. -- http://www.jurta.org/emacs/ _______________________________________________ Texinfo home page: http://www.gnu.org/software/texinfo/ texinfo-pretest@texinfo.org http://ff0.org/mailman/listinfo/texinfo-pretest ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Info enhancements @ 2003-12-03 13:27 ` Karl Berry 2003-12-03 15:46 ` Robert J. Chassell 2003-12-20 5:34 ` Juri Linkov 0 siblings, 2 replies; 135+ messages in thread From: Karl Berry @ 2003-12-03 13:27 UTC (permalink / raw) Cc: texinfo-pretest For example, currently the Glossary node of the Emacs Manual has non-functional references that merely has a form of a simple text "(q.v.)" or "See `default.'". I see. Yes, this is more or less what anchors were invented for. As far as glossary entries go, I think that would work ok. The reference name solution seems too heuristic. However, I certainly agree with the comment that if we make an anchor for every index entry, that's too many anchors (it would make the i cmd a subset of g :). Instead, I think indexes are important enough that they deserve special treatment. In fact, we've had this discussion before, in the context of allowing arbitrary index names (specifically, ones with a :). One message from that thread is from rms, on 26 Jun 2003 01:30:50 -0400, Message-Id: <E19VPLO-0004C2-6Q@fencepost.gnu.org>. If we mark index menus with a special tag, then we can also easily the exact character or line position within the node for the index entry. I believe Dave Gillespie (that's my memory, might have been someone else) implemented a hack for this at one point, but it never made it back into info.el. _______________________________________________ Texinfo home page: http://www.gnu.org/software/texinfo/ texinfo-pretest@texinfo.org http://ff0.org/mailman/listinfo/texinfo-pretest ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Info enhancements 2003-12-03 13:27 ` Karl Berry @ 2003-12-03 15:46 ` Robert J. Chassell 2003-12-20 5:34 ` Juri Linkov 1 sibling, 0 replies; 135+ messages in thread From: Robert J. Chassell @ 2003-12-03 15:46 UTC (permalink / raw) Cc: emacs-devel karl@freefriends.org (Karl Berry) wrote .... If we mark index menus with a special tag, then we can also easily the exact character or line position within the node for the index entry. I believe Dave Gillespie (that's my memory, might have been someone else) implemented a hack for this at one point, but it never made it back into info.el. Here is an example from the `Index of Key Sequences' in calc-2.02f * quick-calc: Quick Calculator. 6. which comes from node Quick Calculator in the Texinfo file: @pindex quick-calc Unfortunately, I could not find the source for the hack, just its output. As far as I can see, a better format would have the line number before the description rather than after it, with the description indented 6 spaces from the column number to which the description would otherwise have been indented. -- Robert J. Chassell Rattlesnake Enterprises http://www.rattlesnake.com GnuPG Key ID: 004B4AC8 http://www.teak.cc bob@rattlesnake.com ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Info enhancements 2003-12-03 13:27 ` Karl Berry 2003-12-03 15:46 ` Robert J. Chassell @ 2003-12-20 5:34 ` Juri Linkov 2003-12-20 14:57 ` Karl Berry 1 sibling, 1 reply; 135+ messages in thread From: Juri Linkov @ 2003-12-20 5:34 UTC (permalink / raw) Cc: emacs-devel karl@freefriends.org (Karl Berry) writes: > For example, currently the Glossary node of the > Emacs Manual has non-functional references that merely has a form of a > simple text "(q.v.)" or "See `default.'". > > I see. Yes, this is more or less what anchors were invented for. > As far as glossary entries go, I think that would work ok. The > reference name solution seems too heuristic. Anchors wouldn't work in this case because many glossary entries have the same names as Info nodes (e.g. "Filling", "Global Mark Ring" and many others). Making anchors for them is not possible because anchors and nodes can't have the same names. So, using the reference name solution seems inevitable here. > However, I certainly agree with the comment that if we make an anchor > for every index entry, that's too many anchors (it would make the i cmd > a subset of g :). Instead, I think indexes are important enough that > they deserve special treatment. > > In fact, we've had this discussion before, in the context of allowing > arbitrary index names (specifically, ones with a :). One message from > that thread is from rms, on 26 Jun 2003 01:30:50 -0400, Message-Id: > <E19VPLO-0004C2-6Q@fencepost.gnu.org>. I found this message, but I have one question to administrators of the emacs-devel mailing list: does the emacs-devel archive exist in mbox format available for download? Often there is a need to read old discussions, but web interface to archives is too inconvenient. Much better is to browse mail archives in a local mbox file by one of the Emacs mail readers. -- http://www.jurta.org/emacs/ ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Info enhancements 2003-12-20 5:34 ` Juri Linkov @ 2003-12-20 14:57 ` Karl Berry 0 siblings, 0 replies; 135+ messages in thread From: Karl Berry @ 2003-12-20 14:57 UTC (permalink / raw) Cc: emacs-devel does the emacs-devel archive exist in mbox format available for download? ftp://mail.gnu.org/emacs-devel/ (by month). All the GNU lists are available there, as far as I know. HTH, k ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Info enhancements (was: Re: HTML as info format) 2003-12-02 19:26 ` Karl Berry 2003-12-03 5:38 ` Info enhancements Juri Linkov @ 2003-12-03 17:16 ` Richard Stallman 1 sibling, 0 replies; 135+ messages in thread From: Richard Stallman @ 2003-12-03 17:16 UTC (permalink / raw) Cc: juri, eliz, emacs-devel Perhaps there should be a way to tell Info-goto-node to complete on node names only, Perhaps Info-goto-node should go to node names only, and the basic function to go to any locator should have another name. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Info enhancements 2003-12-01 10:38 ` Info enhancements Juri Linkov ` (2 preceding siblings ...) 2003-12-02 10:18 ` Info enhancements (was: Re: HTML as info format) Juri Linkov @ 2003-12-02 21:22 ` Reiner Steib 2003-12-03 3:54 ` `s' (regex) search [was Re: Info enhancements] Harry Putnam 2003-12-03 5:04 ` Info enhancements Juri Linkov 2003-12-03 0:33 ` Kim F. Storm ` (2 subsequent siblings) 6 siblings, 2 replies; 135+ messages in thread From: Reiner Steib @ 2003-12-02 21:22 UTC (permalink / raw) On Mon, Dec 01 2003, Juri Linkov wrote: > - rebind `M-s' key to a new function `Info-search-next' that searches > for another occurrence of regular expression from a previous > `Info-search' command (key `s'). Pressing only one key to repeat > a search is more convenient than pressing two keys (`s RET'). ACK. I would even suggest to use an easily accessible single-key [1], because `Info-search-next' is used often and repeatedly. Like `,' for `Info-index-next'. [1] I'm using (define-key Info-mode-map "/" "s") for this which made using info much more convenient for me. Bye, Reiner. -- ,,, (o o) ---ooO-(_)-Ooo--- PGP key available via WWW http://rsteib.home.pages.de/ ^ permalink raw reply [flat|nested] 135+ messages in thread
* `s' (regex) search [was Re: Info enhancements] 2003-12-02 21:22 ` Info enhancements Reiner Steib @ 2003-12-03 3:54 ` Harry Putnam 2003-12-03 5:47 ` Eli Zaretskii 2003-12-03 5:04 ` Info enhancements Juri Linkov 1 sibling, 1 reply; 135+ messages in thread From: Harry Putnam @ 2003-12-03 3:54 UTC (permalink / raw) Reiner Steib <4.uce.03.r.s@nurfuerspam.de> writes: > On Mon, Dec 01 2003, Juri Linkov wrote: > >> - rebind `M-s' key to a new function `Info-search-next' that searches >> for another occurrence of regular expression from a previous >> `Info-search' command (key `s'). Pressing only one key to repeat >> a search is more convenient than pressing two keys (`s RET'). This comment must be about reading info inside emacs ... right? I think it needs to be said somewhere in this discussion that a regex search needs to be added to the standalone info reader. A regex search is much more usefull in my opinion, than a string match search. Of course the index search is the first line of attack but after that I rely on emacs info reader's `s' (regex) search. I wondered why this is not part of standalone info reader. Is it difficult to add? If its possible, can it also be added to the new formats now under discussion? ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: `s' (regex) search [was Re: Info enhancements] 2003-12-03 3:54 ` `s' (regex) search [was Re: Info enhancements] Harry Putnam @ 2003-12-03 5:47 ` Eli Zaretskii 2003-12-03 9:42 ` Harry Putnam 0 siblings, 1 reply; 135+ messages in thread From: Eli Zaretskii @ 2003-12-03 5:47 UTC (permalink / raw) > From: Harry Putnam <reader@newsguy.com> > Date: Tue, 02 Dec 2003 21:54:40 -0600 > > Of course the index search is the first line of attack but after that > I rely on emacs info reader's `s' (regex) search. The Emacs manual suggests quite a few ways of searching the docs using additional commands, before you even get to `s'. > I wondered why this is not part of standalone info reader. FWIW, I never needed that in Info. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: `s' (regex) search [was Re: Info enhancements] 2003-12-03 5:47 ` Eli Zaretskii @ 2003-12-03 9:42 ` Harry Putnam 2003-12-03 11:31 ` Eli Zaretskii 0 siblings, 1 reply; 135+ messages in thread From: Harry Putnam @ 2003-12-03 9:42 UTC (permalink / raw) Eli Zaretskii <eliz@elta.co.il> writes: >> From: Harry Putnam <reader@newsguy.com> >> Date: Tue, 02 Dec 2003 21:54:40 -0600 >> >> Of course the index search is the first line of attack but after that >> I rely on emacs info reader's `s' (regex) search. > > The Emacs manual suggests quite a few ways of searching the docs > using additional commands, before you even get to `s'. > >> I wondered why this is not part of standalone info reader. > > FWIW, I never needed that in Info. Being an experienced programmer and developer may have left you with a much better idea of what to look for and how to do it. But I have found consistently over the last several years that the `s' search requires less knowledge on my part to find what I need. Right down to the patterns that are found in a snippet of code or the like. If only one search method were allowed I'd opt for `s'. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: `s' (regex) search [was Re: Info enhancements] 2003-12-03 9:42 ` Harry Putnam @ 2003-12-03 11:31 ` Eli Zaretskii 2003-12-03 11:56 ` Harry Putnam 0 siblings, 1 reply; 135+ messages in thread From: Eli Zaretskii @ 2003-12-03 11:31 UTC (permalink / raw) Cc: emacs-devel > From: Harry Putnam <reader@newsguy.com> > Date: Wed, 03 Dec 2003 03:42:50 -0600 > > Being an experienced programmer and developer may have left you with > a much better idea of what to look for and how to do it. Not really, especially when I work with a manual for a tool that I don't use too regularly. > But I have found consistently over the last several years that the > `s' search requires less knowledge on my part to find what I need. Good indexing should require even less knowledge. All you need is to think about related words or phrases. > If only one search method were allowed I'd opt for `s'. Ah, but it's not the only method, so this is not the issue at point. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: `s' (regex) search [was Re: Info enhancements] 2003-12-03 11:31 ` Eli Zaretskii @ 2003-12-03 11:56 ` Harry Putnam 2003-12-03 16:27 ` Eli Zaretskii 0 siblings, 1 reply; 135+ messages in thread From: Harry Putnam @ 2003-12-03 11:56 UTC (permalink / raw) Eli Zaretskii <eliz@elta.co.il> writes: >> If only one search method were allowed I'd opt for `s'. > > Ah, but it's not the only method, so this is not the issue at point. It does point up the fact that `s' search is a very usefull kind of search, so my question still stands: Is it difficult to add to standalone reader. And could it be also included in the new formats under discussion? ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: `s' (regex) search [was Re: Info enhancements] 2003-12-03 11:56 ` Harry Putnam @ 2003-12-03 16:27 ` Eli Zaretskii 2003-12-03 19:13 ` Harry Putnam 0 siblings, 1 reply; 135+ messages in thread From: Eli Zaretskii @ 2003-12-03 16:27 UTC (permalink / raw) Cc: emacs-devel > From: Harry Putnam <reader@newsguy.com> > Date: Wed, 03 Dec 2003 05:56:41 -0600 > > so my question still stands: Is it difficult to add to standalone > reader. You should suggest that to the appropriate Texinfo forum, I think. > And could it be also included in the new formats under discussion? Sorry, I don't understand the question: what does search have to do with a change in format? ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: `s' (regex) search [was Re: Info enhancements] 2003-12-03 16:27 ` Eli Zaretskii @ 2003-12-03 19:13 ` Harry Putnam 2003-12-04 8:34 ` Eli Zaretskii 0 siblings, 1 reply; 135+ messages in thread From: Harry Putnam @ 2003-12-03 19:13 UTC (permalink / raw) "Eli Zaretskii" <eliz@elta.co.il> writes: >> From: Harry Putnam <reader@newsguy.com> >> Date: Wed, 03 Dec 2003 05:56:41 -0600 >> >> so my question still stands: Is it difficult to add to standalone >> reader. > > You should suggest that to the appropriate Texinfo forum, I think. Well I appreciate the comment and will do so, but it doesn't seem inappropriate here either. There has been a major discussion here that overlaps texi lists but no one has suggested to remove it to texi lists. This serveral thread discussion about reworking info and texi output for online reading etc. > >> And could it be also included in the new formats under discussion? > > Sorry, I don't understand the question: what does search have to do > with a change in format? There has been a fair bit of discussion here about redoing info and texi to generate a new format for online reading of info in html+ javascritp/xtml etc. One point in that discussion has been where the searching would take place, on server or client. See MID Message-ID: <87r800dr09.fsf@kanga.tapsellferrier.co.uk> for a small example. A regex search could be pretty intensive over a remote connection I guess so I'm asking if a regex search is feasable to be built into the new formats under discussion. As I understand it, a regex search engine under javascript or whatever would work differently than the current one inside emacs (`s' search) ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: `s' (regex) search [was Re: Info enhancements] 2003-12-03 19:13 ` Harry Putnam @ 2003-12-04 8:34 ` Eli Zaretskii 0 siblings, 0 replies; 135+ messages in thread From: Eli Zaretskii @ 2003-12-04 8:34 UTC (permalink / raw) Cc: emacs-devel > From: Harry Putnam <reader@newsguy.com> > Date: Wed, 03 Dec 2003 13:13:06 -0600 > > > > You should suggest that to the appropriate Texinfo forum, I think. > > Well I appreciate the comment and will do so, but it doesn't seem > inappropriate here either. There has been a major discussion here > that overlaps texi lists but no one has suggested to remove it to > texi lists. This serveral thread discussion about reworking info and > texi output for online reading etc. I've suggested elsewhere to move those threads as well. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Info enhancements 2003-12-02 21:22 ` Info enhancements Reiner Steib 2003-12-03 3:54 ` `s' (regex) search [was Re: Info enhancements] Harry Putnam @ 2003-12-03 5:04 ` Juri Linkov 2004-09-01 16:42 ` Reiner Steib 1 sibling, 1 reply; 135+ messages in thread From: Juri Linkov @ 2003-12-03 5:04 UTC (permalink / raw) Cc: emacs-devel Reiner Steib <4.uce.03.r.s@nurfuerspam.de> writes: > On Mon, Dec 01 2003, Juri Linkov wrote: >> - rebind `M-s' key to a new function `Info-search-next' that searches >> for another occurrence of regular expression from a previous >> `Info-search' command (key `s'). Pressing only one key to repeat >> a search is more convenient than pressing two keys (`s RET'). > > ACK. I would even suggest to use an easily accessible single-key [1], > because `Info-search-next' is used often and repeatedly. Like `,' for > `Info-index-next'. > > [1] I'm using (define-key Info-mode-map "/" "s") for this which made > using info much more convenient for me. On German and Scandinavian keyboards "/" is placed above the "7" key, so still two key presses are needed to use it (shift and "7"). But M-s is not a bad choice because <META> key can be held down while repeating pressing "s" for the next search. Anyhow, "/" might be bound to `Info-search-next' as well. BTW, you didn't use the function `Info-search-next' in your key binding. But seems this function could be useful to add it to the menu and describe it in the `Info-mode' docstring. -- http://www.jurta.org/emacs/ ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Info enhancements 2003-12-03 5:04 ` Info enhancements Juri Linkov @ 2004-09-01 16:42 ` Reiner Steib 2004-09-01 20:55 ` Juri Linkov 0 siblings, 1 reply; 135+ messages in thread From: Reiner Steib @ 2004-09-01 16:42 UTC (permalink / raw) Cc: Emacs development On Wed, Dec 03 2003, Juri Linkov wrote: > Reiner Steib <4.uce.03.r.s@nurfuerspam.de> writes: >> On Mon, Dec 01 2003, Juri Linkov wrote: >>> - rebind `M-s' key to a new function `Info-search-next' that searches >>> for another occurrence of regular expression from a previous >>> `Info-search' command (key `s'). Pressing only one key to repeat >>> a search is more convenient than pressing two keys (`s RET'). >> >> ACK. I would even suggest to use an easily accessible single-key [1], >> because `Info-search-next' is used often and repeatedly. Like `,' for >> `Info-index-next'. >> >> [1] I'm using (define-key Info-mode-map "/" "s") for this which made >> using info much more convenient for me. > > On German and Scandinavian keyboards "/" is placed above the "7" key, > so still two key presses are needed to use it (shift and "7"). > But M-s is not a bad choice because <META> key can be held down while > repeating pressing "s" for the next search. Anyhow, "/" might be > bound to `Info-search-next' as well. > > BTW, you didn't use the function `Info-search-next' in your key > binding. But seems this function could be useful to add it > to the menu and describe it in the `Info-mode' docstring. I used Emacs 21.3 at that time where `Info-search-next' wasn't available, IIRC. Now I use the CVS version, but apparently there still is no key binding for `Info-search-next' (it in the menu, though). Was there any objection against binding `Info-search-next' to `M-s' (or `/')? Bye, Reiner. -- ,,, (o o) ---ooO-(_)-Ooo--- | PGP key available | http://rsteib.home.pages.de/ ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Info enhancements 2004-09-01 16:42 ` Reiner Steib @ 2004-09-01 20:55 ` Juri Linkov 2004-09-02 19:02 ` Richard Stallman 0 siblings, 1 reply; 135+ messages in thread From: Juri Linkov @ 2004-09-01 20:55 UTC (permalink / raw) Reiner Steib <4.uce.03.r.s@nurfuerspam.de> writes: > I used Emacs 21.3 at that time where `Info-search-next' wasn't > available, IIRC. > > Now I use the CVS version, but apparently there still is no key > binding for `Info-search-next' (it in the menu, though). Was there > any objection against binding `Info-search-next' to `M-s' (or `/')? I remember Richard objected against binding `Info-search-next' to `M-s' and `/'. But fortunately, now `Info-search-next' (with possible `M-s' and `/' bindings) as well as `Info-search' with `s' binding are basically obsoleted by the ability to use C-M-s and C-M-r to isearch for a regexp across Info nodes. -- Juri Linkov http://www.jurta.org/emacs/ ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Info enhancements 2004-09-01 20:55 ` Juri Linkov @ 2004-09-02 19:02 ` Richard Stallman 0 siblings, 0 replies; 135+ messages in thread From: Richard Stallman @ 2004-09-02 19:02 UTC (permalink / raw) Cc: emacs-devel But fortunately, now `Info-search-next' (with possible `M-s' and `/' bindings) as well as `Info-search' with `s' binding are basically obsoleted by the ability to use C-M-s and C-M-r to isearch for a regexp across Info nodes. Could you write an update for info.texi? If you make the text basically correct, I can polish up the English. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Info enhancements 2003-12-01 10:38 ` Info enhancements Juri Linkov ` (3 preceding siblings ...) 2003-12-02 21:22 ` Info enhancements Reiner Steib @ 2003-12-03 0:33 ` Kim F. Storm 2003-12-03 6:43 ` Juri Linkov 2003-12-12 2:08 ` Juri Linkov 2004-07-01 21:07 ` non-blocking socket io: data limit on read? Nic Ferrier 6 siblings, 1 reply; 135+ messages in thread From: Kim F. Storm @ 2003-12-03 0:33 UTC (permalink / raw) Cc: emacs-devel Juri Linkov <juri@jurta.org> writes: > - don't hide the newline (with following whitespace) in references when > Info-hide-note-references is t. This fixes the problem where hidden > newlines cause too long (and truncated) lines. I think that change is ok. > > - don't hide the name of external Info file in references in case > when Info-hide-note-references is t and references lead outside > the current Info file. It's important for user to know about > such situation. That is a sensible change. > > - don't insert the text "See" instead of "Note" because inserting a > new text in Info buffer breaks the stored point positions. This bug > can be observed by calling `Info-last', `Info-search' where point is > moved with some offset to its correct position (the offset is the sum > of lengths of strings "See" inserted in the buffer above the point). I don't see how this is "fixing a bug"... Isn't there a way to generate the correct positions some other way? Or you could add a suitable number of invisible space after each "see". -- Kim F. Storm <storm@cua.dk> http://www.cua.dk ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Info enhancements 2003-12-03 0:33 ` Kim F. Storm @ 2003-12-03 6:43 ` Juri Linkov 0 siblings, 0 replies; 135+ messages in thread From: Juri Linkov @ 2003-12-03 6:43 UTC (permalink / raw) Cc: emacs-devel storm@cua.dk (Kim F. Storm) writes: > Juri Linkov <juri@jurta.org> writes: >> - don't insert the text "See" instead of "Note" because inserting a >> new text in Info buffer breaks the stored point positions. This bug >> can be observed by calling `Info-last', `Info-search' where point is >> moved with some offset to its correct position (the offset is the sum >> of lengths of strings "See" inserted in the buffer above the point). > > I don't see how this is "fixing a bug"... > Isn't there a way to generate the correct positions some other way? > Or you could add a suitable number of invisible space after each "see". Fixing all the problems caused by inserting new text into Info buffers will require too much work. Moreover, this will vastly complicate a simple thing while I see no sense in replacing text "Note" with "See" at all. People that want to see some leading word before references will be happy by setting the variable `Info-hide-note-references' to nil. If you still think this is needed then adding "See" could be placed under condition `Info-refill-paragraphs' because of their similar fragile behavior or under some new separate value of the `Info-hide-note-references'. -- http://www.jurta.org/emacs/ ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Info enhancements 2003-12-01 10:38 ` Info enhancements Juri Linkov ` (4 preceding siblings ...) 2003-12-03 0:33 ` Kim F. Storm @ 2003-12-12 2:08 ` Juri Linkov 2003-12-12 14:24 ` Karl Berry 2003-12-15 2:35 ` Richard Stallman 2004-07-01 21:07 ` non-blocking socket io: data limit on read? Nic Ferrier 6 siblings, 2 replies; 135+ messages in thread From: Juri Linkov @ 2003-12-12 2:08 UTC (permalink / raw) Cc: karl I'd like to submit the new version of a patch that fixes problems in the Emacs Info reader and adds new features. Actually, this is a patch to the previous patch because below I describe the changes made after previous changes. I can send a full patch when needed. Thanks for all the responses to the previous patch. * Implemented a new `S' command suggested by Eli. This command is bound to a new function `Info-search-case-sensitively' that searches for a regexp case-sensitively. The `Info-search-next' uses the case of a previous `Info-search' or `Info-search-case-sensitively' command. * Added a new keybinding "/" for `Info-search-next' (suggested by Reiner). * Added a new variable `Info-search-whitespace-regexp' used to match a sequence of whitespace chars in Info search. I borrowed this idea from `search-whitespace-regexp' from isearch.el. * Removed the history tree feature from the previous patch because I found that history tree is less useful than a history list. There are many different variants of tree creation so I couldn't decide which is the better one. But I think that a plain history list sorted by node visiting order is good enough. The history list items are represented now by menu instead of references because menu is more useful for selecting history nodes (keys 1-9 can be used to quickly select a history item in node's menu). * Unhide a file name in menu items if it has no period after parentheses, (i.e. it don't refer to the "Top" node). This is needed mostly for the history list menu where Info file names should be shown. * Node Tree: this new feature generates a separate buffer with a tree of all Info node names collected from an Info file. The node-subnode relationships are extracted from node menus. The generated buffer with a node tree contains the references to Info nodes. I "stole" two functions for this feature from ee-info.el file that builds different tree views of Info nodes. I think that node tree feature will be useful even for users not installed the Ee package. The keybinding for this feature is "*". * A new value 'hide ("Hide tag and reference") of user variable `Info-hide-note-references' is added for users that don't want to see "see" (no pun intended almost) instead of "*note". This option is also needed for the node tree feature because inserting "see" before every node in a node tree is too ugly. * The function `Info-follow-reference' gives the preference to the reference at or closest to point (suggested by Eli to make it similar to the standalone Info reader). However, currently it don't handle a situation with off-screen references, because it's too impractical to write code for such extremely rare situations. * The functions `Info-next-reference' and `Info-prev-reference' now skip the "*note" tag and move cursor to the position on reference immediately after this tag. This is especially useful when "*note" is replaced with "see" by a `display' property as suggested by Kim because it's better when point is placed directly on the reference instead of the "see" text. * The command `u' (`Info-up') now relocates point to the menu item with the name of a previously visited node. Very useful to keep track of node navigation from menu. * All anchors are filtered out from a node completion list. I'm not sure whether a separate command with anchor list to select and go to a selected anchor by its name is needed or not? Seems anchors are useful only for making references to them, not for selecting them from completion list. * Fixed a bug reported by Luc for the previous patch where anchors were disabled by the reference names feature. I still think this feature is very useful especially for moving from indexes directly to lines where index items are described. This feature can be replaced later gradually by anchors as suggested by Luc. However, now this feature needs more testing to collect more evidences for its usefulness/uselessness/harmfulness. * Fixed a bug reported by Luc where header-line's gone blank. It's fixed by calling fontification only once, but calling refontification of visited links every time. * The function `Info-fontify-menu-headers' is removed and its content moved to `Info-fontify-node' where is was called before. =================================================================== diff -cwB emacs/lisp/info.el~ emacs/lisp/info.el *** emacs/lisp/info.el~ Tue Dec 02 00:25:29 2003 --- emacs/lisp/info.el Fri Dec 12 02:45:12 2003 *************** *** 45,59 **** (defvar Info-history nil ! "List of info nodes user has visited. Each element of list is a list (FILENAME NODENAME BUFFERPOS).") ! (defvar Info-history-tree nil ! "Tree of info nodes user has visited. ! Each element of list is a list (FILENAME NODENAME PARENT-INDEX).") ! ! (defvar Info-history-node -1 ! "Position of the current node on the info nodes tree user has visited.") (defcustom Info-enable-edit nil "*Non-nil means the \\<Info-mode-map>\\[Info-edit] command in Info can edit the current node. --- 45,56 ---- (defvar Info-history nil ! "Stack of info nodes user has visited. Each element of list is a list (FILENAME NODENAME BUFFERPOS).") ! (defvar Info-history-list nil ! "Full list of all info nodes user has ever visited. ! Each element of list is a list (FILENAME NODENAME).") (defcustom Info-enable-edit nil "*Non-nil means the \\<Info-mode-map>\\[Info-edit] command in Info can edit the current node. *************** *** 175,185 **** (defcustom Info-hide-note-references t "*If non-nil, hide the tag and section reference in *note and * menu items. If value is non-nil but not t, the reference section is still shown." :version "21.4" ! :type '(choice (const :tag "No reformatting" nil) (const :tag "Replace tag and hide reference" t) ! (other :tag "Replace only tag" tag)) :group 'info) (defcustom Info-refill-paragraphs nil --- 172,184 ---- (defcustom Info-hide-note-references t "*If non-nil, hide the tag and section reference in *note and * menu items. + Also replaces the \"*note\" text with \"see\". If value is non-nil but not t, the reference section is still shown." :version "21.4" ! :type '(choice (const :tag "No hiding" nil) (const :tag "Replace tag and hide reference" t) ! (other :tag "Hide tag and reference" hide) ! (other :tag "Only replace tag" tag)) :group 'info) (defcustom Info-refill-paragraphs nil *************** *** 190,195 **** --- 189,203 ---- :type 'boolean :group 'info) + (defcustom Info-search-whitespace-regexp "\\\\(?:\\\\s-+\\\\)" + "*If non-nil, regular expression to match a sequence of whitespace chars. + This applies to regular expression Info search. + You might want to use something like \"[ \\t\\r\\n]+\" instead. + In the Customization buffer, that is `[' followed by a space, + a tab, a carriage return (control-M), a newline, and `]+'." + :type 'regexp + :group 'info) + (defcustom Info-mode-hook ;; Try to obey obsolete Info-fontify settings. (unless (and (boundp 'Info-fontify) (null Info-fontify)) *************** *** 225,231 **** "List of possible matches for last `Info-index' command.") (defvar Info-reference-name nil ! "Name of the current reference.") (defvar Info-standalone nil "Non-nil if Emacs was started solely as an Info browser.") --- 233,241 ---- "List of possible matches for last `Info-index' command.") (defvar Info-reference-name nil ! "Name of the selected cross-reference. ! Point is moved to the proper occurrence of this name within a node ! after selecting it.") (defvar Info-standalone nil "Non-nil if Emacs was started solely as an Info browser.") *************** *** 809,820 **** nodename))) (Info-select-node) ! (goto-char (or anchorpos (point-min))) ! ! ;; Move point to the place where the referer name points to ! (when Info-reference-name (Info-find-index-name Info-reference-name) ! (setq Info-reference-name nil))))) ;; If we did not finish finding the specified node, ;; go back to the previous one. (or Info-current-node no-going-back (null Info-history) --- 819,829 ---- nodename))) (Info-select-node) ! (goto-char (point-min)) ! (cond (anchorpos (goto-char anchorpos)) ! (Info-reference-name (Info-find-index-name Info-reference-name) ! (setq Info-reference-name nil)))))) ;; If we did not finish finding the specified node, ;; go back to the previous one. (or Info-current-node no-going-back (null Info-history) *************** *** 1201,1225 **** (read (current-buffer)))))) (point-max))) (if Info-enable-active-nodes (eval active-expression)) (Info-fontify-node) (Info-display-images-node) - - ;; Add a new history node or use old node from the history tree - (let ((tree Info-history-tree) - (i 0) res) - (while tree - (if (and (equal (nth 0 (car tree)) Info-current-file) - (equal (nth 1 (car tree)) Info-current-node)) - (setq res i tree nil)) - (setq tree (cdr tree) i (1+ i))) - (if res - (setq Info-history-node res) - (setq Info-history-tree - (nconc Info-history-tree - (list (list Info-current-file Info-current-node - Info-history-node))) - Info-history-node (1- (length Info-history-tree))))) - (run-hooks 'Info-selection-hook))))) (defun Info-set-mode-line () --- 1210,1221 ---- (read (current-buffer)))))) (point-max))) (if Info-enable-active-nodes (eval active-expression)) + ;; Add a new unique history item to full history list + (let ((new-history (list Info-current-file Info-current-node))) + (setq Info-history-list + (cons new-history (delete new-history Info-history-list)))) (Info-fontify-node) (Info-display-images-node) (run-hooks 'Info-selection-hook))))) (defun Info-set-mode-line () *************** *** 1251,1257 **** (if fork (set-buffer (clone-buffer (concat "*info-" (if (stringp fork) fork nodename) "*") t))) ! (if (equal (buffer-name) "*info-history*") (switch-to-buffer "*info*")) (let (filename) (string-match "\\s *\\((\\s *\\([^\t)]*\\)\\s *)\\s *\\|\\)\\(.*\\)" --- 1247,1253 ---- (if fork (set-buffer (clone-buffer (concat "*info-" (if (stringp fork) fork nodename) "*") t))) ! (if (member (buffer-name) '("*info-history*" "*info-tree*")) (switch-to-buffer "*info*")) (let (filename) (string-match "\\s *\\((\\s *\\([^\t)]*\\)\\s *)\\s *\\|\\)\\(.*\\)" *************** *** 1327,1335 **** (widen) (goto-char marker) (while (re-search-forward "\n\\(Node\\|Ref\\): \\(.*\\)\177" nil t) (setq compl (cons (list (match-string-no-properties 2)) ! compl)))) (widen) (goto-char (point-min)) ;; If the buffer begins with a node header, process that first. --- 1323,1332 ---- (widen) (goto-char marker) (while (re-search-forward "\n\\(Node\\|Ref\\): \\(.*\\)\177" nil t) + (or (string-equal "Ref" (match-string 1)) (setq compl (cons (list (match-string-no-properties 2)) ! compl))))) (widen) (goto-char (point-min)) ;; If the buffer begins with a node header, process that first. *************** *** 1361,1366 **** --- 1358,1366 ---- (defvar Info-search-history nil "The history list for `Info-search'.") + (defvar Info-search-case-fold nil + "The value of `case-fold-search' from previous `Info-search' command.") + (defun Info-search (regexp) "Search for REGEXP, starting from point, and select node it's found in." (interactive (list (read-string *************** *** 1380,1385 **** --- 1380,1389 ---- (opoint (point)) (ostart (window-start)) (osubfile Info-current-subfile)) + (when Info-search-whitespace-regexp + (setq regexp (replace-regexp-in-string + "[ \t\n]+" Info-search-whitespace-regexp regexp))) + (setq Info-search-case-fold case-fold-search) (save-excursion (save-restriction (widen) *************** *** 1456,1468 **** (setq Info-history (cons (list ofile onode opoint) Info-history)))))) (defun Info-search-next () "Search for next regexp from a previous `Info-search' command." (interactive) (if Info-search-history (Info-search (car Info-search-history)) ! ;; If no history then read search string in Info-search ! (call-interactively 'Info-search))) \f (defun Info-extract-pointer (name &optional errorname) "Extract the value of the node-pointer named NAME. --- 1460,1478 ---- (setq Info-history (cons (list ofile onode opoint) Info-history)))))) + (defun Info-search-case-sensitively () + "Search for a regexp case-sensitively." + (interactive) + (let ((case-fold-search nil)) + (call-interactively 'Info-search))) + (defun Info-search-next () "Search for next regexp from a previous `Info-search' command." (interactive) + (let ((case-fold-search Info-search-case-fold)) (if Info-search-history (Info-search (car Info-search-history)) ! (call-interactively 'Info-search)))) \f (defun Info-extract-pointer (name &optional errorname) "Extract the value of the node-pointer named NAME. *************** *** 1514,1525 **** "Go to the superior node of this node. If SAME-FILE is non-nil, do not move to a different Info file." (interactive) ! (let ((node (Info-extract-pointer "up"))) (and (or same-file (not (stringp Info-current-file))) (string-match "^(" node) (error "Up node is in another Info file")) ! (Info-goto-node node)) ! (Info-restore-point Info-history)) (defun Info-last () "Go back to the last node visited." --- 1524,1547 ---- "Go to the superior node of this node. If SAME-FILE is non-nil, do not move to a different Info file." (interactive) ! (let ((old-node Info-current-node) ! (old-file Info-current-file) ! (node (Info-extract-pointer "up")) p) (and (or same-file (not (stringp Info-current-file))) (string-match "^(" node) (error "Up node is in another Info file")) ! (Info-goto-node node) ! (setq p (point)) ! (goto-char (point-min)) ! (if (and (search-forward "\n* Menu:" nil t) ! (re-search-forward ! (if (string-equal old-node "Top") ! (concat "\n\\*.+: (" (file-name-nondirectory old-file) ")") ! (concat "\n\\* +" old-node ":")) ! nil t)) ! (beginning-of-line) ! (goto-char p) ! (Info-restore-point Info-history)))) (defun Info-last () "Go back to the last node visited." *************** *** 1535,1587 **** (setq Info-history (cdr Info-history)) (goto-char opoint))) ;;;###autoload (add-hook 'same-window-buffer-names "*info-history*") ! (defun Info-history-buffer (&optional tree-p) ! "Create the buffer *info-history* with references to visited nodes. ! Optional argument TREE-P creates a tree of nodes; the default ! creates the plain list of nodes." ! (interactive "P") ! (let ((curr-node Info-history-node) p) (pop-to-buffer (with-current-buffer (get-buffer-create "*info-history*") ! (let ((Info-hide-note-references t) ! (Info-visited-nodes t) ! (inhibit-read-only t)) (erase-buffer) (goto-char (point-min)) ! (setq p (Info-insert-history-tree -1 0 (or curr-node 0) tree-p)) ! (if (not (bobp)) (Info-fontify-node)) (or (eq major-mode 'Info-mode) (Info-mode)) ! (let ((Info-current-file "history") ! (Info-current-node "History")) ! (Info-set-mode-line)) (current-buffer)))) (goto-char (or p (point-min))))) ! (defun Info-insert-history-tree (index indent curr-node tree-p) ! "Insert the tree or list of references to visited nodes. ! Return the position of the current node on the generated tree." ! (let ((tree Info-history-tree) ! (i 0) p) ! (while tree ! (when (or (null tree-p) (eq (nth 2 (car tree)) index)) ! (if tree-p (insert (make-string indent ?\040))) ! (if (eq i curr-node) (setq p (point))) ! (insert "*Note " (nth 1 (car tree)) ": (" ! (file-name-nondirectory (nth 0 (car tree))) ! ")" (nth 1 (car tree)) ".\n") ! (if tree-p (setq p (or (Info-insert-history-tree ! i (1+ indent) curr-node tree-p) p)))) ! (setq tree (cdr tree) i (1+ i))) ! p)) ! ;;;###autoload ! (defun Info-directory () ! "Go to the Info directory node." (interactive) ! (Info-find-node "dir" "top")) \f (defun Info-follow-reference (footnotename &optional fork) "Follow cross reference named FOOTNOTENAME to the node it refers to. --- 1557,1758 ---- (setq Info-history (cdr Info-history)) (goto-char opoint))) + + ;;;###autoload + (defun Info-directory () + "Go to the Info directory node." + (interactive) + (Info-find-node "dir" "top")) + \f ;;;###autoload (add-hook 'same-window-buffer-names "*info-history*") ! (defun Info-history-buffer () ! "Create the buffer *info-history* with references to visited nodes." ! (interactive) ! (let ((curr-file Info-current-file) ! (curr-node Info-current-node) p) (pop-to-buffer (with-current-buffer (get-buffer-create "*info-history*") ! (let ((inhibit-read-only t)) (erase-buffer) (goto-char (point-min)) ! (insert "Node: History\n\n* Menu:\n\n") ! (let ((hl Info-history-list)) ! (while hl ! (let ((file (nth 0 (car hl))) ! (node (nth 1 (car hl)))) ! (if (and (equal file curr-file) ! (string-equal node curr-node)) ! (setq p (point))) ! (insert "* " node ": (" (file-name-nondirectory file) ! ")" node ".\n")) ! (setq hl (cdr hl)))) (or (eq major-mode 'Info-mode) (Info-mode)) ! (setq Info-current-file "info-history") ! (setq Info-current-node "Info History") ! (Info-set-mode-line) ! (if (not (bobp)) (Info-fontify-node)) (current-buffer)))) (goto-char (or p (point-min))))) ! ;;;###autoload (add-hook 'same-window-buffer-names "*info-tree*") ! (defun Info-node-tree-buffer () ! "Create the buffer *info-tree* with Info node tree." (interactive) ! (let ((curr-file Info-current-file) ! (curr-node Info-current-node) ! p) ! (pop-to-buffer ! (with-current-buffer (get-buffer-create "*info-tree*") ! (if (not (equal Info-current-file curr-file)) ! (let ((inhibit-read-only t) ! (node-list (Info-node-tree-collect-menus curr-file))) ! (erase-buffer) ! (goto-char (point-min)) ! (insert "Node: Node Tree\n\n") ! (Info-node-tree-insert ! (delq nil (mapcar (lambda (node) ! (if (nth 1 node) ! (nth 0 node))) node-list)) ! node-list 0) ! (set (make-local-variable 'Info-current-file) curr-file) ! (or (eq major-mode 'Info-mode) (Info-mode)) ! (setq Info-current-node "Info Node Tree") ! (Info-set-mode-line))) ! (if (not (bobp)) ! (let ((Info-hide-note-references 'hide)) ! (Info-fontify-node))) ! (goto-char (point-min)) ! (if (setq p (search-forward (concat "*Note " curr-node "::") nil t)) ! (setq p (- p (length curr-node) 8))) (current-buffer))) ! (goto-char (or p (point-min))))) ! ! (defun Info-node-tree-insert (nodes node-list level) ! "Insert the node tree of references to nodes." ! (while nodes ! (insert (make-string (* level 4) ?\040)) ! (insert "*Note " (car nodes) "::\n") ! (Info-node-tree-insert (nth 2 (assoc (car nodes) node-list)) ! node-list ! (1+ level)) ! (setq nodes (cdr nodes)))) ! ! (defvar Info-node-tree-section-names nil ! "Global variable to hold association list during data collection. ! The elements of list are (\"section name\" . \"node name\").") ! ! (defun Info-node-tree-collect-menus (filename) ! "Collect all node names and subnodes from current Info file." ! (save-excursion ! (let ((res)) ! (set-buffer (get-buffer-create " *info-node-tree*")) ! (or (eq major-mode 'Info-mode) (Info-mode)) ! (Info-find-node filename "Top") ! (setq Info-node-tree-section-names '(("Top" "Top"))) ! ;; Read menus from info file of Top node ! ;; (setq res (Info-node-tree-collect-menus-current)) ! ;; Read menus from info subfiles ! (let ((list ()) ! (osubfile )) ! ;; Get list of subfiles (code borrowed from `Info-search') ! (save-excursion ! (set-buffer (marker-buffer Info-tag-table-marker)) ! (goto-char (point-min)) ! (if (search-forward "\n\^_\nIndirect:" nil t) ! (save-restriction ! (narrow-to-region (point) ! (progn (search-forward "\n\^_") ! (1- (point)))) ! (goto-char (point-min)) ! (beginning-of-line) ! (while (not (eobp)) ! (re-search-forward "\\(^.*\\): [0-9]+$") ! (goto-char (+ (match-end 1) 2)) ! (setq list (cons (cons (read (current-buffer)) ! (buffer-substring-no-properties ! (match-beginning 1) (match-end 1))) ! list)) ! (goto-char (1+ (match-end 0)))) ! (setq list (nreverse list) ! list (cdr list))))) ! (while list ! (message "Searching subfile %s..." (cdr (car list))) ! (Info-read-subfile (car (car list))) ! (setq res (append (Info-node-tree-collect-menus-current) res)) ! (setq list (cdr list))) ! (nreverse res))))) ! ! (defun Info-node-tree-collect-menus-current () ! "Return list of menus extracted from current Info file. ! Return all nodes, even those that are not accessible from menus. ! Output: ((\"nodename1\",\"sectname1\",(\"subnode2\",\"subnode3\")))." ! (let ((res)) ! (save-excursion ! (save-restriction ! (widen) ! (goto-char (point-min)) ! (while (and (search-forward "\n\^_\nFile:" nil 'move) ! (search-forward "Node: " nil 'move)) ! (let (nodename section-name menu-items index-items ref-items beg bound) ! (setq nodename (substring-no-properties (Info-following-node-name))) ! (forward-line 1) ! (setq beg (point)) ! (search-forward "\n\^_" nil 'move) ! (beginning-of-line) ! (forward-line -1) ! (setq bound (point)) ! (goto-char beg) ! (when (re-search-forward "^\\* Menu:" bound t) ! (forward-line 1) ! (beginning-of-line) ! (cond ! ((equal nodename "Top") ! (while (and (< (point) bound) ! (not (looking-at "^[ \t]*-+ The Detailed Node Listing"))) ! (cond ! ;; Menu line ! ((looking-at "^\\* +\\([^:\t\n]*\\):") ! (beginning-of-line) ! (forward-char 2) ! (let ((menu-node-name (substring-no-properties (Info-extract-menu-node-name)))) ! (setq menu-items ! (cons menu-node-name ;; (list menu-node-name section-name) ! ;; (match-string-no-properties 1) ! menu-items)) ! (setq Info-node-tree-section-names ! (cons (list menu-node-name (or section-name "Top")) ! Info-node-tree-section-names)))) ! ;; Other non-empty strings in the dir buffer are section names ! ((looking-at "^\\([^ \t\n][^:\n]*\\)") ! (setq section-name (match-string-no-properties 1)))) ! (forward-line 1) ! (beginning-of-line))) ! ((string-match "Index" nodename) ! ;; Accept index menu items, e.g.: ! ;; * forward-list: List Motion. ! (while (re-search-forward "\n\\* +\\([^:\t\n]*\\):" bound t) ! (beginning-of-line) ! (forward-char 2) ! (setq index-items (cons (substring-no-properties (Info-extract-menu-node-name)) ! ;; (match-string-no-properties 1) ! index-items)))) ! (t ! (while (re-search-forward "\n\\* +\\([^:\t\n]*\\):" bound t) ! (beginning-of-line) ! (forward-char 2) ! (setq menu-items (cons (substring-no-properties (Info-extract-menu-node-name)) ! ;; (match-string-no-properties 1) ! menu-items)))))) ! (setq res (cons (list nodename ! (cadr (assoc nodename Info-node-tree-section-names)) ! (if (not (equal nodename "Top")) ; hack ! (nreverse menu-items)) ! (nreverse index-items)) ! res)) ! (goto-char bound))))) ! res)) \f (defun Info-follow-reference (footnotename &optional fork) "Follow cross reference named FOOTNOTENAME to the node it refers to. *************** *** 1650,1661 **** (setq str (concat (substring str 0 i) "[ \t\n]+" (substring str (1+ i)))) (setq i (+ i 6))) (save-excursion ! (goto-char (point-min)) ! (or (re-search-forward str nil t) ! (error "No cross-reference named %s" footnotename)) ! (goto-char (+ (match-beginning 0) 5)) ! (setq target ! (Info-extract-menu-node-name t))) (while (setq i (string-match "[ \t\n]+" target i)) (setq target (concat (substring target 0 i) " " (substring target (match-end 0)))) --- 1821,1848 ---- (setq str (concat (substring str 0 i) "[ \t\n]+" (substring str (1+ i)))) (setq i (+ i 6))) (save-excursion ! ;; Move point to the beginning of reference if point is on reference ! (or (looking-at "\\*note[ \n\t]*") ! (and (looking-back "\\*note[ \n\t]*") ! (goto-char (match-beginning 0))) ! (if (and (save-excursion ! (goto-char (+ (point) 5)) ; skip a possible *note ! (search-backward "\*note " nil t) ! (looking-at (concat "\\*note " (Info-following-node-name-re)))) ! (<= (point) (match-end 0))) ! (goto-char (match-beginning 0)))) ! ;; Go to the reference closest to point ! (let ((next-ref (save-excursion (and (re-search-forward str nil t) ! (+ (match-beginning 0) 5)))) ! (prev-ref (save-excursion (and (re-search-backward str nil t) ! (+ (match-beginning 0) 5))))) ! (goto-char (cond ((and next-ref prev-ref) ! (if (< (abs (- next-ref (point))) ! (abs (- prev-ref (point)))) ! next-ref prev-ref)) ! ((or next-ref prev-ref)) ! ((error "No cross-reference named %s" footnotename)))) ! (setq target (Info-extract-menu-node-name t)))) (while (setq i (string-match "[ \t\n]+" target i)) (setq target (concat (substring target 0 i) " " (substring target (match-end 0)))) *************** *** 2067,2073 **** (defun Info-next-reference (&optional recur) "Move cursor to the next cross-reference or menu item in the node." (interactive) ! (let ((pat "\\*note[ \n\t]*\\([^:]*\\):\\|^\\* .*:\\|http://") (old-pt (point)) (case-fold-search t)) (or (eobp) (forward-char 1)) --- 2254,2260 ---- (defun Info-next-reference (&optional recur) "Move cursor to the next cross-reference or menu item in the node." (interactive) ! (let ((pat "\\*note[ \n\t]*\\([^:]*\\):\\|^\\* .*:\\|[hf]t?tp://") (old-pt (point)) (case-fold-search t)) (or (eobp) (forward-char 1)) *************** *** 2079,2084 **** --- 2266,2273 ---- (goto-char old-pt) (error "No cross references in this node"))))) (goto-char (match-beginning 0)) + (if (looking-at "\\*note[ \n\t]*") + (forward-char (- (match-end 0) (match-beginning 0)))) (if (looking-at "\\* Menu:") (if recur (error "No cross references in this node") *************** *** 2087,2093 **** (defun Info-prev-reference (&optional recur) "Move cursor to the previous cross-reference or menu item in the node." (interactive) ! (let ((pat "\\*note[ \n\t]*\\([^:]*\\):\\|^\\* .*:\\|http://") (old-pt (point)) (case-fold-search t)) (or (re-search-backward pat nil t) --- 2276,2282 ---- (defun Info-prev-reference (&optional recur) "Move cursor to the previous cross-reference or menu item in the node." (interactive) ! (let ((pat "\\*note[ \n\t]*\\([^:]*\\):\\|^\\* .*:\\|[hf]t?tp://") (old-pt (point)) (case-fold-search t)) (or (re-search-backward pat nil t) *************** *** 2098,2103 **** --- 2287,2294 ---- (goto-char old-pt) (error "No cross references in this node"))))) (goto-char (match-beginning 0)) + (if (looking-at "\\*note[ \n\t]*") + (forward-char (- (match-end 0) (match-beginning 0)))) (if (looking-at "\\* Menu:") (if recur (error "No cross references in this node") *************** *** 2331,2337 **** "Follow a node reference near point. Return non-nil if successful." (let (node) (cond ! ((and (Info-get-token (point) "http://" "\\(http://\\)") (or (featurep 'browse-url) (require 'browse-url nil t))) (setq node t) (browse-url (browse-url-url-at-point))) --- 2522,2528 ---- "Follow a node reference near point. Return non-nil if successful." (let (node) (cond ! ((and (Info-get-token (point) "[hf]t?tp://" "[hf]t?tp://\\([^ \t\n\"`({<>})']+\\)") (or (featurep 'browse-url) (require 'browse-url nil t))) (setq node t) (browse-url (browse-url-url-at-point))) *************** *** 2345,2351 **** (Info-goto-node node fork)) ;; menu item: index entry ((Info-get-token (point) "\\* +" "\\* +\\(.*\\): ") ! (setq Info-reference-name (match-string-no-properties 1)) (beginning-of-line) (forward-char 2) (setq node (Info-extract-menu-node-name)) --- 2536,2543 ---- (Info-goto-node node fork)) ;; menu item: index entry ((Info-get-token (point) "\\* +" "\\* +\\(.*\\): ") ! (or (member Info-current-file '("dir" "info-history")) ! (setq Info-reference-name (match-string-no-properties 1))) (beginning-of-line) (forward-char 2) (setq node (Info-extract-menu-node-name)) *************** *** 2401,2412 **** --- 2593,2607 ---- (define-key Info-mode-map "p" 'Info-prev) (define-key Info-mode-map "q" 'Info-exit) (define-key Info-mode-map "s" 'Info-search) + (define-key Info-mode-map "S" 'Info-search-case-sensitively) + (define-key Info-mode-map "/" 'Info-search-next) (define-key Info-mode-map "\M-s" 'Info-search-next) (define-key Info-mode-map "\M-n" 'clone-buffer) (define-key Info-mode-map "t" 'Info-top-node) (define-key Info-mode-map "u" 'Info-up) (define-key Info-mode-map "," 'Info-index-next) (define-key Info-mode-map "\\" 'Info-history-buffer) + (define-key Info-mode-map "*" 'Info-node-tree-buffer) (define-key Info-mode-map "\177" 'Info-scroll-down) (define-key Info-mode-map [mouse-2] 'Info-mouse-follow-nearest-node) ) *************** *** 2441,2454 **** ("Reference" ["You should never see this" report-emacs-bug t]) ["Search..." Info-search :help "Search for regular expression in this Info file"] ["Search Next" Info-search-next :help "Search for another occurrence of regular expression"] ["Go to Node..." Info-goto-node :help "Go to a named node"] ["Last (Back)" Info-last :active Info-history :help "Go to the last node you were at"] ! ["History" Info-history-buffer :active Info-history-tree :help "Go to the history buffer"] ("Index..." ["Lookup a String" Info-index :help "Look for a string in the index items"] --- 2636,2653 ---- ("Reference" ["You should never see this" report-emacs-bug t]) ["Search..." Info-search :help "Search for regular expression in this Info file"] + ["Search Case-Sensitively..." Info-search-case-sensitively + :help "Search for regular expression case sensitively"] ["Search Next" Info-search-next :help "Search for another occurrence of regular expression"] ["Go to Node..." Info-goto-node :help "Go to a named node"] ["Last (Back)" Info-last :active Info-history :help "Go to the last node you were at"] ! ["History" Info-history-buffer :active Info-history-list :help "Go to the history buffer"] + ["Node Tree" Info-node-tree-buffer + :help "Go to the node tree buffer"] ("Index..." ["Lookup a String" Info-index :help "Look for a string in the index items"] *************** *** 2587,2592 **** --- 2786,2792 ---- \\[Info-follow-reference] Follow a cross reference. Reads name of reference. \\[Info-last] Move to the last node you were at. \\[Info-history-buffer] Go to the history buffer. + \\[Info-node-tree-buffer] Go to the node tree buffer. \\[Info-index] Look up a topic in this file's Index and move to that node. \\[Info-index-next] (comma) Move to the next match from a previous `i' command. \\[Info-top-node] Go to the Top node of this file. *************** *** 2615,2620 **** --- 2815,2822 ---- \\[universal-argument] \\[info] Move to new Info file with completion. \\[Info-search] Search through this Info file for specified regexp, and select the node in which the next occurrence is found. + \\[Info-search-case-sensitively] Search through this Info file + for specified regexp case-sensitively. \\[Info-search-next] Search for another occurrence of regexp from a previous `Info-search' command. \\[Info-next-reference] Move cursor to next cross-reference or menu item. *************** *** 2637,2643 **** (make-local-variable 'Info-tag-table-buffer) (setq Info-tag-table-buffer nil) (make-local-variable 'Info-history) - (make-local-variable 'Info-history-node) (make-local-variable 'Info-index-alternatives) (setq header-line-format (if Info-use-header-line --- 2839,2844 ---- *************** *** 2907,2923 **** (push (substring string start end) matches) (apply #'concat (nreverse matches))))) - (defun Info-fontify-menu-headers () - "Add the face `info-menu-header' to any header before a menu entry." - (save-excursion - (goto-char (point-min)) - (when (re-search-forward "^\\* Menu:" nil t) - (put-text-property (match-beginning 0) (match-end 0) - 'font-lock-face 'info-menu-header) - (while (re-search-forward "\n\n\\([^*\n ].*\\)\n\n?[*]" nil t) - (put-text-property (match-beginning 1) (match-end 1) - 'font-lock-face 'info-menu-header))))) - (defvar Info-next-link-keymap (let ((keymap (make-sparse-keymap))) (define-key keymap [header-line mouse-1] 'Info-next) --- 3108,3113 ---- *************** *** 2947,2963 **** "Keymap to put on the Up link in the text or the header line.") (defun Info-fontify-node () ! ;; Only fontify the node if it hasn't already been done ! ;; or always fontify visited nodes (because of their dynamic nature). ! (when (or Info-visited-nodes ! (not (let ((where (next-property-change (point-min)))) ! (and where (not (= where (point-max))))))) (save-excursion ! (let ((inhibit-read-only t) (case-fold-search t) ! paragraph-markers) (goto-char (point-min)) ! (when (looking-at "^\\(File: [^,: \t]+,?[ \t]+\\)?") (goto-char (match-end 0)) (while (looking-at "[ \t]*\\([^:, \t\n]+\\):[ \t]+\\([^:,\t\n]+\\),?") (goto-char (match-end 0)) --- 3137,3158 ---- "Keymap to put on the Up link in the text or the header line.") (defun Info-fontify-node () ! "Fontify the node." (save-excursion ! (let* ((inhibit-read-only t) (case-fold-search t) ! paragraph-markers ! (not-fontified-p ; the node hasn't already been fontified ! (not (let ((where (next-property-change (point-min)))) ! (and where (not (= where (point-max))))))) ! (fontify-visited-p ; visited nodes need to be re-fontified ! (and Info-visited-nodes ! ;; Don't take time to refontify visited nodes in huge nodes ! (< (- (point-max) (point-min)) Info-fontify-maximum-menu-size)))) ! ! ;; Fontify header line (goto-char (point-min)) ! (when (and not-fontified-p (looking-at "^\\(File: [^,: \t]+,?[ \t]+\\)?")) (goto-char (match-end 0)) (while (looking-at "[ \t]*\\([^:, \t\n]+\\):[ \t]+\\([^:,\t\n]+\\),?") (goto-char (match-end 0)) *************** *** 3009,3015 **** --- 3203,3212 ---- ;; Hide the punctuation at the end, too. (skip-chars-backward " \t,") (put-text-property (point) header-end 'invisible t))))) + + ;; Fontify titles (goto-char (point-min)) + (when not-fontified-p (while (re-search-forward "\n\\([^ \t\n].+\\)\n\\(\\*+\\|=+\\|-+\\|\\.+\\)$" nil t) (let* ((c (preceding-char)) *************** *** 3025,3105 **** ;; on frames that can display the font above. (when (memq (framep (selected-frame)) '(x pc w32 mac)) (add-text-properties (1- (match-beginning 2)) (match-end 2) ! '(invisible t front-sticky nil rear-nonsticky t)))) (goto-char (point-min)) ! (while (re-search-forward "\\(\\*Note[ \t]*\\)\n?[ \t]*\\([^:]*\\)\\(:[^.,:(]*\\((\\([^)]*\\))\\([^.,:]*\\)\\)?[,:]?\n?\\)" nil t) (unless (memq (char-after (1- (match-beginning 0))) '(?\" ?\`)) ; hack (let ((start (match-beginning 0)) ! ;; (next (point)) ! ;; other-tag ! ) (when Info-hide-note-references ! ;; ;; *Note is often used where *note should have been ! ;; (goto-char start) ! ;; (skip-syntax-backward " ") ! ;; (setq other-tag ! ;; (cond ((memq (char-before) '(nil ?\. ?! ??)) ! ;; "See ") ! ;; ((memq (char-before) '(?\, ?\; ?\: ?-)) ! ;; "see ") ! ;; ((memq (char-before) '(?\( ?\[ ?\{)) ! ;; ;; Check whether the paren is preceded by ! ;; ;; an end of sentence ! ;; (skip-syntax-backward " (") ! ;; (if (memq (char-before) '(nil ?\. ?! ??)) ! ;; "See " ! ;; "see ")) ! ;; ((save-match-data (looking-at "\n\n")) ! ;; "See "))) ! ;; (goto-char next) ! (add-text-properties (match-beginning 1) (match-end 1) ! '(invisible t front-sticky nil rear-nonsticky t))) (add-text-properties (match-beginning 2) (match-end 2) (list ! 'help-echo (if (match-end 4) ! (concat "mouse-2: go to " (match-string 4)) "mouse-2: go to this node") 'font-lock-face ;; Display visited nodes in a different face ! (if (and Info-visited-nodes ! (save-match-data ! (let* ((file (concat (or (match-string 5) Info-current-file) "$")) (node (replace-regexp-in-string "[ \t\n]+" " " ! (or (match-string 6) (match-string 2)))) ! (l Info-history-tree) res) ! (while l ! (if (and (equal (cadr (car l)) node) ! (string-match file (caar l))) ! (setq res (car l) l nil)) ! (setq l (cdr l))) ! res))) 'info-xref-visited 'info-xref) ! 'mouse-face 'highlight)) ! (when (eq Info-hide-note-references t) (add-text-properties (match-beginning 3) (match-end 3) '(invisible t front-sticky nil rear-nonsticky t)) ;; Unhide the file name of the reference in parens ! (if (match-string 5) ! (remove-text-properties (1- (match-beginning 5)) (1+ (match-end 5)) '(invisible t front-sticky nil rear-nonsticky t))) ;; Unhide newline because hidden newlines cause too long lines (save-match-data (let ((start3 (match-beginning 3))) (if (string-match "\n[ \t]*" (match-string 3)) (remove-text-properties (+ start3 (match-beginning 0)) (+ start3 (match-end 0)) ! '(invisible t front-sticky nil rear-nonsticky t))))) ! ) ! ;; (when other-tag ! ;; (save-excursion ! ;; (goto-char (match-beginning 1)) ! ;; (insert other-tag))) (when (and Info-refill-paragraphs Info-hide-note-references) (push (set-marker (make-marker) start) ! paragraph-markers))))) ! (when (and Info-refill-paragraphs paragraph-markers) (let ((fill-nobreak-invisible t) (fill-individual-varying-indent nil) --- 3222,3313 ---- ;; on frames that can display the font above. (when (memq (framep (selected-frame)) '(x pc w32 mac)) (add-text-properties (1- (match-beginning 2)) (match-end 2) ! '(invisible t front-sticky nil rear-nonsticky t))))) ! ! ;; Fontify cross references (goto-char (point-min)) ! (when (or not-fontified-p fontify-visited-p) ! (while (re-search-forward "\\(\\*Note[ \t]*\\)\n?[ \t]*\\([^:]*\\)\\(:[ \t]*\\([^.,:(]*\\)\\((\\([^)]*\\))\\([^.,:]*\\)\\)?[,:]?\n?\\)" nil t) (unless (memq (char-after (1- (match-beginning 0))) '(?\" ?\`)) ; hack (let ((start (match-beginning 0)) ! (next (point)) ! other-tag) ! (when not-fontified-p (when Info-hide-note-references ! ;; *Note is often used where *note should have been ! (goto-char start) ! (skip-syntax-backward " ") ! (setq other-tag ! (cond ((memq (char-before) '(nil ?\. ?! ??)) ! "See ") ! ((memq (char-before) '(?\, ?\; ?\: ?-)) ! "see ") ! ((memq (char-before) '(?\( ?\[ ?\{)) ! ;; Check whether the paren is preceded by ! ;; an end of sentence ! (skip-syntax-backward " (") ! (if (memq (char-before) '(nil ?\. ?! ??)) ! "See " ! "see ")) ! ((save-match-data (looking-at "\n\n")) ! "See "))) ! (goto-char next) ! (add-text-properties ! (match-beginning 1) (match-end 1) ! (if (and other-tag (not (eq Info-hide-note-references 'hide))) ! `(display ,other-tag front-sticky nil rear-nonsticky t) ! '(invisible t front-sticky nil rear-nonsticky t)))) (add-text-properties (match-beginning 2) (match-end 2) (list ! 'help-echo (if (or (match-end 5) (not (equal (match-string 4) ""))) ! (concat "mouse-2: go to " (or (match-string 5) (match-string 4))) "mouse-2: go to this node") + 'mouse-face 'highlight))) + (when (or not-fontified-p fontify-visited-p) + (add-text-properties + (match-beginning 2) (match-end 2) + (list 'font-lock-face ;; Display visited nodes in a different face ! (if (save-match-data ! (let* ((file (concat (or (match-string 6) ! Info-current-file) "$")) (node (replace-regexp-in-string "[ \t\n]+" " " ! (or (match-string 7) ! (and (not (equal (match-string 4) "")) ! (match-string 4)) ! (match-string 2)))) ! (hl Info-history-list) res) ! (while hl ! (if (and (string-equal node (nth 1 (car hl))) ! (string-match file (nth 0 (car hl)))) ! (setq res (car hl) hl nil)) ! (setq hl (cdr hl))) ! res)) 'info-xref-visited 'info-xref)))) ! (when not-fontified-p ! (when (memq Info-hide-note-references '(t hide)) (add-text-properties (match-beginning 3) (match-end 3) '(invisible t front-sticky nil rear-nonsticky t)) ;; Unhide the file name of the reference in parens ! (if (match-string 6) ! (remove-text-properties (1- (match-beginning 6)) (1+ (match-end 6)) '(invisible t front-sticky nil rear-nonsticky t))) ;; Unhide newline because hidden newlines cause too long lines (save-match-data (let ((start3 (match-beginning 3))) (if (string-match "\n[ \t]*" (match-string 3)) (remove-text-properties (+ start3 (match-beginning 0)) (+ start3 (match-end 0)) ! '(invisible t front-sticky nil rear-nonsticky t)))))) (when (and Info-refill-paragraphs Info-hide-note-references) (push (set-marker (make-marker) start) ! paragraph-markers))))))) ! ;; Refill paragraphs (experimental feature) ! (when (and not-fontified-p ! Info-refill-paragraphs paragraph-markers) (let ((fill-nobreak-invisible t) (fill-individual-varying-indent nil) *************** *** 3119,3126 **** (goto-char beg)))) (set-marker m nil))))) (goto-char (point-min)) ! (when (and (search-forward "\n* Menu:" nil t) (not (string-match "\\<Index\\>" Info-current-node)) ;; Don't take time to annotate huge menus (< (- (point-max) (point)) Info-fontify-maximum-menu-size)) --- 3327,3336 ---- (goto-char beg)))) (set-marker m nil))))) + ;; Fontify menu items (goto-char (point-min)) ! (when (and (or not-fontified-p fontify-visited-p) ! (search-forward "\n* Menu:" nil t) (not (string-match "\\<Index\\>" Info-current-node)) ;; Don't take time to annotate huge menus (< (- (point-max) (point)) Info-fontify-maximum-menu-size)) *************** *** 3130,3164 **** (concat "^\\* +\\(" Info-menu-entry-name-re "\\)\\(:" Info-node-spec-re "\\([ \t]*\\)\\)") nil t) (setq n (1+ n)) (if (and (<= n 9) (zerop (% n 3))) ; visual aids to help with 1-9 keys (put-text-property (match-beginning 0) (1+ (match-beginning 0)) ! 'font-lock-face 'info-menu-5)) (add-text-properties (match-beginning 1) (match-end 1) (list 'help-echo (if (match-end 3) (concat "mouse-2: go to " (match-string 3)) "mouse-2: go to this node") 'font-lock-face ! ;; Display visited nodes in a different face ! (if (and Info-visited-nodes (let ((node (if (equal (match-string 3) "") (match-string 1) (match-string 3))) ! (l Info-history-tree) res) ! (while l ! (if (and (equal (cadr (car l)) node) ! (equal Info-current-file (caar l))) ! (setq res (car l) l nil)) ! (setq l (cdr l))) ! res)) 'info-xref-visited 'info-xref) ! 'mouse-face 'highlight)) ! (when (eq Info-hide-note-references t) (put-text-property (match-beginning 2) (1- (match-end 6)) 'invisible t) ;; We need a stretchable space like :align-to but with ;; a minimum value. (put-text-property (1- (match-end 6)) (match-end 6) 'display --- 3340,3388 ---- (concat "^\\* +\\(" Info-menu-entry-name-re "\\)\\(:" Info-node-spec-re "\\([ \t]*\\)\\)") nil t) + (when not-fontified-p (setq n (1+ n)) (if (and (<= n 9) (zerop (% n 3))) ; visual aids to help with 1-9 keys (put-text-property (match-beginning 0) (1+ (match-beginning 0)) ! 'font-lock-face 'info-menu-5))) ! (when not-fontified-p (add-text-properties (match-beginning 1) (match-end 1) (list 'help-echo (if (match-end 3) (concat "mouse-2: go to " (match-string 3)) "mouse-2: go to this node") + 'mouse-face 'highlight))) + (when (or not-fontified-p fontify-visited-p) + (add-text-properties + (match-beginning 1) (match-end 1) + (list 'font-lock-face ! ;; Display visited menu items in a different face ! (if (save-match-data (let ((node (if (equal (match-string 3) "") (match-string 1) (match-string 3))) ! (file (concat Info-current-file "$")) ! (hl Info-history-list) res) ! (if (string-match "(\\([^)]+\\))" node) ! (setq file (concat (match-string 1 node) "$") ! node "Top")) ! (while hl ! (if (and (string-equal node (nth 1 (car hl))) ! (string-match file (nth 0 (car hl)))) ! (setq res (car hl) hl nil)) ! (setq hl (cdr hl))) ! res)) 'info-xref-visited 'info-xref)))) ! (when (and not-fontified-p (memq Info-hide-note-references '(t hide))) (put-text-property (match-beginning 2) (1- (match-end 6)) 'invisible t) + ;; Unhide the file name in parens + (if (and (match-end 4) (not (eq (char-after (match-end 4)) ?.))) + (remove-text-properties (match-beginning 4) (match-end 4) + '(invisible t))) ;; We need a stretchable space like :align-to but with ;; a minimum value. (put-text-property (1- (match-end 6)) (match-end 6) 'display *************** *** 3178,3192 **** '(space :align-to 24))) (setq cont t)))))) (goto-char (point-min)) ! (while (re-search-forward "http://[-~/[:alnum:]_.${}#%,:?=&]+" nil t) (add-text-properties (match-beginning 0) (match-end 0) '(font-lock-face info-xref mouse-face highlight ! help-echo "mouse-2: go to this URL"))) ! (Info-fontify-menu-headers) ! (set-buffer-modified-p nil))))) \f ;; When an Info buffer is killed, make sure the associated tags buffer --- 3402,3426 ---- '(space :align-to 24))) (setq cont t)))))) + ;; Add the face `info-xref' to http links (goto-char (point-min)) ! (when not-fontified-p ! (while (re-search-forward "[hf]t?tp://[^ \t\n\"`({<>})']+" nil t) (add-text-properties (match-beginning 0) (match-end 0) '(font-lock-face info-xref mouse-face highlight ! help-echo "mouse-2: go to this URL")))) ! ! ;; Add the face `info-menu-header' to any header before a menu entry ! (goto-char (point-min)) ! (when (and not-fontified-p (re-search-forward "^\\* Menu:" nil t)) ! (put-text-property (match-beginning 0) (match-end 0) ! 'font-lock-face 'info-menu-header) ! (while (re-search-forward "\n\n\\([^*\n ].*\\)\n\n?[*]" nil t) ! (put-text-property (match-beginning 1) (match-end 1) ! 'font-lock-face 'info-menu-header))) ! (set-buffer-modified-p nil)))) \f ;; When an Info buffer is killed, make sure the associated tags buffer =================================================================== -- http://www.jurta.org/emacs/ ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Info enhancements @ 2003-12-12 14:24 ` Karl Berry 2003-12-12 17:14 ` Eli Zaretskii 2003-12-12 21:38 ` Juri Linkov 0 siblings, 2 replies; 135+ messages in thread From: Karl Berry @ 2003-12-12 14:24 UTC (permalink / raw) Cc: emacs-devel Seems anchors are useful only for making references to them, not for selecting them from completion list. I don't see any a priori reason to suppose it's not useful to "g"o to an anchor. One document's anchor is another document's node. (I mean, the division into nodes vs. subnode positioning via anchors is a judgement call, not an absolute fact.) That said, I don't feel terribly strongly about whether "g" includes anchor names in possible completions or not. Standalone Info does. ... the reference names feature. I still think this feature is very useful especially for moving from indexes directly to lines where index items are described. This feature can be replaced later gradually by anchors as suggested by Luc. I don't understand. I thought that this required index entries to be used as the second or third arg of xrefs, and I am not aware of any manuals which make xrefs like that. Nor is that how @xref is intended to be used. Am I confused? Are you somehow implicitly inserting references to index definitions? The other changes seem good, as far as I understand them. (Discounting my aversion to Info-hide-note-references.) Thanks, karl ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Info enhancements 2003-12-12 14:24 ` Karl Berry @ 2003-12-12 17:14 ` Eli Zaretskii 2003-12-12 19:23 ` Stefan Monnier 2003-12-12 21:38 ` Juri Linkov 1 sibling, 1 reply; 135+ messages in thread From: Eli Zaretskii @ 2003-12-12 17:14 UTC (permalink / raw) Cc: juri, emacs-devel > Date: Fri, 12 Dec 2003 09:24:06 -0500 > From: karl@freefriends.org (Karl Berry) > > That said, I don't feel terribly strongly about whether "g" includes > anchor names in possible completions or not. Standalone Info does. Perhaps an Emacs option is in order. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Info enhancements 2003-12-12 17:14 ` Eli Zaretskii @ 2003-12-12 19:23 ` Stefan Monnier 2003-12-13 10:12 ` Eli Zaretskii 0 siblings, 1 reply; 135+ messages in thread From: Stefan Monnier @ 2003-12-12 19:23 UTC (permalink / raw) Cc: juri, emacs-devel, Karl Berry >> That said, I don't feel terribly strongly about whether "g" includes >> anchor names in possible completions or not. Standalone Info does. > Perhaps an Emacs option is in order. How do you spell overkill again? Stefan ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Info enhancements 2003-12-12 19:23 ` Stefan Monnier @ 2003-12-13 10:12 ` Eli Zaretskii 2003-12-13 23:15 ` Richard Stallman 0 siblings, 1 reply; 135+ messages in thread From: Eli Zaretskii @ 2003-12-13 10:12 UTC (permalink / raw) Cc: juri, emacs-devel, karl > From: Stefan Monnier <monnier@iro.umontreal.ca> > Date: 12 Dec 2003 14:23:04 -0500 > > >> That said, I don't feel terribly strongly about whether "g" includes > >> anchor names in possible completions or not. Standalone Info does. > > Perhaps an Emacs option is in order. > > How do you spell overkill again? It is spelled "whenever we are not sure which behavior to make the default, have an option so that users can decide." ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Info enhancements 2003-12-13 10:12 ` Eli Zaretskii @ 2003-12-13 23:15 ` Richard Stallman 0 siblings, 0 replies; 135+ messages in thread From: Richard Stallman @ 2003-12-13 23:15 UTC (permalink / raw) Cc: juri, karl, monnier, emacs-devel It is spelled "whenever we are not sure which behavior to make the default, have an option so that users can decide." Our principle is to add an option only if it seems important. Many issues are not important enough to justify one. If a few users really care, they can change the code. An option is useful when each alternative is preferred by many users. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Info enhancements 2003-12-12 14:24 ` Karl Berry 2003-12-12 17:14 ` Eli Zaretskii @ 2003-12-12 21:38 ` Juri Linkov 2003-12-13 15:17 ` Richard Stallman 2003-12-13 15:48 ` Eli Zaretskii 1 sibling, 2 replies; 135+ messages in thread From: Juri Linkov @ 2003-12-12 21:38 UTC (permalink / raw) Cc: emacs-devel karl@freefriends.org (Karl Berry) writes: > Seems anchors are useful only for making references to them, not for > selecting them from completion list. > > I don't see any a priori reason to suppose it's not useful to "g"o to an > anchor. One document's anchor is another document's node. (I mean, the > division into nodes vs. subnode positioning via anchors is a judgement > call, not an absolute fact.) > > That said, I don't feel terribly strongly about whether "g" includes > anchor names in possible completions or not. Standalone Info does. Since the name of the function bound to "g" is `Info-goto-node' and its documentation says that this function works only with nodes, so I thought that it's more correct to omit anchors from a list of node completions. I see no harm in removing anchors from a node list because all nodes still can be reached by the "g" command. Anchors only provide additional locations within one Info node. When Info file has many anchors it would be undesirable to overfill a node list with names that lead to the same Info node. I think anchors are only useful in references, for instance, as demonstrated recently by Luc: @xref{doc-hyperlinks, , Tips for Documentation Strings}. However, if there is need to go to anchors by selecting their names from a completion list, then possible solution is either to implement an additional command with an anchor completion list or to add anchor names to a completion list of the `Info-index' command because in fact anchors are more like index items than node names. > ... the reference names feature. I still think this feature is > very useful especially for moving from indexes directly to lines > where index items are described. This feature can be replaced > later gradually by anchors as suggested by Luc. > > I don't understand. I thought that this required index entries to be > used as the second or third arg of xrefs, and I am not aware of any > manuals which make xrefs like that. Nor is that how @xref is intended > to be used. Am I confused? Are you somehow implicitly inserting > references to index definitions? Actually I meant not xrefs but menu entries of Info index nodes, for instance, like this: * auto-fill-mode: Auto Fill. Currently, the `Info-index' command (`i') moves point to the place within a node where an index name is defined, but its functional equivalent - selecting an index from index menu still don't move point to the place where an index name is defined. This patch tries to improve this (but now it works only if index entries are selected by the `Info-follow-nearest-node', not by the `Info-menu', this can be implemented later). -- http://www.jurta.org/emacs/ ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Info enhancements 2003-12-12 21:38 ` Juri Linkov @ 2003-12-13 15:17 ` Richard Stallman 2003-12-16 2:14 ` Juri Linkov 2003-12-13 15:48 ` Eli Zaretskii 1 sibling, 1 reply; 135+ messages in thread From: Richard Stallman @ 2003-12-13 15:17 UTC (permalink / raw) Cc: emacs-devel, karl Since the name of the function bound to "g" is `Info-goto-node' and its documentation says that this function works only with nodes, so I thought that it's more correct to omit anchors from a list of node completions. I see no harm in letting it include anchors in completion, given that it does handle anchor names. We could rename it "Info-goto" to avoid the conflict between the name (which comes from a time before there were anchors) and the functionality (which reflects the existence of anchors). ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Info enhancements 2003-12-13 15:17 ` Richard Stallman @ 2003-12-16 2:14 ` Juri Linkov 2003-12-17 3:28 ` Richard Stallman 0 siblings, 1 reply; 135+ messages in thread From: Juri Linkov @ 2003-12-16 2:14 UTC (permalink / raw) Cc: emacs-devel, karl Richard Stallman <rms@gnu.org> writes: > I see no harm in letting it include anchors in completion, given that > it does handle anchor names. We could rename it "Info-goto" > to avoid the conflict between the name (which comes from a time > before there were anchors) and the functionality (which reflects > the existence of anchors). Yes, I remember that you already suggested two weeks ago to create a new function to go to any locator. This is the function that you suggest to name Info-goto. At the same time, Info-goto-node could be changed to go to node names only, and it makes sense to create also a new function Info-goto-anchor to go to anchors only. So, what do you think about this patch? It provides three functions Info-goto, Info-goto-node and Info-goto-anchor that differ only by their completion lists. I'm still unsure about keybindings to these functions. Maybe, "g" - for Info-goto-node, "G" - for Info-goto and no keybindings for Info-goto-anchor because Info-goto-anchor will be rarely used (actually, I added Info-goto-anchor because it was too easy to add it when a completion list creation function was changed to handle anchor and node names separately). =================================================================== *** emacs/lisp/info.el Fri Dec 12 03:29:35 2003 --- emacs/lisp/info.el Tue Dec 16 03:31:18 2003 *************** *** 227,233 **** "Buffer used for indirect tag tables.") (defvar Info-current-file-completions nil ! "Cached completion list for current Info file.") (defvar Info-index-alternatives nil "List of possible matches for last `Info-index' command.") --- 227,236 ---- "Buffer used for indirect tag tables.") (defvar Info-current-file-completions nil ! "Cached node completion list for current Info file.") ! ! (defvar Info-current-file-anchor-completions nil ! "Cached anchor completion list for current Info file.") (defvar Info-index-alternatives nil "List of possible matches for last `Info-index' command.") *************** *** 715,720 **** --- 718,724 ---- (setq Info-current-file nil Info-current-subfile nil Info-current-file-completions nil + Info-current-file-anchor-completions nil buffer-file-name nil) (erase-buffer) (if (eq filename t) *************** *** 1234,1248 **** ;; of the sort that is found in pointers in nodes. (defun Info-goto-node (nodename &optional fork) ! "Go to info node named NODENAME. Give just NODENAME or (FILENAME)NODENAME. ! If NODENAME is of the form (FILENAME)NODENAME, the node is in the Info file ! FILENAME; otherwise, NODENAME should be in the current Info file (or one of its sub-files). Completion is available, but only for node names in the current Info file. If FORK is non-nil (interactively with a prefix arg), show the node in a new info buffer. If FORK is a string, it is the name to use for the new buffer." ! (interactive (list (Info-read-node-name "Go to node: ") current-prefix-arg)) (info-initialize) (if fork (set-buffer --- 1238,1266 ---- ;; of the sort that is found in pointers in nodes. (defun Info-goto-node (nodename &optional fork) ! "Go to info node named NODENAME." ! (interactive (list (Info-read-node-name "Go to node: ") ! current-prefix-arg)) ! (Info-goto nodename fork)) ! ! (defun Info-goto-anchor (anchorname &optional fork) ! "Go to info anchor named ANCHORNAME." ! (interactive (list (Info-read-node-name "Go to anchor: " nil 'anchor) ! current-prefix-arg)) ! (Info-goto anchorname fork)) ! ! (defun Info-goto (nodename &optional fork) ! "Go to info node or anchor named NODENAME. ! Give just NODENAME or (FILENAME)NODENAME. If NODENAME is of the ! form (FILENAME)NODENAME, the node is in the Info file FILENAME; ! otherwise, NODENAME should be in the current Info file (or one of its sub-files). Completion is available, but only for node names in the current Info file. If FORK is non-nil (interactively with a prefix arg), show the node in a new info buffer. If FORK is a string, it is the name to use for the new buffer." ! (interactive (list (Info-read-node-name "Go to node or anchor: " nil t) ! current-prefix-arg)) (info-initialize) (if fork (set-buffer *************** *** 1300,1317 **** (t (test-completion string Info-read-node-completion-table predicate)))) ! (defun Info-read-node-name (prompt &optional default) (let* ((completion-ignore-case t) ! (Info-read-node-completion-table (Info-build-node-completions)) (nodename (completing-read prompt 'Info-read-node-name-1 nil t))) (if (equal nodename "") (or default ! (Info-read-node-name prompt)) nodename))) (defun Info-build-node-completions () (or Info-current-file-completions (let ((compl nil) ;; Bind this in case the user sets it to nil. (case-fold-search t) (node-regexp "Node: *\\([^,\n]*\\) *[,\n\t]")) --- 1318,1345 ---- (t (test-completion string Info-read-node-completion-table predicate)))) ! (defun Info-read-node-name (prompt &optional default anchor) (let* ((completion-ignore-case t) ! (node-completions (Info-build-node-completions)) ! ;; On the first call of `Info-build-node-completions' ! ;; it should set `Info-current-file-anchor-completions' ! (anchor-completions Info-current-file-anchor-completions) ! (Info-read-node-completion-table ! (append ! ;; Include node names if anchor is nil or t ! (if (not (eq anchor 'anchor)) node-completions) ! ;; Include anchor names if anchor is 'anchor or t ! (if anchor anchor-completions))) (nodename (completing-read prompt 'Info-read-node-name-1 nil t))) (if (equal nodename "") (or default ! (Info-read-node-name prompt anchor)) nodename))) (defun Info-build-node-completions () (or Info-current-file-completions (let ((compl nil) + (compl-anchors nil) ;; Bind this in case the user sets it to nil. (case-fold-search t) (node-regexp "Node: *\\([^,\n]*\\) *[,\n\t]")) *************** *** 1323,1332 **** (widen) (goto-char marker) (while (re-search-forward "\n\\(Node\\|Ref\\): \\(.*\\)\177" nil t) ! (or (string-equal "Ref" (match-string 1)) ! (setq compl (cons (list (match-string-no-properties 2)) ! compl))))) (widen) (goto-char (point-min)) ;; If the buffer begins with a node header, process that first. --- 1351,1363 ---- (widen) (goto-char marker) (while (re-search-forward "\n\\(Node\\|Ref\\): \\(.*\\)\177" nil t) ! (if (string-equal "Ref" (match-string 1)) ! (setq compl-anchors (cons (list (match-string-no-properties 2)) ! compl-anchors)) ! (setq compl ! (cons (list (match-string-no-properties 2)) ! compl))))) (widen) (goto-char (point-min)) ;; If the buffer begins with a node header, process that first. *************** *** 1342,1347 **** --- 1373,1379 ---- (cons (list (match-string-no-properties 1)) compl)))))))) (setq compl (cons '("*") compl)) + (set (make-local-variable 'Info-current-file-anchor-completions) compl-anchors) (set (make-local-variable 'Info-current-file-completions) compl)))) \f (defun Info-restore-point (hl) =================================================================== -- http://www.jurta.org/emacs/ ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Info enhancements 2003-12-16 2:14 ` Juri Linkov @ 2003-12-17 3:28 ` Richard Stallman 2003-12-18 3:03 ` Juri Linkov 0 siblings, 1 reply; 135+ messages in thread From: Richard Stallman @ 2003-12-17 3:28 UTC (permalink / raw) Cc: emacs-devel, karl So, what do you think about this patch? It provides three functions Info-goto, Info-goto-node and Info-goto-anchor that differ only by their completion lists. I'm still unsure about keybindings to these functions. Maybe, "g" - for Info-goto-node, "G" - for Info-goto Do we really need Info-goto-anchor? Do we really need Info-goto-node, except as an alias for compatibility? I don't see a need for them. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Info enhancements 2003-12-17 3:28 ` Richard Stallman @ 2003-12-18 3:03 ` Juri Linkov 2003-12-18 16:59 ` Richard Stallman 2003-12-19 14:03 ` Luc Teirlinck 0 siblings, 2 replies; 135+ messages in thread From: Juri Linkov @ 2003-12-18 3:03 UTC (permalink / raw) Cc: emacs-devel, karl Richard Stallman <rms@gnu.org> writes: > So, what do you think about this patch? It provides three functions > Info-goto, Info-goto-node and Info-goto-anchor that differ only by > their completion lists. I'm still unsure about keybindings to these > functions. Maybe, "g" - for Info-goto-node, "G" - for Info-goto > > Do we really need Info-goto-anchor? We don't need Info-goto-anchor. > Do we really need Info-goto-node, except as an alias > for compatibility? I don't see a need for them. I think Info-goto-node with a completion list without anchors might be useful for users that want to see only node names. For instance, currently Info-goto-node called on the Emacs manual adds anchors useless for users: Coding Systems-Footnote-1 Debugger Operation-Footnote-1 Dissociated Press-Footnote-1 Expressions-Footnote-1 File Names with $ Fontsets-Footnote-1 General Variables-Footnote-1 Language Environments-Footnote-1 Language Environments-Footnote-2 MS-DOS Printing-Footnote-1 MS-DOS and MULE-Footnote-1 MS-DOS and MULE-Footnote-2 Mail Amusements-Footnote-1 Man Page-Footnote-1 Man Page-Footnote-2 Manifesto-Footnote-1 Manifesto-Footnote-2 Manifesto-Footnote-3 Manifesto-Footnote-4 Manifesto-Footnote-5 Menu Mouse Clicks-Footnote-1 Non-ASCII Rebinding-Footnote-1 Scroll Bars-Footnote-1 Several Buffers-Footnote-1 Shell Mode-Footnote-1 TeX Mode-Footnote-1 But since now anchors are very infrequent in Info files they don't cause a problem yet. However, with more widespread use of anchors completion lists of node names will grow significantly. So, I think this discussion should be postponed until Info files have more anchors and thus it will be clear how many real problems anchors cause. -- http://www.jurta.org/emacs/ ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Info enhancements 2003-12-18 3:03 ` Juri Linkov @ 2003-12-18 16:59 ` Richard Stallman 2003-12-19 14:03 ` Luc Teirlinck 1 sibling, 0 replies; 135+ messages in thread From: Richard Stallman @ 2003-12-18 16:59 UTC (permalink / raw) Cc: emacs-devel, karl I think Info-goto-node with a completion list without anchors might be useful for users that want to see only node names. For instance, currently Info-goto-node called on the Emacs manual adds anchors useless for users: Maybe we should make a convention to distinguish between anchors that users might find interesting and anchors users would never want to visit. For instance, maybe we could put spaces into the anchor names that users should not see, and exclude them from completion. But since now anchors are very infrequent in Info files they don't cause a problem yet. However, with more widespread use of anchors completion lists of node names will grow significantly. So, I think this discussion should be postponed until Info files have more anchors and thus it will be clear how many real problems anchors cause. That is ok. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Info enhancements 2003-12-18 3:03 ` Juri Linkov 2003-12-18 16:59 ` Richard Stallman @ 2003-12-19 14:03 ` Luc Teirlinck 2003-12-20 5:27 ` Juri Linkov 1 sibling, 1 reply; 135+ messages in thread From: Luc Teirlinck @ 2003-12-19 14:03 UTC (permalink / raw) Cc: karl, rms, emacs-devel The following is an apparent bug in your proposed patch to info.el. Do C-h i g (texinfo)example If you click on the ` of the `@verbatim': reference you indeed go there, but clicking elsewhere on the reference produces an error. Same thing for the other two references in that node: Info-follow-reference: No cross-reference named `@verbatim' Info-follow-reference: No cross-reference named `@noindent' Info-follow-reference: No cross-reference named `@code' Your patch still seems to try to guess places in the node when one follows cross-references. I believe that it would be better to give up on that, since it would use the second or third argument to @xref and friends in a way that was not intended. I believe it is OK in index menus. Sincerely, Luc. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Info enhancements 2003-12-19 14:03 ` Luc Teirlinck @ 2003-12-20 5:27 ` Juri Linkov 0 siblings, 0 replies; 135+ messages in thread From: Juri Linkov @ 2003-12-20 5:27 UTC (permalink / raw) Cc: karl, emacs-devel Luc Teirlinck <teirllm@dms.auburn.edu> writes: > If you click on the ` of the `@verbatim': reference you indeed go > there, but clicking elsewhere on the reference produces an error. It was caused by an incomplete regexp for references. I will post a fix in the next version of the full patch to info.el. > Your patch still seems to try to guess places in the node when one > follows cross-references. No, this is not related to guessing places in the node. > I believe that it would be better to give up on that, since it would > use the second or third argument to @xref and friends in a way that > was not intended. I still think this is a useful feature. And currently it works exactly as the standalone Info reader does. But we could add an option for users willing to disable this feature. > I believe it is OK in index menus. But even going from index menus it sometimes misses the right place. After adding information about positions of index entries to Info files it would work better than guessing. -- http://www.jurta.org/emacs/ ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Info enhancements 2003-12-12 21:38 ` Juri Linkov 2003-12-13 15:17 ` Richard Stallman @ 2003-12-13 15:48 ` Eli Zaretskii 1 sibling, 0 replies; 135+ messages in thread From: Eli Zaretskii @ 2003-12-13 15:48 UTC (permalink / raw) Cc: emacs-devel, karl > From: Juri Linkov <juri@jurta.org> > Date: Fri, 12 Dec 2003 23:38:56 +0200 > > However, if there is need to go to anchors by selecting their names > from a completion list, then possible solution is either to implement > an additional command with an anchor completion list or to add anchor > names to a completion list of the `Info-index' command because > in fact anchors are more like index items than node names. I disagree with the latter suggestion. Info-index should provide completion for index entries; adding anchor names would not add any useful possible completions, since anchor names are just tags, not meaningful phrases. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Info enhancements 2003-12-12 2:08 ` Juri Linkov 2003-12-12 14:24 ` Karl Berry @ 2003-12-15 2:35 ` Richard Stallman 2003-12-15 6:01 ` Eli Zaretskii 1 sibling, 1 reply; 135+ messages in thread From: Richard Stallman @ 2003-12-15 2:35 UTC (permalink / raw) Cc: karl, emacs-devel Most of the features are good ones, but I think these two should have different interfaces. * Implemented a new `S' command suggested by Eli. This command is bound to a new function `Info-search-case-sensitively' that searches for a regexp case-sensitively. The `Info-search-next' uses the case of a previous `Info-search' or `Info-search-case-sensitively' command. It would be more consistent with the rest of Emacs to make the user interface be to specify this with a capital letter in the regexp. * Added a new keybinding "/" for `Info-search-next' (suggested by Reiner). I think that `s RET' would be a good way to specify this, also more consistent with other search commands in Emacs. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Info enhancements 2003-12-15 2:35 ` Richard Stallman @ 2003-12-15 6:01 ` Eli Zaretskii 2003-12-15 20:06 ` Richard Stallman 2003-12-16 3:00 ` Juri Linkov 0 siblings, 2 replies; 135+ messages in thread From: Eli Zaretskii @ 2003-12-15 6:01 UTC (permalink / raw) Cc: juri, emacs-devel, karl > From: Richard Stallman <rms@gnu.org> > Date: Sun, 14 Dec 2003 21:35:35 -0500 > > * Implemented a new `S' command suggested by Eli. This command is > bound to a new function `Info-search-case-sensitively' that searches > for a regexp case-sensitively. The `Info-search-next' uses the case > of a previous `Info-search' or `Info-search-case-sensitively' command. > > It would be more consistent with the rest of Emacs to make the user > interface be to specify this with a capital letter in the regexp. I think these are two independent features. (The stand-alone reader supports both.) The problem is that sometimes you may wish to find an all-lowercase string in a case-sensitive fashion; starting the regexp with a capital letter doesn't help in that case. > * Added a new keybinding "/" for `Info-search-next' (suggested by Reiner). > > I think that `s RET' would be a good way to specify this, > also more consistent with other search commands in Emacs. I think `/' should be simply another binding for `Info-search', for compatibility with the stand-alone reader. Then, `s RET' and `/ RET' will find the next occurrence (the former of these already works in Emacs, and both work in the stand-alone reader). ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Info enhancements 2003-12-15 6:01 ` Eli Zaretskii @ 2003-12-15 20:06 ` Richard Stallman 2003-12-16 3:00 ` Juri Linkov 1 sibling, 0 replies; 135+ messages in thread From: Richard Stallman @ 2003-12-15 20:06 UTC (permalink / raw) Cc: juri, karl, emacs-devel > * Added a new keybinding "/" for `Info-search-next' (suggested by Reiner). > > I think that `s RET' would be a good way to specify this, > also more consistent with other search commands in Emacs. I think `/' should be simply another binding for `Info-search', for compatibility with the stand-alone reader. That sounds ok to me. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Info enhancements 2003-12-15 6:01 ` Eli Zaretskii 2003-12-15 20:06 ` Richard Stallman @ 2003-12-16 3:00 ` Juri Linkov 2003-12-16 12:12 ` Kim F. Storm 2003-12-17 3:28 ` Richard Stallman 1 sibling, 2 replies; 135+ messages in thread From: Juri Linkov @ 2003-12-16 3:00 UTC (permalink / raw) Cc: emacs-devel, rms, karl Eli Zaretskii <eliz@elta.co.il> writes: >> * Added a new keybinding "/" for `Info-search-next' (suggested by Reiner). >> >> I think that `s RET' would be a good way to specify this, >> also more consistent with other search commands in Emacs. > > I think `/' should be simply another binding for `Info-search', for > compatibility with the stand-alone reader. Then, `s RET' and `/ RET' > will find the next occurrence (the former of these already works in > Emacs, and both work in the stand-alone reader). If `/' will be another binding for `Info-search', then perhaps its counterpart character `\' would be bound to `Info-search-next'. However, I already used `\' for `Info-history' buffer. So, if someone suggests a better keybinding for `Info-history', then `\' could be used for `Info-search-next'. -- http://www.jurta.org/emacs/ ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Info enhancements 2003-12-16 3:00 ` Juri Linkov @ 2003-12-16 12:12 ` Kim F. Storm 2003-12-17 3:28 ` Richard Stallman 2003-12-17 3:28 ` Richard Stallman 1 sibling, 1 reply; 135+ messages in thread From: Kim F. Storm @ 2003-12-16 12:12 UTC (permalink / raw) Cc: Eli Zaretskii, karl, rms, emacs-devel Juri Linkov <juri@jurta.org> writes: > Eli Zaretskii <eliz@elta.co.il> writes: > >> * Added a new keybinding "/" for `Info-search-next' (suggested by Reiner). > >> > >> I think that `s RET' would be a good way to specify this, > >> also more consistent with other search commands in Emacs. > > > > I think `/' should be simply another binding for `Info-search', for > > compatibility with the stand-alone reader. Then, `s RET' and `/ RET' > > will find the next occurrence (the former of these already works in > > Emacs, and both work in the stand-alone reader). > > If `/' will be another binding for `Info-search', then perhaps its > counterpart character `\' would be bound to `Info-search-next'. > However, I already used `\' for `Info-history' buffer. So, if someone > suggests a better keybinding for `Info-history', then `\' could be used > for `Info-search-next'. What if / would run Info-search-next if previous command was Info-search or Info-search-next. -- Kim F. Storm <storm@cua.dk> http://www.cua.dk ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Info enhancements 2003-12-16 12:12 ` Kim F. Storm @ 2003-12-17 3:28 ` Richard Stallman 0 siblings, 0 replies; 135+ messages in thread From: Richard Stallman @ 2003-12-17 3:28 UTC (permalink / raw) Cc: juri, eliz, karl, emacs-devel What if / would run Info-search-next if previous command was Info-search or Info-search-next. That is very inconsistent with other Emacs interfaces, so I would rather not do that. I'd rather tell people to use s RET or / RET. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: Info enhancements 2003-12-16 3:00 ` Juri Linkov 2003-12-16 12:12 ` Kim F. Storm @ 2003-12-17 3:28 ` Richard Stallman 1 sibling, 0 replies; 135+ messages in thread From: Richard Stallman @ 2003-12-17 3:28 UTC (permalink / raw) Cc: eliz, karl, emacs-devel If `/' will be another binding for `Info-search', then perhaps its counterpart character `\' would be bound to `Info-search-next'. That seems too inconsistent with the rest of Emacs. ^ permalink raw reply [flat|nested] 135+ messages in thread
* non-blocking socket io: data limit on read? 2003-12-01 10:38 ` Info enhancements Juri Linkov ` (5 preceding siblings ...) 2003-12-12 2:08 ` Juri Linkov @ 2004-07-01 21:07 ` Nic Ferrier 6 siblings, 0 replies; 135+ messages in thread From: Nic Ferrier @ 2004-07-01 21:07 UTC (permalink / raw) I have the beginnings of an nbio imap client. It sets up the socket like this: (open-network-stream-nowait "nbimap" con-buffer server 143 'nbimap-sentinel 'nbimap-filter) The sentinel doesn't do anything special, it just sets states based on the connection status. The filter parses the data passed into it, and then inserts it into the buffer. But I am getting some read problems. Large data sets don't arrive in full. I get a truncated form of the data. The bit I'm recieving is the last part, so it's not that my filter is being called twice. As an example I'm issuing an IMAP list command: 0x LIST "" "*" which returns all my folders, here's what goes over the socket (sniffed): T 127.0.0.1:143 -> 127.0.0.1:48929 [AP] * LIST (\HasNoChildren) "." "INBOX.clients.earthport"..* LIST (\HasNoChildren) "." "INBOX.gnu.gdb"..* LIS T (\HasNoChildren) "." "INBOX.Spam.test"..* LIST (\HasNoChildren) "." "INBOX.exim"..* LIST (\HasNoChildre n) "." "INBOX.Spam.clever"..* LIST (\HasNoChildren) "." "INBOX.servlets.jcp"..* LIST (\HasNoChildren) "." "INBOX.gnu.libxmlxsl"..* LIST (\HasNoChildren) "." "INBOX.gnu.scheme"..* LIST (\HasNoChildren) "." "INBO X.lispweb"..* LIST (\HasNoChildren) "." "INBOX.linux"..* LIST (\HasNoChildren) "." "INBOX.nic.policematte r"..* LIST (\HasNoChildren) "." "INBOX.clients.sweetandmaxwell.java-tips"..* LIST (\HasNoChildren) "." "I NBOX.gnu.emacs.nics-tip-of-the-day"..* LIST (\HasNoChildren) "." "INBOX.schemeunderground"..* LIST (\HasN oChildren) "." "INBOX.debian.laptop"..* LIST (\HasNoChildren) "." "INBOX.tf.net"..* LIST (\HasNoChildren) "." "INBOX.gnu.servletapi"..* LIST (\HasNoChildren) "." "INBOX.gnu.gcj"..* LIST (\HasNoChildren) "." "IN BOX.imapua-broken"..* LIST (\HasNoChildren) "." "INBOX.xsl"..* LIST (\HasNoChildren) "." "INBOX.wikipedia "..* LIST (\HasChildren) "." "INBOX.tf"..* LIST (\HasChildren) "." "INBOX.servlets"..* LIST (\HasNoChildr en) "." "INBOX.nic.jobs"..* LIST (\HasNoChildren) "." "INBOX.rest"..* LIST (\HasNoChildren) "." "INBOX.po stgresql"..* LIST (\HasNoChildren) "." "INBOX.oracle"..* LIST (\HasNoChildren) "." "INBOX.nic.egg"..* LIS T (\HasChildren) "." "INBOX.nic"..* LIST (\HasChildren) "." "INBOX.Spam"..* LIST (\HasNoChildren) "." "IN BOX.java"..* LIST (\HasNoChildren) "." "INBOX.gnu.paperclips"..* LIST (\HasNoChildren) "." "INBOX.gnu.mai lutils"..* LIST (\HasNoChildren) "." "INBOX.gnu.jaxp"..* LIST (\HasNoChildren) "." "INBOX.gnu.javamail".. * LIST (\HasNoChildren) "." "INBOX.gnu.java"..* LIST (\HasNoChildren) "." "INBOX.gnu.gjdoc"..* LIST (\Has Children) "." "INBOX.gnu.emacs"..* LIST (\HasNoChildren) "." "INBOX.gnu.cvs"..* LIST (\HasNoChildren) "." "INBOX.gnu.classpathx-administrivia"..* LIST (\HasChildren) "." "INBOX.gnu"..* LIST (\HasNoChildren) "." "INBOX.ferrier_me_uk"..* LIST (\HasChildren) "." "INBOX.debian"..* LIST (\HasNoChildren) "." "INBOX.clie nts.withyham"..* LIST (\HasChildren) "." "INBOX.clients.sweetandmaxwell"..* LIST (\HasChildren) "." "INBO X.clients"..* LIST (\HasNoChildren) "." "INBOX.articles"..* LIST (\HasNoChildren) "." "INBOX.affs"..* LIS T (\HasNoChildren) "." "INBOX.Trash"..* LIST (\HasNoChildren) "." "INBOX.Sent"..* LIST (\Marked \HasChild ren) "." "INBOX"..02 OK LIST completed... But what I get in the data argument to the filter function is this: "BOX.debian\"\n* LIST (\\HasNoChildren) \".\" \"INBOX.clients.withyham\"\n* LIST (\\HasChildren) \".\" \"INBOX.clients.sweetandmaxwell\"\n* LIST (\\HasChildren) \".\" \"INBOX.clients\"\n* LIST (\\HasNoChildren) \".\" \"INBOX.articles\"\n* LIST (\\HasNoChildren) \".\" \"INBOX.affs\"\n* LIST (\\HasNoChildren) \".\" \"INBOX.Trash\"\n* LIST (\\HasNoChildren) \".\" \"INBOX.Sent\"\n* LIST (\\Marked \\HasChildren) \".\" \"INBOX\"\n02 OK LIST completed.\n" Clearly truncated. My Emacs version is: GNU Emacs 21.3.50.2 (i686-pc-linux-gnu, X toolkit) It's pretty complicated code (process.c) so I don't want to have to get into it unless I need to /8-> Has anyone got any ideas? -- Nic Ferrier http://www.tapsellferrier.co.uk ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: terminal escapes in Info files? 2003-10-28 10:51 ` Alper Ersoy 2003-10-28 13:48 ` Oliver Scholz @ 2003-10-28 16:19 ` Stefan Monnier 2003-10-29 19:02 ` Richard Stallman 2003-10-29 19:01 ` Richard Stallman 2 siblings, 1 reply; 135+ messages in thread From: Stefan Monnier @ 2003-10-28 16:19 UTC (permalink / raw) Cc: eliz, emacs-devel, rms, Karl Berry >> How about using what Enriched-Text mode uses in Emacs? See >> etc/enriched.doc in the Emacs distro. Why not HTML ? There's already an HTML backend in makeinfo, so no change is needed there. Also it has the advantage of providing much more markup so that text-reflowing is possible. Maybe the current HTML output is not appropriate for an Info-like reader, so maybe some touch up will be needed, but I think it's not a bad direction to go. At least, it's no worse than the idea of introducing yet-another-markup. Of course, a direction I'd even prefer is some way to make it possible to use the TeXinfo file(s) directly (probably with some form of caching for things like the indices that would be generated on the fly). Stefan ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: terminal escapes in Info files? 2003-10-28 16:19 ` terminal escapes in Info files? Stefan Monnier @ 2003-10-29 19:02 ` Richard Stallman 2003-10-29 19:47 ` David Kastrup 0 siblings, 1 reply; 135+ messages in thread From: Richard Stallman @ 2003-10-29 19:02 UTC (permalink / raw) Cc: karl, eliz, emacs-devel, dirt Is HTML adequate for the job of replacing info format? Yes, it does something vaguely similar, but that does not mean the answer is yes. Does the HTML output produced by makeinfo give just as good results in a browser as info files do in the info readers? Can we support *all* the features of info just as well as we do now? One other obstacle to using HTML instead of info format is that emacs does not contain a browser at present. We have considered for years the idea of installing the W3 package into Emacs, but (from what I recall) it does not work as well as ordinary browsers. So I hesitate to replace info.el with W3. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: terminal escapes in Info files? 2003-10-29 19:02 ` Richard Stallman @ 2003-10-29 19:47 ` David Kastrup 2003-10-29 21:43 ` Eli Zaretskii 2003-10-30 18:00 ` Richard Stallman 0 siblings, 2 replies; 135+ messages in thread From: David Kastrup @ 2003-10-29 19:47 UTC (permalink / raw) Cc: eliz, emacs-devel, Stefan Monnier, dirt, karl Richard Stallman <rms@gnu.org> writes: > Is HTML adequate for the job of replacing info format? Yes, it does > something vaguely similar, but that does not mean the answer is yes. > Does the HTML output produced by makeinfo give just as good results > in a browser as info files do in the info readers? Can we support > *all* the features of info just as well as we do now? I don't think that the main idea was to replace the various info readers by browsers, but to change the info format to a strict subset of HTML, and then make the info readers recognize this subset as an external format. The info readers would not need to be able to understand arbitrary HTML, just the specific HTML subset output by whatever tool was used for generating it, and native HTML browsers would not necessarily support everything the info readers could. I think the first sensible step would be to augment the HTML generating scripts in the texinfo distribution so as to include the _complete_ information available in info file format, probably as some tags usually ignored by typical HTML browsers. Once the complete information is available in the HTML files, one can write a reader for it. -- David Kastrup, Kriemhildstr. 15, 44793 Bochum ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: terminal escapes in Info files? 2003-10-29 19:47 ` David Kastrup @ 2003-10-29 21:43 ` Eli Zaretskii 2003-10-29 22:39 ` David Kastrup 2003-10-30 18:00 ` Richard Stallman 1 sibling, 1 reply; 135+ messages in thread From: Eli Zaretskii @ 2003-10-29 21:43 UTC (permalink / raw) Cc: emacs-devel, dirt, karl > From: David Kastrup <dak@gnu.org> > Date: 29 Oct 2003 20:47:46 +0100 > > I think the first sensible step would be to augment the HTML > generating scripts in the texinfo distribution so as to include the > _complete_ information available in info file format, probably as > some tags usually ignored by typical HTML browsers. HTML browsers don't ignore anything, they just don't have commands to look up menus generated for indices, and don't have search commands that look up entire documents, not only single pages. I may be forgetting something, but in general I don't think there's some Texinfo markup we don't put into HTML as we do into Info format. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: terminal escapes in Info files? 2003-10-29 21:43 ` Eli Zaretskii @ 2003-10-29 22:39 ` David Kastrup 2003-10-30 6:03 ` Eli Zaretskii 0 siblings, 1 reply; 135+ messages in thread From: David Kastrup @ 2003-10-29 22:39 UTC (permalink / raw) Cc: emacs-devel, dirt, karl "Eli Zaretskii" <eliz@elta.co.il> writes: > > From: David Kastrup <dak@gnu.org> > > Date: 29 Oct 2003 20:47:46 +0100 > > > > I think the first sensible step would be to augment the HTML > > generating scripts in the texinfo distribution so as to include the > > _complete_ information available in info file format, probably as > > some tags usually ignored by typical HTML browsers. > > HTML browsers don't ignore anything, Not even comments? > I may be forgetting something, but in general I don't think there's > some Texinfo markup we don't put into HTML as we do into Info > format. So then it should be conceivable to use this HTML as a different info file format. -- David Kastrup, Kriemhildstr. 15, 44793 Bochum ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: terminal escapes in Info files? 2003-10-29 22:39 ` David Kastrup @ 2003-10-30 6:03 ` Eli Zaretskii 0 siblings, 0 replies; 135+ messages in thread From: Eli Zaretskii @ 2003-10-30 6:03 UTC (permalink / raw) Cc: emacs-devel, dirt, karl > From: David Kastrup <dak@gnu.org> > Date: 29 Oct 2003 23:39:00 +0100 > > "Eli Zaretskii" <eliz@elta.co.il> writes: > > > > From: David Kastrup <dak@gnu.org> > > > Date: 29 Oct 2003 20:47:46 +0100 > > > > > > I think the first sensible step would be to augment the HTML > > > generating scripts in the texinfo distribution so as to include the > > > _complete_ information available in info file format, probably as > > > some tags usually ignored by typical HTML browsers. > > > > HTML browsers don't ignore anything, > > Not even comments? Sorry, it seems I completely misunderstood what you were saying in the sentence to which I responded. I thought you were saying that HTML browsers ignore some parts of the HTML output produced by makeinfo, and that is why they are less efficient for reading a manual. Thus, this paragraph: > > I may be forgetting something, but in general I don't think there's > > some Texinfo markup we don't put into HTML as we do into Info > > format. > > So then it should be conceivable to use this HTML as a different info > file format. Sure, it's conceivable, it just requires a thorough rewrite of the standalone reader. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: terminal escapes in Info files? 2003-10-29 19:47 ` David Kastrup 2003-10-29 21:43 ` Eli Zaretskii @ 2003-10-30 18:00 ` Richard Stallman 1 sibling, 0 replies; 135+ messages in thread From: Richard Stallman @ 2003-10-30 18:00 UTC (permalink / raw) Cc: karl, eliz, dirt, monnier, emacs-devel I don't think that the main idea was to replace the various info readers by browsers, but to change the info format to a strict subset of HTML, and then make the info readers recognize this subset as an external format. this might be an ok idea, if people work out the details. it would be a totally incompatible change, though. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: terminal escapes in Info files? 2003-10-28 10:51 ` Alper Ersoy 2003-10-28 13:48 ` Oliver Scholz 2003-10-28 16:19 ` terminal escapes in Info files? Stefan Monnier @ 2003-10-29 19:01 ` Richard Stallman 2003-10-29 19:45 ` Alper Ersoy 2 siblings, 1 reply; 135+ messages in thread From: Richard Stallman @ 2003-10-29 19:01 UTC (permalink / raw) Cc: eliz, emacs-devel, karl 1) Older versions friendly, 2) Future versions friendly. (1) is using ANSI escapes directly in Info files. The benefit is, these files will still be displayed correctly by older versions of info when -R option is given (though I'm not sure about emacs.) it wont work in emacs. The downside is, Info becomes an intermediate format rather than a final one, always asking for an additional step in the browsers. Display will be totally screwed in older versions[1]. this is true for both #1 and #2. both would need conversion for emacs to display them. both would need conversion to display them properly in stand-alone info, on a non-ansi terminal. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: terminal escapes in Info files? 2003-10-29 19:01 ` Richard Stallman @ 2003-10-29 19:45 ` Alper Ersoy 2003-10-29 19:42 ` Eli Zaretskii 2003-10-30 18:00 ` Richard Stallman 0 siblings, 2 replies; 135+ messages in thread From: Alper Ersoy @ 2003-10-29 19:45 UTC (permalink / raw) Cc: eliz, emacs-devel, karl Richard Stallman: > The downside is, Info becomes an intermediate format rather than > a final one, always asking for an additional step in the browsers. > Display will be totally screwed in older versions[1]. > this is true for both #1 and #2. both would need conversion > for emacs to display them. both would need conversion to > display them properly in stand-alone info, on a non-ansi terminal. Speaking for stand-alone info, there already is stripping functionality that kicks in when viewing man pages without the -R option. Likewise if emacs' browser is capable of viewing man pages, it too should have such functionality already. -- Alper Ersoy ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: terminal escapes in Info files? 2003-10-29 19:45 ` Alper Ersoy @ 2003-10-29 19:42 ` Eli Zaretskii 2003-10-30 18:00 ` Richard Stallman 1 sibling, 0 replies; 135+ messages in thread From: Eli Zaretskii @ 2003-10-29 19:42 UTC (permalink / raw) Cc: emacs-devel, karl > Date: Wed, 29 Oct 2003 21:45:44 +0200 > From: Alper Ersoy <dirt@gtk.org> > > Speaking for stand-alone info, there already is stripping > functionality that kicks in when viewing man pages without the -R > option. Likewise if emacs' browser is capable of viewing man pages, > it too should have such functionality already. It does (by means of an awk script it runs as a subprocess when it prepares the man page for display). ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: terminal escapes in Info files? 2003-10-29 19:45 ` Alper Ersoy 2003-10-29 19:42 ` Eli Zaretskii @ 2003-10-30 18:00 ` Richard Stallman 1 sibling, 0 replies; 135+ messages in thread From: Richard Stallman @ 2003-10-30 18:00 UTC (permalink / raw) Cc: eliz, emacs-devel, karl Likewise if emacs' browser is capable of viewing man pages, it too should have such functionality already. yes, people say that Emacs Lisp code to display those escape sequences exists. that would reduce the amount of work for implementing this change, but wouldn't alter the fact that Info won't handle these sequences without a change. I will say yes to something like this only if it uses a cleaner design. not with terminal escape sequences. That is my final decision. ^ permalink raw reply [flat|nested] 135+ messages in thread
* Re: terminal escapes in Info files? 2003-10-28 1:26 terminal escapes in Info files? Karl Berry 2003-10-28 10:51 ` Alper Ersoy @ 2003-10-29 19:02 ` Richard Stallman 1 sibling, 0 replies; 135+ messages in thread From: Richard Stallman @ 2003-10-29 19:02 UTC (permalink / raw) Cc: eliz, emacs-devel, dirt Since Info is inherently limited to what can be displayed on a terminal, it seems like ANSI escape sequences are as reasonable specification of the capabilities as anything else? Info files can be displayed under X and we need not assume they are limited to a narrow range of display features forever. But even if we never support anything beyond what terminal escape sequences can do, we still should not use them. There is nothing particularly easy about converting terminal escape sequences into text properties for emacs to display. ^ permalink raw reply [flat|nested] 135+ messages in thread
end of thread, other threads:[~2004-09-02 19:02 UTC | newest] Thread overview: 135+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2003-10-28 1:26 terminal escapes in Info files? Karl Berry 2003-10-28 10:51 ` Alper Ersoy 2003-10-28 13:48 ` Oliver Scholz 2003-10-30 10:42 ` Alper Ersoy 2003-11-10 13:01 ` HTML as info format (was: terminal escapes in Info files?) Oliver Scholz 2003-11-17 13:29 ` HTML as info format Juri Linkov 2003-11-18 7:01 ` Richard Stallman 2003-11-18 14:54 ` Changes to Texinfo DTD [Was: Re: HTML as info format] Robert J. Chassell 2003-11-18 15:59 ` Changes to Texinfo DTD Oliver Scholz 2003-11-18 21:03 ` Robert J. Chassell 2003-11-18 21:18 ` Nic Ferrier 2003-11-19 12:38 ` Robert J. Chassell 2003-11-19 13:18 ` Nic Ferrier 2003-11-20 10:37 ` Oliver Scholz 2003-11-20 16:55 ` Robert J. Chassell 2003-11-20 18:19 ` Oliver Scholz 2003-11-20 20:32 ` Nic Ferrier 2003-11-20 22:05 ` Oliver Scholz 2003-11-20 22:51 ` Nic Ferrier 2003-11-21 2:13 ` Robert J. Chassell 2003-11-21 8:49 ` Nic Ferrier 2003-11-21 2:10 ` Robert J. Chassell 2003-11-21 7:57 ` Nic Ferrier 2003-11-24 7:57 ` Juri Linkov 2003-11-24 9:32 ` Nic Ferrier 2003-11-22 21:19 ` Richard Stallman 2003-11-22 21:41 ` Nic Ferrier 2003-11-22 21:42 ` Miles Bader 2003-11-22 21:56 ` Nic Ferrier 2003-11-24 7:55 ` Juri Linkov 2003-11-24 9:25 ` Why XSLT in Emacs Lisp? (was Re: Changes to Texinfo DTD) Nic Ferrier 2003-11-24 13:04 ` Why XSLT in Emacs Lisp? Alex Schroeder 2003-11-23 17:14 ` Changes to Texinfo DTD Robert J. Chassell 2003-11-24 7:54 ` Juri Linkov 2003-11-24 16:19 ` Luc Teirlinck 2003-11-24 22:32 ` Robert J. Chassell 2003-11-24 22:31 ` Miles Bader 2003-11-25 5:22 ` Juri Linkov 2003-11-25 16:48 ` Luc Teirlinck 2003-11-25 21:59 ` Juri Linkov 2003-11-25 23:32 ` Luc Teirlinck 2003-11-25 19:54 ` Luc Teirlinck 2003-11-25 21:48 ` Juri Linkov 2003-11-26 1:08 ` Luc Teirlinck 2003-12-02 6:42 ` Eli Zaretskii 2003-12-03 1:47 ` Luc Teirlinck 2003-12-03 16:18 ` Eli Zaretskii 2003-12-04 2:53 ` Luc Teirlinck 2003-12-04 7:58 ` Eli Zaretskii 2003-12-04 2:54 ` Luc Teirlinck 2003-12-04 8:04 ` Eli Zaretskii 2003-12-04 9:39 ` Oliver Scholz 2003-12-04 11:48 ` Oliver Scholz 2003-12-04 15:35 ` Eli Zaretskii 2003-12-04 8:19 ` Oliver Scholz 2003-12-04 13:49 ` Robert J. Chassell 2003-12-05 0:11 ` Richard Stallman 2003-12-05 9:49 ` Kim F. Storm 2003-12-06 16:11 ` Alfred M. Szmidt 2003-12-06 17:11 ` Eli Zaretskii 2003-12-09 16:47 ` Alfred M. Szmidt 2003-12-10 7:25 ` Eli Zaretskii 2003-12-04 3:35 ` Luc Teirlinck 2003-12-04 8:12 ` Eli Zaretskii 2003-11-22 23:59 ` Stefan Monnier 2003-11-23 0:05 ` Nic Ferrier 2003-11-23 14:16 ` Oliver Scholz 2003-11-23 15:11 ` Nic Ferrier 2003-11-24 16:22 ` Richard Stallman 2003-11-20 18:24 ` Karl Eichwalder 2003-11-24 16:23 ` Richard Stallman 2003-12-02 7:08 ` HTML as info format Eli Zaretskii 2003-12-01 10:38 ` Info enhancements Juri Linkov 2003-12-02 3:34 ` Luc Teirlinck 2003-12-02 10:54 ` Juri Linkov 2003-12-02 4:43 ` Luc Teirlinck 2003-12-02 10:18 ` Info enhancements (was: Re: HTML as info format) Juri Linkov 2003-12-02 17:27 ` Eli Zaretskii 2003-12-02 19:26 ` Karl Berry 2003-12-03 5:38 ` Info enhancements Juri Linkov 2003-12-03 13:27 ` Karl Berry 2003-12-03 15:46 ` Robert J. Chassell 2003-12-20 5:34 ` Juri Linkov 2003-12-20 14:57 ` Karl Berry 2003-12-03 17:16 ` Info enhancements (was: Re: HTML as info format) Richard Stallman 2003-12-02 21:22 ` Info enhancements Reiner Steib 2003-12-03 3:54 ` `s' (regex) search [was Re: Info enhancements] Harry Putnam 2003-12-03 5:47 ` Eli Zaretskii 2003-12-03 9:42 ` Harry Putnam 2003-12-03 11:31 ` Eli Zaretskii 2003-12-03 11:56 ` Harry Putnam 2003-12-03 16:27 ` Eli Zaretskii 2003-12-03 19:13 ` Harry Putnam 2003-12-04 8:34 ` Eli Zaretskii 2003-12-03 5:04 ` Info enhancements Juri Linkov 2004-09-01 16:42 ` Reiner Steib 2004-09-01 20:55 ` Juri Linkov 2004-09-02 19:02 ` Richard Stallman 2003-12-03 0:33 ` Kim F. Storm 2003-12-03 6:43 ` Juri Linkov 2003-12-12 2:08 ` Juri Linkov 2003-12-12 14:24 ` Karl Berry 2003-12-12 17:14 ` Eli Zaretskii 2003-12-12 19:23 ` Stefan Monnier 2003-12-13 10:12 ` Eli Zaretskii 2003-12-13 23:15 ` Richard Stallman 2003-12-12 21:38 ` Juri Linkov 2003-12-13 15:17 ` Richard Stallman 2003-12-16 2:14 ` Juri Linkov 2003-12-17 3:28 ` Richard Stallman 2003-12-18 3:03 ` Juri Linkov 2003-12-18 16:59 ` Richard Stallman 2003-12-19 14:03 ` Luc Teirlinck 2003-12-20 5:27 ` Juri Linkov 2003-12-13 15:48 ` Eli Zaretskii 2003-12-15 2:35 ` Richard Stallman 2003-12-15 6:01 ` Eli Zaretskii 2003-12-15 20:06 ` Richard Stallman 2003-12-16 3:00 ` Juri Linkov 2003-12-16 12:12 ` Kim F. Storm 2003-12-17 3:28 ` Richard Stallman 2003-12-17 3:28 ` Richard Stallman 2004-07-01 21:07 ` non-blocking socket io: data limit on read? Nic Ferrier 2003-10-28 16:19 ` terminal escapes in Info files? Stefan Monnier 2003-10-29 19:02 ` Richard Stallman 2003-10-29 19:47 ` David Kastrup 2003-10-29 21:43 ` Eli Zaretskii 2003-10-29 22:39 ` David Kastrup 2003-10-30 6:03 ` Eli Zaretskii 2003-10-30 18:00 ` Richard Stallman 2003-10-29 19:01 ` Richard Stallman 2003-10-29 19:45 ` Alper Ersoy 2003-10-29 19:42 ` Eli Zaretskii 2003-10-30 18:00 ` Richard Stallman 2003-10-29 19:02 ` Richard Stallman
Code repositories for project(s) associated with this external index https://git.savannah.gnu.org/cgit/emacs.git https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.