Re: [NTG-context] ctags and ConTeXt

2007-02-27 Thread Hans Hagen
Aditya Mahajan wrote:
 Hi

 Here is my first attempt (see attachment). It works correctly in the 
 little testing that I have done (on Windows). Just add 
 \usemodule[ctags] somewhere in your environment file, and run context. 
 I file called context.tags will be generated which contains the 
 labels, filename, and line-number where the label occurs (line number 
 can sometimes be off).

 I modify a few core macros, so this can possibly break existing stuff 
 (It should not, but then ...)
i didn't look at the code yet, but maybe a hook is a safer way?

 I found no reliable way to know the current file name. So this works 
 correctly only if registerfileinfo is called. So one will have the 
 correct filename when using a project structure, but not when using 
 \input. I do not want to redefine \input, since almost everything 
 relies on \input working correctly.


 I will also post the module on the garden once I am more comfortable 
 with it. This one is too dangerous to go to the core.
Hans 


-
  Hans Hagen | PRAGMA ADE
  Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
 tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com
 | www.pragma-pod.nl
-

___
ntg-context mailing list
ntg-context@ntg.nl
http://www.ntg.nl/mailman/listinfo/ntg-context


Re: [NTG-context] ctags and ConTeXt

2007-02-27 Thread Aditya Mahajan
On Tue, 27 Feb 2007, Hans Hagen wrote:

 Aditya Mahajan wrote:
 Hi

 Here is my first attempt (see attachment). It works correctly in the
 little testing that I have done (on Windows). Just add
 \usemodule[ctags] somewhere in your environment file, and run context.
 I file called context.tags will be generated which contains the
 labels, filename, and line-number where the label occurs (line number
 can sometimes be off).

 I modify a few core macros, so this can possibly break existing stuff
 (It should not, but then ...)
 i didn't look at the code yet, but maybe a hook is a safer way?

The redefinition is safe. I put the warning since the user must be 
aware that a module redefines a core macro. There are two 
redefinitions, one for knowing the name of the current file, and the 
other for writings the reference to the tags file.

For knowing the name of the current file, I would say that the core 
should support it. From what I understand, \inputfilename (or 
\currentfile) should give the name of the current file, but they do 
not. So, I had to modify registerfileinfo so that it provides with the 
name of the current file.

To write the reference into the tag file, I need to know the 
reference. That is why I had to modify writereference. One hook that I 
can think of is to provide an \everywritereference token.

\def\writereference#1#2#3#4
   {\def\currentreferece{#1}
\the\everywritereference
% Rest of the writereference code}

Then, modules like ctags will be able to hook into 
everywritereference.

Aditya
___
ntg-context mailing list
ntg-context@ntg.nl
http://www.ntg.nl/mailman/listinfo/ntg-context


Re: [NTG-context] ctags and ConTeXt

2007-02-26 Thread Hans Hagen
Aditya Mahajan wrote:
 but this only writes a space. ctags expects \t to be present between 
 tag and file name.
   
try \rawcharacter{asciinumber}
 Secondly (this is not that important), can TeX write to a file without 
 any extension? Traditionally the tags file is just named `tags'
   
did you try it? 

Hans 

-
  Hans Hagen | PRAGMA ADE
  Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
 tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com
 | www.pragma-pod.nl
-

___
ntg-context mailing list
ntg-context@ntg.nl
http://www.ntg.nl/mailman/listinfo/ntg-context


Re: [NTG-context] ctags and ConTeXt

2007-02-26 Thread Taco Hoekwater


Aditya Mahajan wrote:
 
 Secondly (this is not that important), can TeX write to a file without 
 any extension? Traditionally the tags file is just named `tags'

No, it can't.

Taco


___
ntg-context mailing list
ntg-context@ntg.nl
http://www.ntg.nl/mailman/listinfo/ntg-context


Re: [NTG-context] ctags and ConTeXt

2007-02-26 Thread Hans Hagen
Taco Hoekwater wrote:
 Aditya Mahajan wrote:
   
 Secondly (this is not that important), can TeX write to a file without 
 any extension? Traditionally the tags file is just named `tags'
 

 No, it can't.

   
yet, in luatex we can overload the openers
 Taco


 ___
 ntg-context mailing list
 ntg-context@ntg.nl
 http://www.ntg.nl/mailman/listinfo/ntg-context
   


-- 

-
  Hans Hagen | PRAGMA ADE
  Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
 tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com
 | www.pragma-pod.nl
-

___
ntg-context mailing list
ntg-context@ntg.nl
http://www.ntg.nl/mailman/listinfo/ntg-context


Re: [NTG-context] ctags and ConTeXt

2007-02-26 Thread Aditya Mahajan

Hi

Here is my first attempt (see attachment). It works correctly in the 
little testing that I have done (on Windows). Just add 
\usemodule[ctags] somewhere in your environment file, and run context. 
I file called context.tags will be generated which contains the 
labels, filename, and line-number where the label occurs (line number 
can sometimes be off).


I modify a few core macros, so this can possibly break existing stuff 
(It should not, but then ...)


I found no reliable way to know the current file name. So this works 
correctly only if registerfileinfo is called. So one will have the 
correct filename when using a project structure, but not when using 
\input. I do not want to redefine \input, since almost everything 
relies on \input working correctly.



I will also post the module on the garden once I am more comfortable 
with it. This one is too dangerous to go to the core.


Aditya%M \logo [CTAGS] {CTAGS}

%D \module
%D   [   file=t-ctags,
%Dversion=2007-02-26,
%D  title=\CONTEXT\ tags(\CTAGS),
%D   subtitle=\CTAGS\ support in \CONTEXT,
%D author={Aditya Mahajan},
%D   date=\currentdate]
%D

%M \setuphead [section] [page=]
%M \useURL[ctags][http://ctags.sourceforge.net/]
%M \useURL[vim]  [http://www.vim.org]
%M \logo  [VIM] {VIM}
%M \logo  [EMACS] {EMACS}


%D \section Introduction
%D 
%D \CTAGS\ is a program that generates an index of language objects
%D found in a file that allows these objects to be easily located by a
%D text editor. They are tightly integrated with \VIM\ and \EMACS. For
%D large \TEX\ files, \CTAGS\ is very useful to find reference labels.
%D Suppose you are writing a long book or paper, and you want to add
%D reference to an equation. Also suppose all your equation labels start
%D with \type{eq:}. Then in \VIM\ you can type \type{eq:} and press
%D \type{^X^]} and \VIM\ will present you with a pop-up menu showing the
%D different labels that start with \type{eq:}. For long files this can
%D save you a lot of time.
%D
%D Traditionally tags are generated from an external program. However,
%D \CONTEXT's syntax is almost impossible to parse from an external
%D program. Consider the following two cases
%D \starttyping
%D \defineenumeration[problem]
%D \startproblem[tag]
%D blah blah
%D \stopproblem
%D \stoptyping
%D and
%D \starttyping
%D \defineitemgroup[problem]
%D \startproblem[intro]
%D \item blah blah
%D \stopproblem
%D \stoptyping
%D
%D For an external program to correctly parse this, it must be able to
%D understand \TEX. The only program that can understand \TEX\ is \TEX.
%D So, I decided to write \CTAGS\ support for \CONTEXT\ in \CONTEXT. It
%D turned out to be much simpler than expected. So now, one can read
%D \CTAGS\ as \CONTEXT\ tags \mono{:-)}.
%D
%D \section User Guide
%D
%D To use the module simply add 
%D \starttyping
%D \usemodule[ctags]
%D \stoptyping
%D on the top of the file\footnote{This must be done before
%D \type{\everystarttext} is executed. That is either in the environment
%D file or before \type{\starttext} in a file.}. Unfortunately, right
%D now (that is with \PDFTEX), it is not possible to create a file
%D without extension. So, the tags are written to a file
%D \filename{context.tags}. To use this in \VIM, you have to add
%D \starttyping
%D set tags=./tags,tags,context.tags
%D \stoptyping
%D in your \filename{.vimrc} (\filename{_vimrc} on Windows). I do not
%D know how to do something similar in \EMACS. If someone knows, please
%D let me know.
%D
%D This file modifies a core \CONTEXT\ macro, so be careful while using
%D it. It may (although it should not) break in some cases. You have
%D been warned.
%D
%D The rest of the file is self explanatory.


\writestatus  {loading}   {Context CTAGS support Module}

\startmodule[vim]

\unprotect

\newwrite\ctagsfile

\newtoks\everyopenctags
\newtoks\everyclosectags

%D TODO: Find out if we are running \LUATEX, and if we are write to
%D \filename{tags}.

\appendtoks
  \immediate\openout\ctagsfile context.tags
  \immediate\write\ctagsfile{!_TAG_FILE_FORMAT\rawcharacter{9}1}
  \immediate\write\ctagsfile{!_TAG_FILE_SORTED\rawcharacter{9}0}
  \immediate\write\ctagsfile{!_TAG_PROGRAM_AUTHOR\rawcharacter{9}Aditya Mahajan}
  \immediate\write\ctagsfile{!_TAG_PROGRAM_NAME\rawcharacter{9}ConTeXt t-ctags 
module}
\to \everyopenctags

\appendtoks
  \immediate\closeout\ctagsfile
\to \everyclosectags

\let\normalwriterefernce\writereference

\def\writereference#1% #2#3#4
  {\doifsomething{#1}
   {\immediate\write\ctagsfile{#1\rawcharacter{9}\currentctagsfile 
\rawcharacter{9}\the\inputlineno}}
   \normalwriterefernce{#1}}% #2#3#4

%D \type{\everystarttext} is executed at \type{\startcomponent}. If we
%D have a typical structure
%D \starttyping
%D \startcomponent file
%D \product  file
%D \enviromnent file
%D \stoptyping
%D then \type{\everystarttext} is executed before ctags module is
%D loaded. So, we open the tags as soon as the module is loaded. This
%D can cause a 

Re: [NTG-context] ctags and ConTeXt

2007-02-25 Thread Aditya Mahajan
On Sun, 11 Feb 2007, Aditya Mahajan wrote:

 Hi,

 I am wondering how others manage a large list of reference labels in
 ConTeXt. I use Vim as an editor and it supports ctags. ctags is a
 utility that is basically for supporting tags in programs (initially
 only for C, and hence the name), but can be used relatively easily
 with LaTeX. Basically, ctags creates a tag file with the format

 tag-name tag-file tag-regex

 (for details see http://ctags.sourceforge.net/FORMAT)

I have a rudimentary support that is running. I have modified the 
writereference command so that it also writes the correct information 
to the tags file. It is almost working. I just need to figure out how 
to write a literal tab to a file? I tried

\immediate\write\file {tag^^I file^^I /:line_no/}

but this only writes a space. ctags expects \t to be present between 
tag and file name.

Secondly (this is not that important), can TeX write to a file without 
any extension? Traditionally the tags file is just named `tags'

Aditya
___
ntg-context mailing list
ntg-context@ntg.nl
http://www.ntg.nl/mailman/listinfo/ntg-context