Merge lp:~blueyed/ubuntu/natty/exuberant-ctags/upstream-snapshot into lp:ubuntu/natty/exuberant-ctags

Proposed by Daniel Hahler
Status: Merged
Merge reported by: Colin Watson
Merged at revision: not available
Proposed branch: lp:~blueyed/ubuntu/natty/exuberant-ctags/upstream-snapshot
Merge into: lp:ubuntu/natty/exuberant-ctags
Diff against target: 36701 lines
To merge this branch: bzr merge lp:~blueyed/ubuntu/natty/exuberant-ctags/upstream-snapshot
Reviewer Review Type Date Requested Status
Ubuntu branches Pending
Review via email: mp+52947@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Colin Watson (cjwatson) wrote :

Patch pilots, please hold off on this; I'd like to look at this in Debian.

Revision history for this message
Colin Watson (cjwatson) wrote :

Daniel, would you be offended if I did this separately in Debian and just made the results match up, but not necessarily the bzr history? (My Debian exuberant-ctags repository is still in Subversion, unfortunately ...)

17. By Daniel Hahler

Set version to '5.9~svn20110310' instead of 'Development'.

18. By Daniel Hahler

Add LP bug reference to LP: #554898.

19. By Daniel Hahler

Also fixes LP: #582347 (etags screw filenames starting with ./).

Revision history for this message
Daniel Hahler (blueyed) wrote :

Yes, Colin, please do.

I hope you keep debian/changelog, but even without this my main intention is to get the bug fixes in. Please note the last three commits, which fix the version and add some more bug references.

Revision history for this message
Colin Watson (cjwatson) wrote :

Yes, I'll preserve those parts of the changelog which make sense, attributing you. I'm going to do some things somewhat differently, though; in particular, I've generated a new .orig.tar.gz using upstream's maintainer.mak ('make -f maintainer.mak releases/ctags-5.9~svn20110310.tar.gz'), which means that neither dh_autoreconf nor version.patch are needed.

Revision history for this message
Colin Watson (cjwatson) wrote :

Also, this is not a good form for changelog entries:

    This includes a lot of fixes since the last release.
    - Fixes LP: #554898, #582347

It's better to list actual changes alongside each bug, rather than "a lot of fixes" and bug numbers that you then have to look up. I'm going to rephrase this using upstream NEWS, commit messages, etc.

Revision history for this message
Colin Watson (cjwatson) wrote :

Now effectively merged into Debian and Natty. Thanks again.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== added file '.gdbinit'
2--- .gdbinit 1970-01-01 00:00:00 +0000
3+++ .gdbinit 2011-03-11 21:16:06 +0000
4@@ -0,0 +1,3 @@
5+define pst
6+ call ps(st)
7+end
8
9=== modified file 'EXTENDING.html'
10--- EXTENDING.html 2007-09-08 09:16:38 +0000
11+++ EXTENDING.html 2011-03-11 21:16:06 +0000
12@@ -1,4 +1,4 @@
13-<!-- $Id: EXTENDING.html 198 2002-09-04 01:17:32Z darren $ -->
14+<!-- $Id$ -->
15 <html>
16 <head>
17 <title>Exuberant Ctags: Adding support for a new language</title>
18
19=== added directory 'Eiffel'
20=== added file 'Eiffel/Ace.ace'
21--- Eiffel/Ace.ace 1970-01-01 00:00:00 +0000
22+++ Eiffel/Ace.ace 2011-03-11 21:16:06 +0000
23@@ -0,0 +1,40 @@
24+-- $Id$
25+
26+system
27+ readtags
28+
29+root
30+ TAG_FILE_READER (root_cluster): "make"
31+
32+default
33+ assertion (all)
34+ multithreaded (no)
35+ console_application (yes)
36+ dynamic_runtime (yes)
37+ dead_code_removal (yes)
38+ profile (no)
39+ line_generation (yes)
40+ debug (yes)
41+ array_optimization (yes)
42+ inlining (yes)
43+ inlining_size ("4")
44+
45+ precompiled ("$ISE_EIFFEL/precomp/spec/$ISE_PLATFORM/base")
46+
47+cluster
48+
49+ root_cluster: "."
50+
51+ -- EiffelBase
52+ all base: "$ISE_EIFFEL/library/base"
53+ exclude
54+ "desc";"table_eiffel3"
55+ end
56+
57+external
58+
59+ include_path: "../../../.."
60+
61+ object: "../../../readtags.o"
62+
63+end
64
65=== added file 'Eiffel/external_addressing.e'
66--- Eiffel/external_addressing.e 1970-01-01 00:00:00 +0000
67+++ Eiffel/external_addressing.e 2011-03-11 21:16:06 +0000
68@@ -0,0 +1,45 @@
69+indexing
70+
71+ description: "Compiler-dependent external addressing of objects"
72+ revision: "$Revision$"
73+ date: "$Date$"
74+ copyright: "Copyright 2002 Darren Hiebert and others"
75+ license: "Eiffel Forum License, version 1"
76+
77+class EXTERNAL_ADDRESSING
78+
79+feature -- Access
80+
81+ string_from_c (p: POINTER): STRING is
82+ -- A new string created from an external C string
83+ do
84+ if (p /= default_pointer) then
85+ create Result.make (0)
86+ Result.from_c (p)
87+ end
88+ end
89+
90+ string_to_c (str: STRING): POINTER is
91+ -- The address of the first character of the string, or
92+ -- default_pointer if `str' is void. This in an inherently
93+ -- dangerous function, since the object referred to by the pointer
94+ -- could be moved by the garbage collector before the pointer is
95+ -- used. Caveat emptor!
96+ local
97+ a: ANY
98+ do
99+ if str = Void then
100+ a := ("").to_c
101+ else
102+ a := str.to_c
103+ end
104+ Result := c_address ($a)
105+ end
106+
107+ c_address (p: POINTER): POINTER is
108+ -- The address passed in
109+ do
110+ Result := p
111+ end
112+
113+end
114
115=== added file 'Eiffel/tag_entry.e'
116--- Eiffel/tag_entry.e 1970-01-01 00:00:00 +0000
117+++ Eiffel/tag_entry.e 2011-03-11 21:16:06 +0000
118@@ -0,0 +1,187 @@
119+indexing
120+
121+ description: "Describes a single entry in a tag file."
122+ revision: "$Revision$"
123+ date: "$Date$"
124+ copyright: "Copyright 2002 Darren Hiebert and others"
125+ license: "Eiffel Forum License, version 1"
126+
127+class TAG_ENTRY
128+
129+inherit
130+
131+ ANY
132+ redefine
133+ out
134+ end
135+
136+creation
137+
138+ make_from_c
139+
140+feature -- Initialization
141+
142+ make_from_c (buffer: STRING) is
143+ -- Create from buffer containing C tagEntry structure
144+ require
145+ buffer_exists: buffer /= Void
146+ local
147+ p: POINTER
148+ do
149+ p := addressing.string_to_c (buffer)
150+
151+ name := addressing.string_from_c (c_name (p))
152+ file := addressing.string_from_c (c_file (p))
153+ pattern := addressing.string_from_c (c_pattern (p))
154+ line_number := c_line_number (p)
155+ kind := addressing.string_from_c (c_kind (p))
156+ file_scoped := c_file_scope (p)
157+
158+ if c_field_count (p) > 0 then
159+ create extension_fields.make_from_c (buffer)
160+ end
161+ end
162+
163+feature -- Access
164+
165+ name: STRING
166+ -- Name of tag
167+
168+ file: STRING
169+ -- Path of source file containing definition of tag
170+
171+ pattern: STRING
172+ -- Pattern for locating source line (may be void)
173+
174+ line_number: INTEGER
175+ -- Line number in source file of tag definition
176+ -- (may be zero if not known)
177+
178+ kind: STRING
179+ -- Kind of tag (may by name, character, or void if not known)
180+
181+ file_scoped: BOOLEAN
182+ -- Is tag of file-limited scope?
183+
184+ extension_fields: TAG_EXTENSION_FIELDS
185+ -- Extension fields (may be void if not available)
186+
187+feature -- Output
188+
189+ out: STRING is
190+ -- Printable representation of tag entry
191+ do
192+ create Result.make (name.count + 1 + file.count + 1 + pattern.count + 40)
193+ Result.append (name)
194+ Result.extend (Tab)
195+ Result.append (file)
196+ Result.extend (Tab)
197+ if pattern /= Void then
198+ Result.append (pattern)
199+ else
200+ Result.append_integer (line_number)
201+ end
202+ end
203+
204+ out_full: STRING is
205+ -- Printable representation of tag entry with extension fields
206+ local
207+ sep: STRING
208+ do
209+ sep := ";%""
210+ Result := out
211+ Result.copy (out)
212+ if kind /= Void then
213+ Result.append (sep); sep := Empty_string
214+ Result.extend (Tab)
215+ Result.append (Kind_key)
216+ Result.extend (Colon)
217+ Result.append (kind)
218+ end
219+ if file_scoped then
220+ Result.append (sep); sep := Empty_string
221+ Result.extend (Tab)
222+ Result.append (File_scope_key)
223+ Result.extend (Colon)
224+ end
225+ if extension_fields /= Void then
226+ Result.append (sep); sep := Empty_string
227+ Result.append (extension_fields.out)
228+ end
229+ end
230+
231+feature {NONE} -- Implementation
232+
233+ Kind_key: STRING is "kind"
234+ -- Key used for "kind" of tag
235+
236+ File_scope_key: STRING is "file"
237+ -- Key used for file scoping of tag
238+
239+ Colon: CHARACTER is ':'
240+ -- Key-value separator
241+
242+ Tab: CHARACTER is '%T'
243+ -- Field separator
244+
245+ Empty_string: STRING is ""
246+ -- Empty string
247+
248+ addressing: EXTERNAL_ADDRESSING is
249+ -- Access to external addressing features
250+ once
251+ create Result
252+ end
253+
254+feature {NONE} -- Externals
255+
256+ c_name (p: POINTER): POINTER is
257+ external
258+ "C [struct %"readtags.h%"] (tagEntry): const char*"
259+ alias
260+ "name"
261+ end
262+
263+ c_file (p: POINTER): POINTER is
264+ external
265+ "C [struct %"readtags.h%"] (tagEntry): const char*"
266+ alias
267+ "file"
268+ end
269+
270+ c_pattern (p: POINTER): POINTER is
271+ external
272+ "C [struct %"readtags.h%"] (tagEntry): const char*"
273+ alias
274+ "address.pattern"
275+ end
276+
277+ c_line_number (p: POINTER): INTEGER is
278+ external
279+ "C [struct %"readtags.h%"] (tagEntry): unsigned long"
280+ alias
281+ "address.lineNumber"
282+ end
283+
284+ c_kind (p: POINTER): POINTER is
285+ external
286+ "C [struct %"readtags.h%"] (tagEntry): const char*"
287+ alias
288+ "kind"
289+ end
290+
291+ c_file_scope (p: POINTER): BOOLEAN is
292+ external
293+ "C [struct %"readtags.h%"] (tagEntry): short"
294+ alias
295+ "fileScope"
296+ end
297+
298+ c_field_count (p: POINTER): INTEGER is
299+ external
300+ "C [struct %"readtags.h%"] (tagEntry): unsigned short"
301+ alias
302+ "fields.count"
303+ end
304+
305+end
306
307=== added file 'Eiffel/tag_extension_fields.e'
308--- Eiffel/tag_extension_fields.e 1970-01-01 00:00:00 +0000
309+++ Eiffel/tag_extension_fields.e 2011-03-11 21:16:06 +0000
310@@ -0,0 +1,154 @@
311+indexing
312+
313+ description: "Variable extension fields for tag file entry."
314+ revision: "$Revision$"
315+ date: "$Date$"
316+ copyright: "Copyright 2002 Darren Hiebert and others"
317+ license: "Eiffel Forum License, version 1"
318+
319+class TAG_EXTENSION_FIELDS
320+
321+inherit
322+
323+ ARRAY [TUPLE [STRING, STRING]]
324+ rename
325+ item as array_item
326+ export
327+ {NONE} all
328+ redefine
329+ out
330+ end
331+
332+creation
333+
334+ make_from_c
335+
336+feature -- Initialization
337+
338+ make_from_c (buffer: STRING) is
339+ -- Create from buffer containing C tagEntry structure
340+ require
341+ buffer_exists: buffer /= Void
342+ local
343+ i: INTEGER
344+ field_count: INTEGER
345+ p, list: POINTER
346+ key: STRING
347+ value: STRING
348+ do
349+ from
350+ field_count := c_field_count (addressing.string_to_c (buffer))
351+ make (1, field_count)
352+ list := c_extension_fields (addressing.string_to_c (buffer))
353+ i := 0
354+ until
355+ i >= field_count
356+ loop
357+ p := list + (i * tag_extension_field_size)
358+ key := addressing.string_from_c (c_key (p))
359+ value := addressing.string_from_c (c_value (p))
360+ put ([value, key], i + 1)
361+ i := i + 1
362+ end
363+ end
364+
365+feature -- Access
366+
367+ item (key: STRING): STRING is
368+ -- Value associated with `key'
369+ require
370+ non_void_key: key /= Void
371+ local
372+ i: INTEGER
373+ key_for_iteration: STRING
374+ do
375+ from
376+ i := lower
377+ until
378+ i > upper or Result /= Void
379+ loop
380+ key_for_iteration ?= array_item (i).item (2)
381+ check not_void: key_for_iteration /= Void end
382+ if key.is_equal (key_for_iteration) then
383+ Result ?= array_item (i).item (1)
384+ end
385+ end
386+ end
387+
388+feature -- Output
389+
390+ out: STRING is
391+ -- Printable representation
392+ local
393+ key, value: STRING
394+ i: INTEGER
395+ do
396+ create Result.make (30)
397+ from
398+ i := lower
399+ until
400+ i > upper
401+ loop
402+ Result.extend (Tab)
403+ key ?= array_item (i).item (2)
404+ check key_exists: key /= Void end
405+ Result.append (key)
406+ Result.extend (Colon)
407+ value ?= array_item (i).item (1)
408+ if value /= Void then
409+ Result.append (value)
410+ end
411+ i := i + 1
412+ end
413+ end
414+
415+feature {NONE} -- Implementation
416+
417+ Colon: CHARACTER is ':'
418+
419+ Tab: CHARACTER is '%T'
420+
421+ addressing: EXTERNAL_ADDRESSING is
422+ -- Access to external addressing features
423+ once
424+ create Result
425+ end
426+
427+feature {NONE} -- Externals
428+
429+ tag_extension_field_size: INTEGER is
430+ external
431+ "C [macro %"readtags.h%"] (): long"
432+ alias
433+ "sizeof (tagExtensionField)"
434+ end
435+
436+ c_field_count (p: POINTER): INTEGER is
437+ external
438+ "C [struct %"readtags.h%"] (tagEntry): unsigned short"
439+ alias
440+ "fields.count"
441+ end
442+
443+ c_extension_fields (p: POINTER): POINTER is
444+ external
445+ "C [struct %"readtags.h%"] (tagEntry): tagExtensionField"
446+ alias
447+ "fields.list"
448+ end
449+
450+ c_key (p: POINTER): POINTER is
451+ external
452+ "C [struct %"readtags.h%"] (tagExtensionField): const char*"
453+ alias
454+ "key"
455+ end
456+
457+ c_value (p: POINTER): POINTER is
458+ external
459+ "C [struct %"readtags.h%"] (tagExtensionField): const char*"
460+ alias
461+ "value"
462+ end
463+
464+end
465
466=== added file 'Eiffel/tag_file.e'
467--- Eiffel/tag_file.e 1970-01-01 00:00:00 +0000
468+++ Eiffel/tag_file.e 2011-03-11 21:16:06 +0000
469@@ -0,0 +1,481 @@
470+indexing
471+
472+ description: "Abstraction of file containing tag records"
473+ revision: "$Revision$"
474+ date: "$Date$"
475+ copyright: "Copyright 2002 Darren Hiebert and others"
476+ license: "Eiffel Forum License, version 1"
477+
478+class TAG_FILE
479+
480+inherit
481+
482+ TAG_FILE_FORMATS
483+ TAG_FILE_SORT_TYPES
484+ EXTERNAL_ADDRESSING
485+ export
486+ {NONE} all
487+ end
488+
489+creation
490+
491+ make
492+
493+feature -- Initialization
494+
495+ make (nm: STRING) is
496+ -- Create from name of existing tag file
497+ require
498+ name_not_empty: nm /= Void and then not nm.is_empty
499+ do
500+ format := Format_extended
501+ sort_type := Sort_case_sensitive
502+ create tag_file_info_struct.make_filled ('%U', tag_file_info_size)
503+ create tag_entry_struct.make_filled ('%U', tag_entry_size)
504+ handle := c_tags_open (
505+ string_to_c (nm), string_to_c (tag_file_info_struct))
506+ open := handle /= default_pointer
507+ if open then
508+ path := nm
509+ format := c_file_format (string_to_c (tag_file_info_struct))
510+ sort_type := c_file_sort (string_to_c (tag_file_info_struct))
511+ program_author := string_from_c (
512+ c_program_author (string_to_c (tag_file_info_struct)))
513+ program_name := string_from_c (
514+ c_program_name (string_to_c (tag_file_info_struct)))
515+ program_url := string_from_c (
516+ c_program_url (string_to_c (tag_file_info_struct)))
517+ program_version := string_from_c (
518+ c_program_version (string_to_c (tag_file_info_struct)))
519+ else
520+ error_number := c_file_error_number (
521+ string_to_c (tag_file_info_struct))
522+ error_description := string_from_c (c_strerror (error_number))
523+ end
524+ ensure
525+ opened: open or else (error_number > 0 and error_description /= Void)
526+ end
527+
528+feature -- Access
529+
530+ path: STRING
531+ -- Path of tag file
532+
533+ program_author: STRING
534+ -- Name of author of generating program (may be null)
535+
536+ program_name: STRING
537+ -- Name of program (may be void)
538+
539+ program_url: STRING
540+ -- URL of distribution (may be void)
541+
542+ program_version: STRING
543+ -- Program version (may be void)
544+
545+ item: TAG_ENTRY
546+ -- Current tag
547+
548+feature -- Status report
549+
550+ open: BOOLEAN
551+ -- Is the tag file open? If this is false, then the system "errno"
552+ -- variable may be examined to determine the cause.
553+
554+ error_number: INTEGER
555+ -- Value of errno of O/S when creation of `Current' fails
556+
557+ error_description: STRING
558+ -- Value of strerror(errno) of O/S when creation of `Current' fails
559+
560+ off: BOOLEAN
561+ -- Is there another tag after this one?
562+
563+ format: INTEGER
564+ -- Format of tag file
565+
566+ sort_type: INTEGER
567+ -- Type of sorting used on file.
568+
569+ partial_matching: BOOLEAN
570+ -- Should searches find tags whose whose leading characters match
571+ -- the supplied string?
572+
573+ ignoring_case: BOOLEAN
574+ -- Should searches match without regard to case?
575+
576+feature -- Status setting
577+
578+ set_sort_type (type: INTEGER) is
579+ -- Force sort type of file (in case automatic detection does not
580+ -- work).
581+ require
582+ open: open
583+ valid_sort_type: valid_sort_type (type)
584+ local
585+ return_code: INTEGER
586+ do
587+ return_code := c_tags_set_sort_type (handle, type)
588+ check no_error: return_code = Tag_success end
589+ sort_type := type
590+ ensure
591+ sort_type_overridden: sort_type = type
592+ end
593+
594+ ignore_case is
595+ -- Disable recognition of case for searches
596+ require
597+ open: open
598+ do
599+ ignoring_case := True
600+ ensure
601+ searches_ignore_case: ignoring_case
602+ end
603+
604+ observe_case is
605+ -- Enable recognition of case for searches
606+ require
607+ open: open
608+ do
609+ ignoring_case := False
610+ ensure
611+ searches_observe_case: not ignoring_case
612+ end
613+
614+ match_partial is
615+ -- Enable partial matching for searches
616+ require
617+ open: open
618+ do
619+ partial_matching := True
620+ ensure
621+ searches_match_partial: partial_matching
622+ end
623+
624+ match_full is
625+ -- Enable full matching for searches
626+ require
627+ open: open
628+ do
629+ partial_matching := False
630+ ensure
631+ searches_match_full: not partial_matching
632+ end
633+
634+ start is
635+ -- Move to first tag in file
636+ require
637+ exists: open
638+ do
639+ read_tag (c_tags_first (handle, string_to_c (tag_entry_struct)))
640+ ensure
641+ item_found: not off implies item /= Void
642+ end
643+
644+ forth is
645+ -- Advance to next tag in file
646+ require
647+ exists: open
648+ another_available: not off
649+ do
650+ read_tag (c_tags_next (handle, string_to_c (tag_entry_struct)))
651+ ensure
652+ item_found: not off implies item /= Void
653+ end
654+
655+ search (name: STRING) is
656+ -- Search from beginning of file for tag matching `name'.
657+ -- Search affected by values of `partial_matching' and
658+ -- `ignoring_case'.
659+ require
660+ open: open
661+ name_supplied: name /= Void and then not name.is_empty
662+ do
663+ search_name := clone (name)
664+ read_tag (c_tags_find (handle, string_to_c (tag_entry_struct),
665+ string_to_c (name), search_options))
666+ ensure
667+ match:
668+ not off implies (item /= Void and then not item.name.is_empty)
669+ non_partial_match:
670+ (not off and not partial_matching)
671+ implies item.name.count = name.count
672+ partial_match:
673+ (not off and partial_matching)
674+ implies item.name.count >= name.count
675+ case_match:
676+ (not off and not ignoring_case) implies
677+ name.is_equal (item.name.substring (1, name.count))
678+ case_ignore_match:
679+ (not off and not ignoring_case) implies
680+ name.as_upper.is_equal (
681+ item.name.substring (1, name.count).as_upper)
682+ end
683+
684+ continue_search is
685+ -- Continue search initiated with `search' using same parameters
686+ -- and options.
687+ require
688+ open: open
689+ not off
690+ do
691+ read_tag (c_tags_find_next (handle, string_to_c (tag_entry_struct)))
692+ ensure
693+ match:
694+ not off implies (item /= Void and then not item.name.is_empty)
695+ non_partial_match:
696+ (not off and not partial_matching)
697+ implies item.name.count = search_name.count
698+ partial_match:
699+ (not off and partial_matching)
700+ implies item.name.count >= search_name.count
701+ case_match:
702+ (not off and not ignoring_case) implies
703+ search_name.is_equal (
704+ item.name.substring (1, search_name.count))
705+ case_ignore_match:
706+ (not off and not ignoring_case) implies
707+ search_name.as_upper.is_equal (
708+ item.name.substring (1, search_name.count).as_upper)
709+ end
710+
711+ close is
712+ -- Close tag file
713+ require
714+ open: open
715+ local
716+ return_code: INTEGER
717+ do
718+ return_code := c_tags_close (handle)
719+ check no_failure: return_code = Tag_success end
720+ handle := default_pointer
721+ ensure
722+ handle_reset: handle = default_pointer
723+ end
724+
725+feature {NONE} -- Implementation
726+
727+ handle: POINTER
728+ -- Handle to tag file
729+
730+ tag_file_info_struct: STRING
731+ -- Buffer for tagFileInfo C structure
732+
733+ tag_entry_struct: STRING
734+ -- Buffer for tagEntry C structure
735+
736+ search_name: STRING
737+ -- Name used in `search'
738+
739+ search_options: INTEGER is
740+ -- Bit representation of search options
741+ do
742+ if partial_matching then
743+ Result := Tag_partial_match
744+ end
745+ if ignoring_case then
746+ Result := Result + Tag_ignore_case
747+ end
748+ end
749+
750+ read_tag (return_code: INTEGER) is
751+ do
752+ if return_code = Tag_success then
753+ create item.make_from_c (tag_entry_struct)
754+ off := False
755+ else
756+ off := True
757+ item := Void
758+ end
759+ end
760+
761+feature {NONE} -- Externals
762+
763+ c_strerror (errnum: INTEGER): POINTER is
764+ external
765+ "C (int): char* | <errno.h>"
766+ alias
767+ "strerror"
768+ end
769+
770+ tag_file_info_size: INTEGER is
771+ external
772+ "C [macro %"readtags.h%"] (): long"
773+ alias
774+ "sizeof (tagFileInfo)"
775+ end
776+
777+ tag_entry_size: INTEGER is
778+ external
779+ "C [macro %"readtags.h%"] (): long"
780+ alias
781+ "sizeof (tagEntry)"
782+ end
783+
784+ Tag_success: INTEGER is
785+ external
786+ "C [macro %"readtags.h%"] (): int"
787+ alias
788+ "TagSuccess"
789+ end
790+
791+ Tag_failure: INTEGER is
792+ external
793+ "C [macro %"readtags.h%"] (): int"
794+ alias
795+ "TagFailure"
796+ end
797+
798+ Tag_unsorted: INTEGER is
799+ external
800+ "C [macro %"readtags.h%"] (): int"
801+ alias
802+ "TAG_UNSORTED"
803+ end
804+
805+ Tag_sorted: INTEGER is
806+ external
807+ "C [macro %"readtags.h%"] (): int"
808+ alias
809+ "TAG_SORTED"
810+ end
811+
812+ Tag_fold_sorted: INTEGER is
813+ external
814+ "C [macro %"readtags.h%"] (): int"
815+ alias
816+ "TAG_FOLDSORTED"
817+ end
818+
819+ Tag_partial_match: INTEGER is
820+ external
821+ "C [macro %"readtags.h%"] (): int"
822+ alias
823+ "TAG_PARTIALMATCH"
824+ end
825+
826+ Tag_ignore_case: INTEGER is
827+ external
828+ "C [macro %"readtags.h%"] (): int"
829+ alias
830+ "TAG_IGNORECASE"
831+ end
832+
833+ c_tags_open (file_path, info: POINTER): POINTER is
834+ -- extern tagFile *tagsOpen (const char *filePath,
835+ -- tagFileInfo *info);
836+ external
837+ "C (const char*, tagFileInfo*): tagFile* | %"readtags.h%""
838+ alias
839+ "tagsOpen"
840+ end
841+
842+ c_tags_set_sort_type (h: POINTER; type: INTEGER): INTEGER is
843+ -- extern tagResult tagsSetSortType (tagFile *file, sortType type);
844+ external
845+ "C (tagFile*, sortType): tagResult | %"readtags.h%""
846+ alias
847+ "tagsSetSortType"
848+ end
849+
850+ c_tags_first (h, entry: POINTER): INTEGER is
851+ external
852+ "C (tagFile*, tagEntry*): tagResult | %"readtags.h%""
853+ alias
854+ "tagsFirst"
855+ end
856+
857+ c_tags_next (h, entry: POINTER): INTEGER is
858+ external
859+ "C (tagFile*, tagEntry*): tagResult | %"readtags.h%""
860+ alias
861+ "tagsNext"
862+ end
863+
864+ c_tags_find (h, entry, name: POINTER; options: INTEGER): INTEGER is
865+ -- extern tagResult tagsFind (tagFile *file, tagEntry *entry,
866+ -- const char *name, int options);
867+ external
868+ "C (tagFile*, tagEntry*, const char*, int): tagResult | %"readtags.h%""
869+ alias
870+ "tagsFind"
871+ end
872+
873+ c_tags_find_next (h, entry: POINTER): INTEGER is
874+ -- extern tagResult tagsFindNext (tagFile *file, tagEntry *entry);
875+ external
876+ "C (tagFile*, tagEntry*): tagResult | %"readtags.h%""
877+ alias
878+ "tagsFindNext"
879+ end
880+
881+ c_tags_close (h: POINTER): INTEGER is
882+ -- extern tagResult tagsClose (tagFile *file);
883+ external
884+ "C (tagFile*): tagResult | %"readtags.h%""
885+ alias
886+ "tagsClose"
887+ end
888+
889+ c_file_opened (p: POINTER): BOOLEAN is
890+ external
891+ "C [struct %"readtags.h%"] (tagFileInfo): int"
892+ alias
893+ "status.opened"
894+ end
895+
896+ c_file_error_number (p: POINTER): INTEGER is
897+ external
898+ "C [struct %"readtags.h%"] (tagFileInfo): int"
899+ alias
900+ "status.error_number"
901+ end
902+
903+ c_file_format (p: POINTER): INTEGER is
904+ external
905+ "C [struct %"readtags.h%"] (tagFileInfo): short"
906+ alias
907+ "file.format"
908+ end
909+
910+ c_file_sort (p: POINTER): INTEGER is
911+ external
912+ "C [struct %"readtags.h%"] (tagFileInfo): short"
913+ alias
914+ "file.sort"
915+ end
916+
917+ c_program_author (p: POINTER): POINTER is
918+ external
919+ "C [struct %"readtags.h%"] (tagFileInfo): const char*"
920+ alias
921+ "program.author"
922+ end
923+
924+ c_program_name (p: POINTER): POINTER is
925+ external
926+ "C [struct %"readtags.h%"] (tagFileInfo): const char*"
927+ alias
928+ "program.name"
929+ end
930+
931+ c_program_url (p: POINTER): POINTER is
932+ external
933+ "C [struct %"readtags.h%"] (tagFileInfo): const char*"
934+ alias
935+ "program.url"
936+ end
937+
938+ c_program_version (p: POINTER): POINTER is
939+ external
940+ "C [struct %"readtags.h%"] (tagFileInfo): const char*"
941+ alias
942+ "program.version"
943+ end
944+
945+invariant
946+
947+ valid_format: valid_format (format)
948+ valid_sort_type: valid_sort_type (sort_type)
949+
950+end
951
952=== added file 'Eiffel/tag_file_formats.e'
953--- Eiffel/tag_file_formats.e 1970-01-01 00:00:00 +0000
954+++ Eiffel/tag_file_formats.e 2011-03-11 21:16:06 +0000
955@@ -0,0 +1,30 @@
956+indexing
957+
958+ description: "Constants describing defined tag file formats."
959+ revision: "$Revision$"
960+ date: "$Date$"
961+ copyright: "Copyright 2002 Darren Hiebert and others"
962+ license: "Eiffel Forum License, version 1"
963+
964+class TAG_FILE_FORMATS
965+
966+feature -- Access
967+
968+ Format_original: INTEGER is 1
969+ -- Original tag file format
970+
971+ Format_extended: INTEGER is 2
972+ -- Extended tag file format
973+
974+feature -- Status report
975+
976+ valid_format (format: INTEGER): BOOLEAN is
977+ -- Is `format' a valid tag file format?
978+ do
979+ Result := format = Format_original or format = Format_extended
980+ ensure
981+ definition: Result implies
982+ (format = Format_original or format = Format_extended)
983+ end
984+
985+end
986
987=== added file 'Eiffel/tag_file_reader.e'
988--- Eiffel/tag_file_reader.e 1970-01-01 00:00:00 +0000
989+++ Eiffel/tag_file_reader.e 2011-03-11 21:16:06 +0000
990@@ -0,0 +1,236 @@
991+indexing
992+
993+ description: "Demo program for TAG_FILE functionality."
994+ revision: "$Revision$"
995+ date: "$Date$"
996+ copyright: "Copyright 2002 Darren Hiebert and others"
997+ license: "Eiffel Forum License, version 1"
998+
999+class TAG_FILE_READER
1000+
1001+inherit
1002+
1003+ TAG_FILE_SORT_TYPES
1004+ export
1005+ {NONE} all
1006+ end
1007+
1008+creation
1009+
1010+ make
1011+
1012+feature -- Initialization
1013+
1014+ make (args: ARRAY [STRING]) is
1015+ -- Root creation
1016+ do
1017+ set_program_name (args.item (0))
1018+ if args.upper = 0 then
1019+ io.error.put_string (usage)
1020+ exceptions.die (1)
1021+ end
1022+ set_default_options
1023+ parse_command_line (args)
1024+ end
1025+
1026+feature {NONE} -- Implmentation
1027+
1028+ program_name: STRING
1029+ -- Name by which program is executed
1030+
1031+ tag_file_name: STRING
1032+ -- Name of tag file
1033+
1034+ sort_type: INTEGER
1035+ -- Sort file override
1036+
1037+ sort_override: BOOLEAN
1038+ -- Did the user override the sort method?
1039+
1040+ showing_extension_fields: BOOLEAN
1041+ -- Did the user request extension fields in output?
1042+
1043+ ignoring_case: BOOLEAN
1044+ -- Did the user request ignoring of case in searches?
1045+
1046+ partial_matching: BOOLEAN
1047+ -- Did the user request partial matching?
1048+
1049+ file: TAG_FILE
1050+ -- Tag file under consideration
1051+
1052+ usage: STRING is
1053+ require
1054+ program_name_assigned: program_name /= Void
1055+ once
1056+ Result :=
1057+ "Find tag file entries matching specified names.%N%NUsage: "
1058+ Result.append (program_name)
1059+ Result.append (
1060+ " [-ilp] [-s[0|1]] [-t file] [name(s)]%N%N%
1061+ %Options:%N%
1062+ % -e Include extension fields in output.%N%
1063+ % -i Perform case-insensitive matching.%N%
1064+ % -l List all tags.%N%
1065+ % -p Perform partial matching.%N%
1066+ % -s[0|1|2] Override sort detection of tag file.%N%
1067+ % -t file Use specified tag file (default: %"tags%").%N%
1068+ %Note that options are acted upon as encountered, so order is significant.%N")
1069+ end
1070+
1071+ set_program_name (name: STRING) is
1072+ -- Set the program name from path
1073+ require
1074+ name_supplied: name /= Void
1075+ local
1076+ slash: INTEGER
1077+ do
1078+ slash := name.last_index_of ('/', name.count)
1079+ if slash = 0 then
1080+ slash := name.last_index_of ('\', name.count)
1081+ end
1082+ program_name := clone (name)
1083+ if slash > 0 then
1084+ program_name.keep_tail (program_name.count - slash)
1085+ end
1086+ end
1087+
1088+ set_default_options is
1089+ -- Set default options
1090+ do
1091+ tag_file_name := "tags"
1092+ end
1093+
1094+ parse_command_line (args: ARRAY [STRING]) is
1095+ local
1096+ i, j: INTEGER
1097+ arg: STRING
1098+ action_supplied: BOOLEAN
1099+ do
1100+ from i := 1 until i > args.upper loop
1101+ arg := args.item (i)
1102+ if arg.item (1) /= '-' then
1103+ find_tag (arg)
1104+ action_supplied := True
1105+ else
1106+ from j := 2 until j > arg.count loop
1107+ inspect arg.item (j)
1108+ when 'e' then showing_extension_fields := True
1109+ when 'i' then ignoring_case := True
1110+ when 'p' then partial_matching := True
1111+ when 'l' then list_tags; action_supplied := True
1112+ when 't' then
1113+ if j < arg.count then
1114+ tag_file_name := arg.substring (j+1, arg.count)
1115+ j := arg.count
1116+ elseif i < args.upper then
1117+ i := i + 1
1118+ tag_file_name := args.item (i)
1119+ else
1120+ io.error.put_string (usage)
1121+ exceptions.die (1)
1122+ end
1123+ when 's' then
1124+ sort_override := True
1125+ j := j + 1
1126+ if j > arg.count then
1127+ sort_type := Sort_case_sensitive
1128+ elseif arg.item (j).is_digit then
1129+ sort_type := arg.item (j).code - ('0').code
1130+ else
1131+ io.error.put_string (usage)
1132+ exceptions.die (1)
1133+ end
1134+ else
1135+ report_unknown_option (arg.item (j))
1136+ end
1137+ j := j + 1
1138+ end
1139+ end
1140+ i := i + 1
1141+ end
1142+ if not action_supplied then report_no_action end
1143+ end
1144+
1145+ report_unknown_option (switch: CHARACTER) is
1146+ -- Report `switch' as unknown option
1147+ do
1148+ io.error.put_string (program_name)
1149+ io.error.put_string (": unknown option: ")
1150+ io.error.put_character (switch)
1151+ io.error.put_character ('%N')
1152+ exceptions.die (1)
1153+ end
1154+
1155+ report_no_action is
1156+ -- Report `switch' as unknown option
1157+ do
1158+ io.error.put_string (program_name)
1159+ io.error.put_string (
1160+ ": no action specified: specify tag name(s) or -l option%N")
1161+ exceptions.die (1)
1162+ end
1163+
1164+ find_tag (name: STRING) is
1165+ -- Find tag matching `name'
1166+ do
1167+ from
1168+ open_tag_file
1169+ if ignoring_case then file.ignore_case end
1170+ if partial_matching then file.match_partial end
1171+ file.search (name)
1172+ until
1173+ file.off
1174+ loop
1175+ print_tag (file.item)
1176+ file.continue_search
1177+ end
1178+ file.close
1179+ end
1180+
1181+ list_tags is
1182+ -- List all tags
1183+ do
1184+ open_tag_file
1185+ from file.start until file.off loop
1186+ print_tag (file.item)
1187+ file.forth
1188+ end
1189+ file.close
1190+ end
1191+
1192+ open_tag_file is
1193+ -- Open tag file and check for errors
1194+ do
1195+ create file.make (tag_file_name)
1196+ if not file.open then
1197+ io.error.put_string (program_name)
1198+ io.error.put_string (": cannot open tag file: ")
1199+ io.error.put_string (file.error_description)
1200+ io.error.put_string (": ")
1201+ io.error.put_string (tag_file_name)
1202+ io.error.put_character ('%N')
1203+ exceptions.die (1)
1204+ end
1205+ if sort_override then file.set_sort_type (sort_type) end
1206+ end
1207+
1208+ print_tag (tag: TAG_ENTRY) is
1209+ -- Print tag contents to standard output
1210+ require
1211+ tag_supplied: tag /= Void
1212+ do
1213+ if showing_extension_fields then
1214+ io.put_string (tag.out_full)
1215+ else
1216+ io.put_string (tag.out)
1217+ end
1218+ io.put_character ('%N')
1219+ end
1220+
1221+ exceptions: EXCEPTIONS is
1222+ once
1223+ create Result
1224+ end
1225+
1226+end
1227
1228=== added file 'Eiffel/tag_file_sort_types.e'
1229--- Eiffel/tag_file_sort_types.e 1970-01-01 00:00:00 +0000
1230+++ Eiffel/tag_file_sort_types.e 2011-03-11 21:16:06 +0000
1231@@ -0,0 +1,36 @@
1232+indexing
1233+
1234+ description: "Constants describing defined tag file sort types."
1235+ revision: "$Revision$"
1236+ date: "$Date$"
1237+ copyright: "Copyright 2002 Darren Hiebert and others"
1238+ license: "Eiffel Forum License, version 1"
1239+
1240+class TAG_FILE_SORT_TYPES
1241+
1242+feature
1243+
1244+ Sort_none: INTEGER is 0
1245+ -- Tag file is not sorted
1246+
1247+ Sort_case_sensitive: INTEGER is 1
1248+ -- Tag file is sorted in case-sensitive manner
1249+
1250+ Sort_case_insensitive: INTEGER is 2
1251+ -- Tag file is sorted in case-insensitive manner, with lower-case
1252+ -- folded onto upper case.
1253+
1254+feature -- Status report
1255+
1256+ valid_sort_type (sort: INTEGER): BOOLEAN is
1257+ -- Is `sort' a valid tag file sort type?
1258+ do
1259+ Result := sort = Sort_none or
1260+ sort = Sort_case_sensitive or
1261+ sort = Sort_case_insensitive
1262+ ensure
1263+ definition: Result implies (sort = Sort_none or
1264+ sort = Sort_case_sensitive or sort = Sort_case_insensitive)
1265+ end
1266+
1267+end
1268
1269=== modified file 'FAQ'
1270--- FAQ 2004-03-30 11:56:40 +0000
1271+++ FAQ 2011-03-11 21:16:06 +0000
1272@@ -1,4 +1,4 @@
1273-Frequently Asked Questions
1274+vberthoux@users.sourceforge.netFrequently Asked Questions
1275 ==========================
1276
1277 * 1. Why do you call it "Exuberant Ctags"?
1278@@ -354,7 +354,7 @@
1279
1280 And replace the configuration of step 3 with this:
1281
1282- :set tags=./tags,./../tags,./../../tags,./../../../tags,tags
1283+ :set tags=./tags;$HOME,tags
1284
1285 As a caveat, it should be noted that step 2 builds a global tag file whose
1286 file names will be relative to the directory in which the global tag file
1287
1288=== modified file 'Makefile.in'
1289--- Makefile.in 2009-07-14 15:05:23 +0000
1290+++ Makefile.in 2011-03-11 21:16:06 +0000
1291@@ -1,4 +1,4 @@
1292-# $Id: Makefile.in 709 2009-07-04 05:29:28Z dhiebert $
1293+# $Id$
1294 #
1295 # Makefile for UNIX-like platforms.
1296 #
1297
1298=== modified file 'NEWS'
1299--- NEWS 2009-07-14 15:05:23 +0000
1300+++ NEWS 2011-03-11 21:16:06 +0000
1301@@ -1,4 +1,14 @@
1302-Current Version: 5.8
1303+Current Version: @VERSION@
1304+
1305+ctags-@VERSION@ (@DATE@)
1306+* Added support for new "attached" and "detachable" keywords [Eiffel].
1307+* Fixed parsing of comments after import statements and other tags, contributed by Huandari Lopez to Geany [Python].
1308+* Fixed PHP parser to ignore keywords inside comments [PHP, Bug #1795926].
1309+* Fixed regular expressions for Ant so they won't span multiple tags [Ant].
1310+* Fixed infinite loop with malformed Makefiles, contributed by Martin Dorey [Make, Bug #2959889].
1311+* Fixed Verilog parameter parsing, contributed by Nicolas Vincent [Verilog, Patch #2747828].
1312+* Fixed error when parsing empty file [OCaml].
1313+* Enabled Large File System support. [Bug #3062068]
1314
1315 ctags-5.8 (09 Jul 2009)
1316 * Removed ".ml" as a Lisp extension (now OCaml) [Lisp].
1317
1318=== added directory 'Test'
1319=== added file 'Test/1795612.js'
1320--- Test/1795612.js 1970-01-01 00:00:00 +0000
1321+++ Test/1795612.js 2011-03-11 21:16:06 +0000
1322@@ -0,0 +1,27 @@
1323+
1324+// This file should generate the following tags:
1325+// methods
1326+// Test.RPC.asyncMethod
1327+// Test.RPC.asyncRequest
1328+// properties
1329+// Test.RPC.request_id
1330+Test.RPC =
1331+{
1332+ request_id: 0,
1333+
1334+ asyncRequest: function(
1335+ /* string */ uri,
1336+ /* object */ data,
1337+ /* object */ callback)
1338+ {
1339+ },
1340+
1341+ asyncMethod: function(
1342+ /* string */ uri,
1343+ /* string */ method,
1344+ /* array */ params,
1345+ /* object */ callback)
1346+ {
1347+ }
1348+};
1349+
1350
1351=== added file 'Test/1850914.js'
1352--- Test/1850914.js 1970-01-01 00:00:00 +0000
1353+++ Test/1850914.js 2011-03-11 21:16:06 +0000
1354@@ -0,0 +1,25 @@
1355+// This file should generate the following tags:
1356+//
1357+// methods
1358+// objectLiteral.objLiteralMethod
1359+// properties
1360+// objectLiteral.objLiteralProperty
1361+
1362+
1363+/**
1364+* This is an object literal
1365+*/
1366+var objectLiteral = {
1367+/**
1368+* This is a literal object property
1369+*/
1370+objLiteralProperty : 1,
1371+/**
1372+* This is a literal object method
1373+*/
1374+objLiteralMethod : function(){}
1375+}
1376+
1377+// When I run ctags on this (ctags -f - test.js) I get no output. I expect it
1378+// to give me something for both "objectLiteral" and "objLiteralMethod".
1379+
1380
1381=== added file 'Test/1878155.js'
1382--- Test/1878155.js 1970-01-01 00:00:00 +0000
1383+++ Test/1878155.js 2011-03-11 21:16:06 +0000
1384@@ -0,0 +1,11 @@
1385+
1386+// This should handle the escaped quote
1387+var RE={/foo\"/: "bar"};
1388+
1389+// This should also handle the escaped quote
1390+// A tag should be created for the global variable "foo".
1391+var foo="foo \" some other stuff";
1392+
1393+// A tag should be created for this function "my_function".
1394+function my_function() {
1395+}
1396
1397=== added file 'Test/1880687.js'
1398--- Test/1880687.js 1970-01-01 00:00:00 +0000
1399+++ Test/1880687.js 2011-03-11 21:16:06 +0000
1400@@ -0,0 +1,98 @@
1401+
1402+// All these examples contain various forms of IF statements
1403+// with missing semicolons. Each of these are valid and must
1404+// be accommodated.
1405+//
1406+// After running ctags: ctags -f tags 1880687.js
1407+// The following tags should be generated:
1408+// functions
1409+// a
1410+// b
1411+// c
1412+// d
1413+// e
1414+// f
1415+// g
1416+// h
1417+// i
1418+// j
1419+// k
1420+// l
1421+// m
1422+// n
1423+
1424+function a(flag){
1425+ if(flag)
1426+ test(1);
1427+ else
1428+ test(2)
1429+}
1430+
1431+function b(){
1432+ var b= 33;
1433+}
1434+
1435+function c(flag){
1436+ if(flag)
1437+ test(1);
1438+}
1439+
1440+function d(){
1441+ var b= 33;
1442+}
1443+
1444+function e(flag){
1445+ if(flag)
1446+ test(1)
1447+}
1448+
1449+function f(){
1450+ var b= 33;
1451+}
1452+
1453+function g(flag){
1454+ if(flag) {
1455+ test(1)
1456+ }
1457+}
1458+
1459+function h(){
1460+ var b= 33;
1461+}
1462+
1463+function i(flag){
1464+ if(flag) {
1465+ test(1);
1466+ }
1467+}
1468+
1469+function j(){
1470+ var b= 33;
1471+}
1472+
1473+function k(flag){
1474+ if(flag) {
1475+ test(1);
1476+ }
1477+ else
1478+ flag = false;
1479+}
1480+
1481+function l(){
1482+ var b= 33;
1483+}
1484+
1485+function m(flag){
1486+ if(flag) {
1487+ test(1);
1488+ }
1489+ else {
1490+ flag = false;
1491+ }
1492+}
1493+
1494+function n(){
1495+ var b= 33;
1496+}
1497+
1498+
1499
1500=== added file 'Test/2023624.js'
1501--- Test/2023624.js 1970-01-01 00:00:00 +0000
1502+++ Test/2023624.js 2011-03-11 21:16:06 +0000
1503@@ -0,0 +1,15 @@
1504+/*
1505+ * Both functions should be tagged.
1506+ * The embedded quote was fixed in issue:
1507+ * [ 1878155 ] Javascript escaped quotation mark brakes output
1508+ * [ 2023712 ] parseString for javascript broken on embedded quote
1509+ * The fix will be part of the 5.8 release.
1510+ */
1511+
1512+function f1() {
1513+var str = 'This function will be listed.';
1514+}
1515+
1516+function f2() {
1517+var str = 'This function won\'t.';
1518+}
1519
1520=== added file 'Test/68hc11.asm'
1521--- Test/68hc11.asm 1970-01-01 00:00:00 +0000
1522+++ Test/68hc11.asm 2011-03-11 21:16:06 +0000
1523@@ -0,0 +1,23 @@
1524+INTERRUPTS:
1525+;
1526+PORTD EQU $1008
1527+;
1528+SP EQU $20
1529+;
1530+TRAPP FCB CR,LF
1531+ FCB CR,LF
1532+ FCC ' ******** ILLEGAL OPCODE TRAP !!! ********'
1533+ FCB CR,LF
1534+ FCB 0
1535+PROMPT FCB CR,LF
1536+ FCC ' 68Mon V1.2 (C) 1992 Keith Vasilakes'
1537+ FCB CR,LF
1538+ FCB 0
1539+COLD LDS #STACK
1540+ LDAA #$20
1541+
1542+; http://www.mekatronix.com/downloads/docs/as11_man.pdf
1543+sym1 EQU 1
1544+sym2: EQU 2
1545+sym3:
1546+sym4: bne sym3
1547
1548=== added file 'Test/Package.pm'
1549--- Test/Package.pm 1970-01-01 00:00:00 +0000
1550+++ Test/Package.pm 2011-03-11 21:16:06 +0000
1551@@ -0,0 +1,57 @@
1552+# This file is intended to test package keyword support along with
1553+# multi-line subroutine definitions, like this:
1554+# sub
1555+#
1556+# somefunction
1557+# {...
1558+
1559+package Test::One;
1560+
1561+package Test::One::Two;
1562+
1563+package Test;
1564+
1565+use strict;
1566+use warnings;
1567+
1568+sub
1569+
1570+ init {
1571+}
1572+
1573+use constant
1574+CONST => 1;
1575+
1576+=head2 quo
1577+
1578+This is 'quo' subroutine
1579+
1580+=cut
1581+
1582+sub quo;
1583+
1584+quo;
1585+
1586+Test::quo;
1587+
1588+sub quo {
1589+ goto END;
1590+ die;
1591+END:
1592+END2 :
1593+ print "END!\n";
1594+ return;
1595+}
1596+
1597+sub xuz :lvalue;
1598+
1599+sub xtz (&@;$) :lvalue;
1600+
1601+sub
1602+# This should create a tag
1603+dude
1604+{
1605+ 1;
1606+}
1607+
1608+1;
1609
1610=== added file 'Test/aliases.e'
1611--- Test/aliases.e 1970-01-01 00:00:00 +0000
1612+++ Test/aliases.e 2011-03-11 21:16:06 +0000
1613@@ -0,0 +1,29 @@
1614+class ALIASES
1615+
1616+feature -- One
1617+
1618+ attribute_a, attribute_b: INTEGER
1619+
1620+ constant_a, constant_b: INTEGER is 1
1621+
1622+feature -- Two
1623+
1624+ function1a, function1b (one: DOUBLE): DOUBLE is
1625+ do
1626+ end
1627+
1628+feature -- Three
1629+
1630+ procedure1a, procedure1b (one: DOUBLE) is
1631+ do
1632+ end
1633+
1634+ a, infix "<", b (other: like Current): BOOLEAN is
1635+ do
1636+ end
1637+
1638+ yor, infix "^", zor (other: like Current): INTEGER is
1639+ do
1640+ end
1641+
1642+end
1643
1644=== added file 'Test/angle_bracket.cpp'
1645--- Test/angle_bracket.cpp 1970-01-01 00:00:00 +0000
1646+++ Test/angle_bracket.cpp 2011-03-11 21:16:06 +0000
1647@@ -0,0 +1,16 @@
1648+static void foo (int nelem)
1649+{
1650+ int rsize = 2;
1651+ while (nelem < 0) {
1652+ rsize <<= 1;
1653+ }
1654+}
1655+
1656+static void bar (int value)
1657+{
1658+ return value < 0 ? value : 3;
1659+}
1660+
1661+static bar2 (void)
1662+{
1663+}
1664
1665=== added file 'Test/array-spec.f90'
1666--- Test/array-spec.f90 1970-01-01 00:00:00 +0000
1667+++ Test/array-spec.f90 2011-03-11 21:16:06 +0000
1668@@ -0,0 +1,10 @@
1669+ MODULE inm_df
1670+ IMPLICIT none
1671+ SAVE
1672+ TYPE df_type
1673+ REAL(8), POINTER :: &
1674+ df_mb_time(:), df_wb_time(:)
1675+ REAL(4), POINTER :: &
1676+ df_mb_data(:,:), df_wb_data(:,:)
1677+ END TYPE
1678+ END MODULE inm_df
1679
1680=== added file 'Test/array_ref_and_out.cs'
1681--- Test/array_ref_and_out.cs 1970-01-01 00:00:00 +0000
1682+++ Test/array_ref_and_out.cs 2011-03-11 21:16:06 +0000
1683@@ -0,0 +1,33 @@
1684+// Programmer's Reference: Passing Array Using ref and out
1685+public static void MyMethod(out int[] arr)
1686+{
1687+ arr = new int[10]; // definite assignment of arr
1688+}
1689+
1690+public static void MyMethod(ref int[] arr)
1691+{
1692+ arr = new int[10]; // arr initialized to a different array
1693+}
1694+
1695+using System;
1696+class TestOut
1697+{
1698+ static public void FillArray(out int[] myArray)
1699+ {
1700+ // Initialize the array:
1701+ myArray = new int[5] {1, 2, 3, 4, 5};
1702+ }
1703+
1704+ static public void Main()
1705+ {
1706+ int[] myArray; // Initialization is not required
1707+
1708+ // Pass the array to the callee using out:
1709+ FillArray(out myArray);
1710+
1711+ // Display the array elements:
1712+ Console.WriteLine("Array elements are:");
1713+ for (int i=0; i < myArray.Length; i++)
1714+ Console.WriteLine(myArray[i]);
1715+ }
1716+}
1717
1718=== added file 'Test/array_spec.f90'
1719--- Test/array_spec.f90 1970-01-01 00:00:00 +0000
1720+++ Test/array_spec.f90 2011-03-11 21:16:06 +0000
1721@@ -0,0 +1,15 @@
1722+! Bug reported by Jim Chen on 31 Dec 2002
1723+module Global_Variables
1724+implicit none
1725+
1726+! Example of array-spec in entity-decl
1727+real*8, save :: &
1728+H (NDIM, NDIM) = 0.D0, &
1729+H0(NDIM, NDIM), &
1730+H1(NDIM, NDIM) = 0.D0, &
1731+H2(NDIM, NDIM) = 0.D0, &
1732+H3(NDIM, NDIM) = 0.D0, &
1733+H4(NDIM, NDIM) = 0.D0, &
1734+H5(NDIM, NDIM) = 0.D0
1735+
1736+end module Global_Variables
1737
1738=== added file 'Test/attributes.cs'
1739--- Test/attributes.cs 1970-01-01 00:00:00 +0000
1740+++ Test/attributes.cs 2011-03-11 21:16:06 +0000
1741@@ -0,0 +1,22 @@
1742+[DllImport] public class MyDllimportClass {}
1743+
1744+[DllImport("user32.dll", SetLastError=false, ExactSpelling=false)]
1745+[DllImport("user32.dll", ExactSpelling=false, SetLastError=false)]
1746+[DllImport("user32.dll")]
1747+
1748+[Conditional("DEBUG"), Conditional("TEST1")] void TraceMethod() {}
1749+
1750+using System;
1751+[AttributeUsage(AttributeTargets.Class|AttributeTargets.Struct)]
1752+public class Author : Attribute
1753+{
1754+ public Author(string name) { this.name = name; version = 1.0; }
1755+ public double version;
1756+ string name;
1757+}
1758+
1759+[AttributeUsage(AttributeTargets.Class|AttributeTargets.Struct,
1760+ AllowMultiple=true)] // multiuse attribute
1761+public class Author : Attribute
1762+{
1763+}
1764
1765=== added file 'Test/attributes.e'
1766--- Test/attributes.e 1970-01-01 00:00:00 +0000
1767+++ Test/attributes.e 2011-03-11 21:16:06 +0000
1768@@ -0,0 +1,31 @@
1769+expanded class ATTRIBUTES
1770+
1771+feature
1772+
1773+ one: INTEGER
1774+ -- Header comment
1775+
1776+ two: ARRAY [STRING]
1777+ -- Header comment
1778+
1779+ three: HASH_TABLE [ARRAY [DOUBLE], STRING]
1780+ -- Header comment
1781+
1782+ four: DOUBLE
1783+ -- Header comment
1784+
1785+ five, six: INTEGER is unique
1786+ -- Header comment
1787+
1788+ seven: INTEGER is 1
1789+ -- Header comment
1790+
1791+ eight: DOUBLE is 2.0
1792+ -- Header comment
1793+
1794+ nine: STRING is "abc"
1795+ -- Header comment
1796+
1797+ anchored: like one
1798+
1799+end
1800
1801=== added file 'Test/auto.f'
1802--- Test/auto.f 1970-01-01 00:00:00 +0000
1803+++ Test/auto.f 2011-03-11 21:16:06 +0000
1804@@ -0,0 +1,7 @@
1805+! Provided by Brian Helsinki, 7 March 2003
1806+ program AUTO_TEST
1807+ AUTOMATIC A, B, C
1808+ AUTOMATIC REAL P, D, Q
1809+ !IMPLICIT AUTOMATIC REAL (X-Z)
1810+ END
1811+
1812
1813=== added file 'Test/bd32.s'
1814--- Test/bd32.s 1970-01-01 00:00:00 +0000
1815+++ Test/bd32.s 2011-03-11 21:16:06 +0000
1816@@ -0,0 +1,43 @@
1817+* From: http://www.programmersheaven.com/zone5/cat462/3642.htm
1818+* For 68000 assembler manual, see http://www.ece.iit.edu/ftp/242/Asm.doc
1819+*
1820+* test driver for BD32 programming command
1821+* Scott Howard February 1992
1822+* Format: TEST <parameter 1> [<parameter 2> ...]
1823+* simply echoes the command line parameters back to the user
1824+
1825+ opt nol
1826+ include ipd.inc
1827+ opt l
1828+ dc.l TEST execution address
1829+signon dc.b 'TEST PROGRAM for BD32 programming drivers'
1830+CRLF dc.b 13,10,0 <cr>, <lf>, null
1831+ even
1832+
1833+* following is the mainline routine for the driver
1834+
1835+TEST move.l a0,a1 get argv in a1
1836+ move.l d0,d2 get argc
1837+ lea.l signon(PC),a0 print signon string
1838+ moveq.l #BD_PUTS,d0 use 'putstring' function in BD32
1839+ bgnd
1840+ cmpi.l #2,d2 arg count < 2?
1841+ bcc test_1
1842+ moveq.l #1,d1 bail out - error code 1
1843+ bra test_error
1844+test_1 moveq.l #BD_PUTS,d0 puts () system call
1845+ movea.l (a1)+,a0 point to next string
1846+ bgnd
1847+ moveq.l #' ',d1 print space between each one
1848+ moveq.l #BD_PUTCHAR,d0
1849+ bgnd
1850+ subq #1,d2
1851+ bne test_1 loop till done
1852+ lea.l CRLF(PC),a0 point to <cr> <lf> string
1853+ moveq.l #BD_PUTS,d0 display it on user screen
1854+ bgnd
1855+ clr.l d1 indicate 'no error' to BD32
1856+test_error moveq.l #BD_QUIT,d0 all done - quit
1857+ bgnd
1858+
1859+ END TEST
1860
1861=== added file 'Test/bit_field.c'
1862--- Test/bit_field.c 1970-01-01 00:00:00 +0000
1863+++ Test/bit_field.c 2011-03-11 21:16:06 +0000
1864@@ -0,0 +1,35 @@
1865+struct bit_fields {
1866+ unsigned int a: 1;
1867+ unsigned int b: 1;
1868+ unsigned int c: 2;
1869+};
1870+
1871+struct {
1872+ unsigned sign : 1;
1873+ unsigned exp : _FP_EXPBITS_D;
1874+ unsigned frac1 : _FP_FRACBITS_D - (_FP_IMPLBIT_D != 0) - _FP_W_TYPE_SIZE;
1875+ unsigned frac0 : _FP_W_TYPE_SIZE;
1876+};
1877+
1878+struct shortname_info {
1879+ unsigned char lower:1,
1880+ upper:1,
1881+ valid:1;
1882+};
1883+
1884+// Problem reported by Michael Brown on 23 October 2001.
1885+typedef struct
1886+{
1887+ BYTE public: 1;
1888+ BYTE bad2: 1;
1889+ BYTE group: 1;
1890+ BYTE personal: 1;
1891+} bitfield_flags;
1892+
1893+typedef struct
1894+{
1895+ BYTE this;
1896+ BYTE public;
1897+ BYTE private;
1898+ BYTE that;
1899+} mystruct;
1900
1901=== added file 'Test/bug1020715.c'
1902--- Test/bug1020715.c 1970-01-01 00:00:00 +0000
1903+++ Test/bug1020715.c 2011-03-11 21:16:06 +0000
1904@@ -0,0 +1,52 @@
1905+/*
1906+Bugs item #1020715, was opened at 2004-09-01 22:42
1907+Message generated for change (Tracker Item Submitted) made by Item Submitter
1908+You can respond by visiting:
1909+https://sourceforge.net/tracker/?func=detail&atid=106556&aid=1020715&group_id=6556
1910+
1911+Category: None
1912+Group: None
1913+Status: Open
1914+Resolution: None
1915+Priority: 5
1916+Submitted By: Arne Georg Gleditsch (argggh)
1917+Assigned to: Nobody/Anonymous (nobody)
1918+Summary: Strange parsing of C code
1919+
1920+Initial Comment:
1921+Running ctags 5.5.4 like this
1922+
1923+/usr/local/bin/ctags --fields=+S --excmd=number -f - --c-types=+l /usr/src/source/2.6.6/drivers/scsi/aha152x.c | grep ^done
1924+
1925+returns a bogus entry for the function "done" on line
1926+1745 with a wacky signature. The file aha152x.c is
1927+from Linux 2.6.6, but is appended for convenience.
1928+*/
1929+/*
1930+Date: 2007-08-14 01:00
1931+Sender: elliotth
1932+Hide
1933+
1934+i don't really understand why the other lines in the test case were
1935+necessary to exercise the bug, but changing parseParens to call
1936+processAngleBracket instead of just skipToMatch("<>") fixes this bug. i've
1937+committed that since it causes no regressions.
1938+
1939+
1940+Date: 2007-08-14 00:34
1941+Sender: elliotth
1942+Hide
1943+
1944+i've come up with a minimal test case, and committed it. it's pretty
1945+weird:
1946+*/
1947+void f() {
1948+ done(a<<1);
1949+ a->a;
1950+ if (a->a) {
1951+ }
1952+}
1953+/*
1954+change just about anything and the bizarre "done" tag goes away. you can't
1955+even switch from '->' to '.', which seems odd.
1956+*/
1957
1958=== added file 'Test/bug1020715.cpp'
1959--- Test/bug1020715.cpp 1970-01-01 00:00:00 +0000
1960+++ Test/bug1020715.cpp 2011-03-11 21:16:06 +0000
1961@@ -0,0 +1,6 @@
1962+void f() {
1963+ done(a<<1);
1964+ a->a;
1965+ if (a->a) {
1966+ }
1967+}
1968
1969=== added file 'Test/bug1085585.c'
1970--- Test/bug1085585.c 1970-01-01 00:00:00 +0000
1971+++ Test/bug1085585.c 2011-03-11 21:16:06 +0000
1972@@ -0,0 +1,37 @@
1973+/*
1974+Bugs item #1085585, was opened at 2004-12-14 20:55
1975+Message generated for change (Tracker Item Submitted) made by Item Submitter
1976+You can respond by visiting:
1977+https://sourceforge.net/tracker/?func=detail&atid=106556&aid=1085585&group_id=6556
1978+
1979+Category: None
1980+Group: None
1981+Status: Open
1982+Resolution: None
1983+Priority: 5
1984+Submitted By: boisterous (yadavnav)
1985+Assigned to: Nobody/Anonymous (nobody)
1986+Summary: ctags 5.5.4 doesn't work correctly on some files
1987+
1988+Initial Comment:
1989+Hi,
1990+
1991+I ran exuberant ctags on the following file
1992+
1993+FreeBSD kernel : src/sys/crypto/des/des_setkey.c
1994+
1995+If I run the 5.5.4 ctags on version 1.3 of the above
1996+file then it doesn't produce all the tags
1997+
1998+The version 1.3 is at:
1999+
2000+http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/crypto/des/des_setkey.c?rev=1.3&content-type=text/x-cvsweb-markup
2001+
2002+[...]
2003+
2004+Why does ctags fail on the 1.3 version of the file ?
2005+*/
2006+
2007+/* relevant portion from file */
2008+static int check_parity(des_cblock (*key));
2009+int des_check_key=0;
2010
2011=== added file 'Test/bug1086609.c'
2012--- Test/bug1086609.c 1970-01-01 00:00:00 +0000
2013+++ Test/bug1086609.c 2011-03-11 21:16:06 +0000
2014@@ -0,0 +1,41 @@
2015+/*
2016+Bugs item #1086609, was opened at 2004-12-16 13:07
2017+Message generated for change (Tracker Item Submitted) made by Item Submitter
2018+You can respond by visiting:
2019+https://sourceforge.net/tracker/?func=detail&atid=106556&aid=1086609&group_id=6556
2020+
2021+Category: None
2022+Group: None
2023+Status: Open
2024+Resolution: None
2025+Priority: 5
2026+Submitted By: Mikhail Kruk (meshko)
2027+Assigned to: Nobody/Anonymous (nobody)
2028+Summary: ctags getting confused by #if 0
2029+
2030+Initial Comment:
2031+Here is a sample C program which confuses ctags. I
2032+think every line in it is significant. Dropping any of
2033+the #ifdefs or the #define makes the problem go away:
2034+*/
2035+#if 0
2036+#define __PROC__
2037+int func1(
2038+#if 0
2039+#endif
2040+)
2041+{
2042+}
2043+#endif
2044+
2045+int func2(int a)
2046+{
2047+}
2048+/*
2049+Somehow the opening brace from line 3 doesn't get
2050+ignored and the closing brace does get ignored and
2051+ctags drops out on "int func2(int a)" line with "failed
2052+to find match for '(' at line 11" error.
2053+Granted, having #if 0 in the middle of args list is
2054+weird, but perfeclty legal.
2055+*/
2056
2057=== added file 'Test/bug1093123.cpp'
2058--- Test/bug1093123.cpp 1970-01-01 00:00:00 +0000
2059+++ Test/bug1093123.cpp 2011-03-11 21:16:06 +0000
2060@@ -0,0 +1,7 @@
2061+#include <iostream>
2062+
2063+int main() {
2064+using namespace std;
2065+cout << 0 << endl;
2066+int m;
2067+}
2068
2069=== added file 'Test/bug1111214-j-chan.v'
2070--- Test/bug1111214-j-chan.v 1970-01-01 00:00:00 +0000
2071+++ Test/bug1111214-j-chan.v 2011-03-11 21:16:06 +0000
2072@@ -0,0 +1,8 @@
2073+/*
2074+*
2075+**/
2076+module top(outsig, insig);
2077+output outsig;
2078+input insig;
2079+assign outsig = insig;
2080+endmodule
2081
2082=== added file 'Test/bug1111214.v'
2083--- Test/bug1111214.v 1970-01-01 00:00:00 +0000
2084+++ Test/bug1111214.v 2011-03-11 21:16:06 +0000
2085@@ -0,0 +1,17 @@
2086+// File example.v
2087+//
2088+// Below is an example of a comment that is mis-parsed by exuberant ctags.
2089+// It uses the multi-line comment format, i.e. /* ... */ except that in
2090+// this case, the character sequence immediately preceeding the closing
2091+// delimiter is an asterisk. (Any even number of asterisks would have the
2092+// same problem.
2093+// The line immediately afterwards is used to demonstrate the problem.
2094+// the module name 'wahoo' isn't recognised, because the parser mistakenly
2095+// thinks we are still in a multi-line comment.
2096+/*
2097+ * I am a multi-line comment
2098+ * I happen to end in a strange
2099+ * (but legal) way: **/
2100+module wahoo ()
2101+begin
2102+end
2103
2104=== added file 'Test/bug1187505.cpp'
2105--- Test/bug1187505.cpp 1970-01-01 00:00:00 +0000
2106+++ Test/bug1187505.cpp 2011-03-11 21:16:06 +0000
2107@@ -0,0 +1,5 @@
2108+MY_MACRO(qwerty < 1);
2109+
2110+class Abra : public Kadabra
2111+{
2112+};
2113
2114=== added file 'Test/bug1201689.c'
2115--- Test/bug1201689.c 1970-01-01 00:00:00 +0000
2116+++ Test/bug1201689.c 2011-03-11 21:16:06 +0000
2117@@ -0,0 +1,35 @@
2118+/*
2119+Bugs item #1201689, was opened at 2005-05-13 18:18
2120+Message generated for change (Tracker Item Submitted) made by Item Submitter
2121+You can respond by visiting:
2122+https://sourceforge.net/tracker/?func=detail&atid=106556&aid=1201689&group_id=6556
2123+
2124+Category: None
2125+Group: None
2126+Status: Open
2127+Resolution: None
2128+Priority: 5
2129+Submitted By: Scott Ferguson (shf301)
2130+Assigned to: Nobody/Anonymous (nobody)
2131+Summary: Variable Length Argument Lists in K&R Style not Parsed
2132+
2133+Initial Comment:
2134+A function with a K&R style parameter list that has a
2135+variable length argument list will not be added to the tags file.
2136+
2137+For example create a file, say test.c with the following code
2138+*/
2139+void test(a, ...)
2140+char a;
2141+{
2142+ return;
2143+}
2144+/*
2145+Run ctags test.c. the tags file with only contain the line:
2146+ a test.c /^char a;$/;" v
2147+
2148+This occurs with ctags 5.3 and 5.5.4.
2149+
2150+Variable length argument lists work fine if the function is in
2151+ANSI style, void test(char a, ...) will work fine.
2152+*/
2153
2154=== added file 'Test/bug1324663.sql'
2155--- Test/bug1324663.sql 1970-01-01 00:00:00 +0000
2156+++ Test/bug1324663.sql 2011-03-11 21:16:06 +0000
2157@@ -0,0 +1,4 @@
2158+-- The sql parser would go into an endless loop with the open but no closing comment.
2159+-- ctags -f - --format=2 --excmd=pattern --fields=nks --sort=no --sql-types=cdfFlLPprstTvieURDVnxy bug1324663.sql
2160+--
2161+'\'/*'
2162
2163=== added file 'Test/bug1428714.sql'
2164--- Test/bug1428714.sql 1970-01-01 00:00:00 +0000
2165+++ Test/bug1428714.sql 2011-03-11 21:16:06 +0000
2166@@ -0,0 +1,4 @@
2167+-- The sql parser would go into an endless loop with the open but no closing comment.
2168+-- ctags -f - --format=2 --excmd=pattern --fields=nks --sort=no --sql-types=cdfFlLPprstTvieURDVnxy bug1428714.sql
2169+--
2170+/*
2171
2172=== added file 'Test/bug1447756.java'
2173--- Test/bug1447756.java 1970-01-01 00:00:00 +0000
2174+++ Test/bug1447756.java 2011-03-11 21:16:06 +0000
2175@@ -0,0 +1,9 @@
2176+// Java 1.5 generic interfaces appear to be tagged on the
2177+// parameterized type name instead of the interface name,
2178+// e.g.,
2179+
2180+ public interface Foo<T> {
2181+ public T bar();
2182+ }
2183+
2184+// is tagged on 'T' instead of 'Foo'.
2185
2186=== added file 'Test/bug1458930.c'
2187--- Test/bug1458930.c 1970-01-01 00:00:00 +0000
2188+++ Test/bug1458930.c 2011-03-11 21:16:06 +0000
2189@@ -0,0 +1,3 @@
2190+// test with --c-kinds=+p
2191+char x();
2192+wchar_t y();
2193
2194=== added file 'Test/bug1466117.c'
2195--- Test/bug1466117.c 1970-01-01 00:00:00 +0000
2196+++ Test/bug1466117.c 2011-03-11 21:16:06 +0000
2197@@ -0,0 +1,10 @@
2198+typedef struct mystruct {
2199+ int a;
2200+ int b;
2201+};
2202+
2203+typedef struct {
2204+ int a;
2205+ int b;
2206+} mystruct;
2207+
2208
2209=== added file 'Test/bug1491666.c'
2210--- Test/bug1491666.c 1970-01-01 00:00:00 +0000
2211+++ Test/bug1491666.c 2011-03-11 21:16:06 +0000
2212@@ -0,0 +1,13 @@
2213+typedef struct {
2214+ int
2215+ x;
2216+
2217+ float
2218+ y;
2219+} my_struct;
2220+
2221+void main (void) {
2222+ my_struct var1;
2223+ my_struct
2224+ var2;
2225+}
2226
2227=== added file 'Test/bug1515910.cs'
2228--- Test/bug1515910.cs 1970-01-01 00:00:00 +0000
2229+++ Test/bug1515910.cs 2011-03-11 21:16:06 +0000
2230@@ -0,0 +1,15 @@
2231+// Simple generic classes.
2232+public class MyGenericClass1<T> { }
2233+
2234+// Derived enums.
2235+enum Enum1 : byte {
2236+ Value1, Values
2237+}
2238+
2239+// Verbatim strings.
2240+public class C {
2241+ private string str1 = @"abc\";
2242+ private int int1 = 123;
2243+ private string str2 = @"abc\";
2244+ private string str3 = "abc";
2245+}
2246
2247=== added file 'Test/bug1548443.cpp'
2248--- Test/bug1548443.cpp 1970-01-01 00:00:00 +0000
2249+++ Test/bug1548443.cpp 2011-03-11 21:16:06 +0000
2250@@ -0,0 +1,9 @@
2251+union TestUnion
2252+{
2253+int _number;
2254+};
2255+
2256+struct TestStruct
2257+{
2258+int _number;
2259+};
2260
2261=== added file 'Test/bug1563476.cpp'
2262--- Test/bug1563476.cpp 1970-01-01 00:00:00 +0000
2263+++ Test/bug1563476.cpp 2011-03-11 21:16:06 +0000
2264@@ -0,0 +1,16 @@
2265+int g() {
2266+}
2267+
2268+template< typename Accessor, typename bEnable = void >
2269+struct IntroduceBitDef;
2270+
2271+template< typename Accessor >
2272+struct IntroduceBitDef< Accessor, typename
2273+boost::enable_if_c< CoreConfig::VERSION <= 3 >::type >
2274+{
2275+
2276+// class body here
2277+// anything after this point is not parsed by ctags
2278+ int f() { }
2279+
2280+};
2281
2282=== added file 'Test/bug1570779.sql'
2283--- Test/bug1570779.sql 1970-01-01 00:00:00 +0000
2284+++ Test/bug1570779.sql 2011-03-11 21:16:06 +0000
2285@@ -0,0 +1,14 @@
2286+-- This should find the "address" column when --sql-types=r is used
2287+-- ctags -f - --format=2 --excmd=pattern --fields=nks --sort=no --sql-types=cdfFlLPprstTvieURDVnxy bug1570779.sql
2288+-- employees bug1570779.sql /^CREATE TABLE employees ($/;" t line:2
2289+-- employees.id bug1570779.sql /^ id integer NOT NULL,$/;" F line:3
2290+-- employees.name bug1570779.sql /^ name varchar(20),$/;" F line:4
2291+-- employees.address bug1570779.sql /^ address varchar(50),$/;" F line:5
2292+
2293+CREATE TABLE employees (
2294+ id integer NOT NULL,
2295+ name varchar(20),
2296+ address varchar(50),
2297+ primary key (id)
2298+);
2299+
2300
2301=== added file 'Test/bug1575055.cpp'
2302--- Test/bug1575055.cpp 1970-01-01 00:00:00 +0000
2303+++ Test/bug1575055.cpp 2011-03-11 21:16:06 +0000
2304@@ -0,0 +1,4 @@
2305+namespace TheNamespace {
2306+ class MyClass { };
2307+ int variable;
2308+}
2309
2310=== added file 'Test/bug1585745.cpp'
2311--- Test/bug1585745.cpp 1970-01-01 00:00:00 +0000
2312+++ Test/bug1585745.cpp 2011-03-11 21:16:06 +0000
2313@@ -0,0 +1,8 @@
2314+// Despite the weird whitespace, all these destructors should be recognized and tagged.
2315+Class1::~Class1() { }
2316+Class2::~ Class2() { }
2317+Class3:: ~Class3() { }
2318+Class4:: ~ Class4() { }
2319+class Class5 {
2320+ public: ~ Class5() { }
2321+};
2322
2323=== added file 'Test/bug1611054.cs'
2324--- Test/bug1611054.cs 1970-01-01 00:00:00 +0000
2325+++ Test/bug1611054.cs 2011-03-11 21:16:06 +0000
2326@@ -0,0 +1,8 @@
2327+class C {
2328+ public String a() {
2329+ return @"c:\";
2330+ }
2331+ // this tag is missing in ctags 5.6
2332+ public void b() {
2333+ }
2334+}
2335
2336=== added file 'Test/bug1691412.java'
2337--- Test/bug1691412.java 1970-01-01 00:00:00 +0000
2338+++ Test/bug1691412.java 2011-03-11 21:16:06 +0000
2339@@ -0,0 +1,17 @@
2340+public class C {
2341+ @NonNull
2342+ @CheckReturnValue(explanation = "When this function returns, the caller can get the Cipher name selected by the user in the Dialog.")
2343+ public static DefaultCipherDialog newInstance() {
2344+ DefaultCipherDialog instance = new DefaultCipherDialog();
2345+ instance.init();
2346+ return instance;
2347+ }
2348+
2349+ @Override
2350+ public String toString() { return "hello"; }
2351+}
2352+
2353+@Target(ElementType.METHOD)
2354+@Retention(RetentionPolicy.SOURCE)
2355+public @interface CustomAnnotation {
2356+}
2357
2358=== added file 'Test/bug1742588.rb'
2359--- Test/bug1742588.rb 1970-01-01 00:00:00 +0000
2360+++ Test/bug1742588.rb 2011-03-11 21:16:06 +0000
2361@@ -0,0 +1,7 @@
2362+class A
2363+ def a()
2364+ super(" do ")
2365+ end
2366+ def b()
2367+ end
2368+end
2369
2370=== added file 'Test/bug1743330.v'
2371--- Test/bug1743330.v 1970-01-01 00:00:00 +0000
2372+++ Test/bug1743330.v 2011-03-11 21:16:06 +0000
2373@@ -0,0 +1,5 @@
2374+// somewhat contrived, but i came across a real-life file that caused this
2375+// crash.
2376+value=
2377+hello/
2378+world;
2379
2380=== added file 'Test/bug1764143.h'
2381--- Test/bug1764143.h 1970-01-01 00:00:00 +0000
2382+++ Test/bug1764143.h 2011-03-11 21:16:06 +0000
2383@@ -0,0 +1,27 @@
2384+static inline void omap1_arch_reset(char mode)
2385+{
2386+ /*
2387+ * Workaround for 5912/1611b bug mentioned in sprz209d.pdf p. 28
2388+ * "Global Software Reset Affects Traffic Controller Frequency".
2389+ */
2390+ if (cpu_is_omap5912()) {
2391+ omap_writew(omap_readw(DPLL_CTL) & ~(1 << 4),
2392+ DPLL_CTL);
2393+ omap_writew(0x8, ARM_RSTCT1);
2394+ }
2395+
2396+ if (machine_is_voiceblue())
2397+ voiceblue_reset();
2398+ else
2399+ omap_writew(1, ARM_RSTCT1);
2400+}
2401+
2402+static inline void arch_reset(char mode)
2403+{
2404+ if (!cpu_is_omap24xx())
2405+ omap1_arch_reset(mode);
2406+ else
2407+ omap_prcm_arch_reset(mode);
2408+}
2409+
2410+#endif
2411
2412=== added file 'Test/bug1764148'
2413--- Test/bug1764148 1970-01-01 00:00:00 +0000
2414+++ Test/bug1764148 2011-03-11 21:16:06 +0000
2415@@ -0,0 +1,2 @@
2416+#!/usr/bin/python
2417+def PyFunc(msg): print msg
2418
2419=== added file 'Test/bug1770479.cpp'
2420--- Test/bug1770479.cpp 1970-01-01 00:00:00 +0000
2421+++ Test/bug1770479.cpp 2011-03-11 21:16:06 +0000
2422@@ -0,0 +1,17 @@
2423+#include <sstream>
2424+
2425+int main (int argc, char **argv)
2426+{
2427+ std::ostringstream a;
2428+ a << "a";
2429+
2430+ std::ostringstream b;
2431+ b << "b";
2432+
2433+ return 0;
2434+}
2435+
2436+int foo (int i)
2437+{
2438+ return i;
2439+}
2440
2441=== added file 'Test/bug1773926.cpp'
2442--- Test/bug1773926.cpp 1970-01-01 00:00:00 +0000
2443+++ Test/bug1773926.cpp 2011-03-11 21:16:06 +0000
2444@@ -0,0 +1,12 @@
2445+#include <stdio.h>
2446+
2447+#define ERROR_HAPPENED
2448 50
2449
2450
2451
2452+#define OK 2
2453+#define NEXT_DEFINE 3
2454+
2455+int main(int argc, char* argv[])
2456+{
2457+ printf("Hello world\n");
2458+ return 0;
2459+}
2460+
2461
2462=== added file 'Test/bug1777340.java'
2463--- Test/bug1777340.java 1970-01-01 00:00:00 +0000
2464+++ Test/bug1777340.java 2011-03-11 21:16:06 +0000
2465@@ -0,0 +1,4 @@
2466+public @interface bug1777340 {
2467+ String n() default "ninjas; monkeys!";
2468+ String m();
2469+}
2470
2471=== added file 'Test/bug1777344.java'
2472--- Test/bug1777344.java 1970-01-01 00:00:00 +0000
2473+++ Test/bug1777344.java 2011-03-11 21:16:06 +0000
2474@@ -0,0 +1,7 @@
2475+import java.util.*;
2476+public class bug1777344<K, V> {
2477+ private HashMap<K,V> map1;
2478+ private HashMap<K,V> map2 = new HashMap<K,V>(), map3;
2479+ private boolean b = (1 < 3), c;
2480+ private boolean d = 1 < 3, e;
2481+}
2482
2483=== added file 'Test/bug1799340.cpp'
2484--- Test/bug1799340.cpp 1970-01-01 00:00:00 +0000
2485+++ Test/bug1799340.cpp 2011-03-11 21:16:06 +0000
2486@@ -0,0 +1,3 @@
2487+std::string & f1() {}
2488+const std::string & f2() {}
2489+std::string const & f3() {}
2490
2491=== added file 'Test/bug1799343-1.cpp'
2492--- Test/bug1799343-1.cpp 1970-01-01 00:00:00 +0000
2493+++ Test/bug1799343-1.cpp 2011-03-11 21:16:06 +0000
2494@@ -0,0 +1,10 @@
2495+#include <iostream>
2496+struct C { int x; };
2497+struct D : ::C {
2498+ D() { x = 123; }
2499+ ~D() { std::cout << x << std::endl; }
2500+};
2501+int main(void) {
2502+ D d;
2503+ return 0;
2504+}
2505
2506=== added file 'Test/bug1799343-2.cpp'
2507--- Test/bug1799343-2.cpp 1970-01-01 00:00:00 +0000
2508+++ Test/bug1799343-2.cpp 2011-03-11 21:16:06 +0000
2509@@ -0,0 +1,27 @@
2510+class P {
2511+ protected:
2512+ int x;
2513+};
2514+
2515+namespace A {
2516+ class P {
2517+ protected:
2518+ int x;
2519+ };
2520+ class Q {
2521+ int y;
2522+ };
2523+
2524+ namespace C {
2525+ class R: ::P, A::Q {
2526+ int z;
2527+ int f (int v) { return v + x; }
2528+ };
2529+ }
2530+}
2531+
2532+namespace B {
2533+ class S : A::C::R {
2534+ int t;
2535+ };
2536+}
2537
2538=== added file 'Test/bug1800065.cs'
2539--- Test/bug1800065.cs 1970-01-01 00:00:00 +0000
2540+++ Test/bug1800065.cs 2011-03-11 21:16:06 +0000
2541@@ -0,0 +1,5 @@
2542+using Gtk;
2543+public class C {
2544+ private Gtk.Window window;
2545+ private string title;
2546+}
2547
2548=== added file 'Test/bug1809024.py'
2549--- Test/bug1809024.py 1970-01-01 00:00:00 +0000
2550+++ Test/bug1809024.py 2011-03-11 21:16:06 +0000
2551@@ -0,0 +1,10 @@
2552+ def detach (self):
2553+
2554+ model = self.view.props.model
2555+ sort_id, sort_order = tree_sortable_get_sort_column_id (model)
2556+ if sort_id >= 0:
2557+ self.app.state.sort_column = self.find_item_class (id = sort_id)
2558+ if sort_order == gtk.SORT_ASCENDING:
2559+ self.app.state.sort_order = "ascending"
2560+ else:
2561+ self.app.state.sort_order = "descending"
2562
2563=== added file 'Test/bug1830343.cs'
2564--- Test/bug1830343.cs 1970-01-01 00:00:00 +0000
2565+++ Test/bug1830343.cs 2011-03-11 21:16:06 +0000
2566@@ -0,0 +1,8 @@
2567+class ForEachTest {
2568+ static void Main(string[] args) {
2569+ int[] fibarray = new int[] { 0, 1, 2, 3, 5, 8, 13 };
2570+ foreach (int i in fibarray) {
2571+ System.Console.WriteLine(i);
2572+ }
2573+ }
2574+}
2575
2576=== added file 'Test/bug1830344.cs'
2577--- Test/bug1830344.cs 1970-01-01 00:00:00 +0000
2578+++ Test/bug1830344.cs 2011-03-11 21:16:06 +0000
2579@@ -0,0 +1,10 @@
2580+public class C {
2581+ public void m() {
2582+ bool flagCheck = true;
2583+ if (flagCheck == true) {
2584+ Console.WriteLine("true");
2585+ } else {
2586+ Console.WriteLine("false");
2587+ }
2588+ }
2589+}
2590
2591=== added file 'Test/bug1856363.py'
2592--- Test/bug1856363.py 1970-01-01 00:00:00 +0000
2593+++ Test/bug1856363.py 2011-03-11 21:16:06 +0000
2594@@ -0,0 +1,9 @@
2595+#!/usr/bin/python
2596+
2597+def main():
2598+ # A broken ctags will see a function "initely_not_a_function" here.
2599+ definitely_not_a_function = 0
2600+ return
2601+
2602+if __name__ == 'main':
2603+ main()
2604
2605=== added file 'Test/bug1906062.py'
2606--- Test/bug1906062.py 1970-01-01 00:00:00 +0000
2607+++ Test/bug1906062.py 2011-03-11 21:16:06 +0000
2608@@ -0,0 +1,4 @@
2609+include_file = '''
2610+class (b)
2611+'''
2612+
2613
2614=== added file 'Test/bug1907083.cpp'
2615--- Test/bug1907083.cpp 1970-01-01 00:00:00 +0000
2616+++ Test/bug1907083.cpp 2011-03-11 21:16:06 +0000
2617@@ -0,0 +1,5 @@
2618+// All of these should have "class:C", but m2-m4 have "class C::C" with ctags 5.7.
2619+C::T * C::m1() {}
2620+C::T * const C::m2() {}
2621+C::T const * C::m3() {}
2622+C::T const * const C::m4() {}
2623
2624=== added file 'Test/bug1924919.cpp'
2625--- Test/bug1924919.cpp 1970-01-01 00:00:00 +0000
2626+++ Test/bug1924919.cpp 2011-03-11 21:16:06 +0000
2627@@ -0,0 +1,5 @@
2628+#include <string>
2629+namespace mud {
2630+ std::string MajorVersion;
2631+ std::string MinorVersion;
2632+};
2633
2634=== added file 'Test/bug1938565.sql'
2635--- Test/bug1938565.sql 1970-01-01 00:00:00 +0000
2636+++ Test/bug1938565.sql 2011-03-11 21:16:06 +0000
2637@@ -0,0 +1,18 @@
2638+CREATE OR REPLACE PACKAGE demo_pkg
2639+IS
2640+
2641+FUNCTION func1_proto( value in varchar ) RETURNS number;
2642+FUNCTION func2_proto( value in varchar ) RETURN number;
2643+
2644+FUNCTION func1( value in varchar ) RETURNS number IS
2645+BEGIN
2646+ RETURN 1;
2647+END func1;
2648+
2649+FUNCTION func2( value in varchar ) RETURN number IS
2650+BEGIN
2651+ RETURN 2;
2652+END func2;
2653+
2654+END demo_pkg;
2655+/
2656
2657=== added file 'Test/bug1944150.sql'
2658--- Test/bug1944150.sql 1970-01-01 00:00:00 +0000
2659+++ Test/bug1944150.sql 2011-03-11 21:16:06 +0000
2660@@ -0,0 +1,7 @@
2661+CREATE TRIGGER [tr_d_cash_trade_comment] ON dbo.cash_trade_comment
2662+FOR DELETE
2663+AS
2664+BEGIN
2665+END
2666+GO
2667+
2668
2669=== added file 'Test/bug1950327.js'
2670--- Test/bug1950327.js 1970-01-01 00:00:00 +0000
2671+++ Test/bug1950327.js 2011-03-11 21:16:06 +0000
2672@@ -0,0 +1,41 @@
2673+// I've attached the simple test case as bugDemo.js. Trigger the bug by
2674+// uncommenting line 8. Attached are tags files with line 21 commented/not
2675+// commented. This is the current tip, svn r663.
2676+//
2677+// When the container.dirtyTab line is uncommented you see these methods:
2678+// TabChrome.createTabTile
2679+// TabChrome.init
2680+//
2681+// When the container.dirtyTab line is commented you see these methods:
2682+// TabChrome.createTabTile
2683+// TabChrome.destroyTabTile
2684+// TabChrome.init
2685+//
2686+TabChrome.prototype = {
2687+ init: function()
2688+ {
2689+ this.browserMap = new Object();
2690+ },
2691+ createTabTile: function(browser)
2692+ {
2693+ //container.dirtyTab = {'url': false, 'title':false, 'snapshot':false, '*': false}
2694+ return container;
2695+ },
2696+ destroyTabTile: function(tile)
2697+ {
2698+ }
2699+}
2700+Different.prototype = {
2701+ init: function()
2702+ {
2703+ this.browserMap = new Object();
2704+ },
2705+ createTabTile: function(browser)
2706+ {
2707+ container.dirtyTab = {'url': false, 'title':false, 'snapshot':false, '*': false}
2708+ return container;
2709+ },
2710+ destroyTabTile: function(tile)
2711+ {
2712+ }
2713+}
2714
2715=== added file 'Test/bug1988026.py'
2716--- Test/bug1988026.py 1970-01-01 00:00:00 +0000
2717+++ Test/bug1988026.py 2011-03-11 21:16:06 +0000
2718@@ -0,0 +1,9 @@
2719+
2720+class testClass:
2721+ my_var = 0
2722+ def main():
2723+ pass
2724+
2725+if __name__ == '__main__': testClass.main()
2726+ def im_a_function():
2727+ pass
2728
2729=== added file 'Test/bug1988027.py'
2730--- Test/bug1988027.py 1970-01-01 00:00:00 +0000
2731+++ Test/bug1988027.py 2011-03-11 21:16:06 +0000
2732@@ -0,0 +1,9 @@
2733+#!/usr/bin/env python
2734+# encoding: utf-8
2735+
2736+
2737+"""
2738+bla
2739+#"""
2740+
2741+"""make a tarball with all the sources in it; return (distdirname, tarballname)"""
2742
2743=== added file 'Test/bug1988130.py'
2744--- Test/bug1988130.py 1970-01-01 00:00:00 +0000
2745+++ Test/bug1988130.py 2011-03-11 21:16:06 +0000
2746@@ -0,0 +1,7 @@
2747+def testFunc():
2748+ print 'The following works now' + '"""'
2749+
2750+def main():
2751+ print 'nothing'
2752+ print 'This is another quoted triple string: """.'
2753+ return 0
2754
2755=== added file 'Test/bug2049723.java'
2756--- Test/bug2049723.java 1970-01-01 00:00:00 +0000
2757+++ Test/bug2049723.java 2011-03-11 21:16:06 +0000
2758@@ -0,0 +1,6 @@
2759+import javax.annotation.Nonnull;
2760+
2761+public class bug2049723 {
2762+ public void m1(String arg) {}
2763+ public void m2(@Nonnull String arg) {}
2764+}
2765
2766=== added file 'Test/bug2117073.java'
2767--- Test/bug2117073.java 1970-01-01 00:00:00 +0000
2768+++ Test/bug2117073.java 2011-03-11 21:16:06 +0000
2769@@ -0,0 +1,12 @@
2770+public class AAssignmentExp {
2771+ public AAssignmentExp(@SuppressWarnings("hiding") TAssign _token_,
2772+ @SuppressWarnings("hiding") PLvalue _lvalue_,
2773+ @SuppressWarnings("hiding") PExp _exp_) {
2774+ setToken(_token_);
2775+ setLvalue(_lvalue_);
2776+ setExp(_exp_);
2777+ }
2778+
2779+ @Override void removeChild(@SuppressWarnings("unused") Node child) {
2780+ }
2781+}
2782
2783=== added file 'Test/bug2374109.vhd'
2784--- Test/bug2374109.vhd 1970-01-01 00:00:00 +0000
2785+++ Test/bug2374109.vhd 2011-03-11 21:16:06 +0000
2786@@ -0,0 +1,9 @@
2787+function Pow2( N, Exp : integer ) return mylib.myinteger is
2788+ Variable Result : integer := 1;
2789+
2790+begin
2791+ for i in 1 to Exp loop
2792+ Result := Result * N;
2793+ end loop;
2794+ return( Result );
2795+end Pow;
2796
2797=== added file 'Test/bug2411878.cs'
2798--- Test/bug2411878.cs 1970-01-01 00:00:00 +0000
2799+++ Test/bug2411878.cs 2011-03-11 21:16:06 +0000
2800@@ -0,0 +1,3 @@
2801+public class C {
2802+ private System.String m_name;
2803+}
2804
2805=== added file 'Test/bug2747828.v'
2806--- Test/bug2747828.v 1970-01-01 00:00:00 +0000
2807+++ Test/bug2747828.v 2011-03-11 21:16:06 +0000
2808@@ -0,0 +1,1 @@
2809+parameter ramaddr_0 = {1'b1,9'd0};
2810
2811=== added file 'Test/bug2777310.js'
2812--- Test/bug2777310.js 1970-01-01 00:00:00 +0000
2813+++ Test/bug2777310.js 2011-03-11 21:16:06 +0000
2814@@ -0,0 +1,4 @@
2815+var x = 1;
2816+var z = {};
2817+var y = [];
2818+
2819
2820=== added file 'Test/bug2886870.tex'
2821--- Test/bug2886870.tex 1970-01-01 00:00:00 +0000
2822+++ Test/bug2886870.tex 2011-03-11 21:16:06 +0000
2823@@ -0,0 +1,351 @@
2824+Sample LaTeX file
2825+The name of this file is intro.tex.
2826+
2827+\documentclass[12pt]{article}
2828+
2829+\usepackage{amsmath} % need for subequations
2830+\usepackage{graphicx} % need for figures
2831+\usepackage{verbatim} % useful for program listings
2832+\usepackage{color} % use if color is used in text
2833+\usepackage{subfigure} % use for side-by-side figures
2834+\usepackage{hyperref} % use for hypertext links, including those to external documents and URLs
2835+
2836+% don't need the following. simply use defaults
2837+\setlength{\baselineskip}{16.0pt} % 16 pt usual spacing between lines
2838+
2839+\setlength{\parskip}{3pt plus 2pt}
2840+\setlength{\parindent}{20pt}
2841+\setlength{\oddsidemargin}{0.5cm}
2842+\setlength{\evensidemargin}{0.5cm}
2843+\setlength{\marginparsep}{0.75cm}
2844+\setlength{\marginparwidth}{2.5cm}
2845+\setlength{\marginparpush}{1.0cm}
2846+\setlength{\textwidth}{150mm}
2847+
2848+\begin{comment}
2849+\pagestyle{empty} % use if page numbers not wanted
2850+\end{comment}
2851+
2852+% above is the preamble
2853+
2854+\begin{document}
2855+
2856+\begin{center}
2857+{\large Introduction to \LaTeX} \\ % \\ = new line
2858+\copyright 2006 by Harvey Gould \\
2859+December 5, 2006
2860+\end{center}
2861+
2862+\section{Introduction}
2863+\TeX\ looks more difficult than it is. It is
2864+almost as easy as $\pi$. See how easy it is to make special
2865+symbols such as $\alpha$,
2866+$\beta$, $\gamma$,
2867+$\delta$, $\sin x$, $\hbar$, $\lambda$, $\ldots$ We also can make
2868+subscripts
2869+$A_{x}$, $A_{xy}$ and superscripts, $e^x$, $e^{x^2}$, and
2870+$e^{a^b}$. We will use \LaTeX, which is based on \TeX\ and has
2871+many higher-level commands (macros) for formatting, making
2872+tables, etc. More information can be found in Ref.~\cite{latex}.
2873+
2874+We just made a new paragraph. Extra lines and spaces make no
2875+difference. Note that all formulas are enclosed by
2876+\$ and occur in \textit{math mode}.
2877+
2878+The default font is Computer Modern. It includes \textit{italics},
2879+\textbf{boldface},
2880+\textsl{slanted}, and \texttt{monospaced} fonts.
2881+
2882+\section{Equations}
2883+Let us see how easy it is to write equations.
2884+\begin{equation}
2885+\Delta =\sum_{i=1}^N w_i (x_i - \bar{x})^2 .
2886+\end{equation}
2887+It is a good idea to number equations, but we can have a
2888+equation without a number by writing
2889+\begin{equation}
2890+P(x) = \frac{x - a}{b - a} , \nonumber
2891+\end{equation}
2892+and
2893+\begin{equation}
2894+g = \frac{1}{2} \sqrt{2\pi} . \nonumber
2895+\end{equation}
2896+
2897+We can give an equation a label so that we can refer to it later.
2898+\begin{equation}
2899+\label{eq:ising}
2900+E = -J \sum_{i=1}^N s_i s_{i+1} ,
2901+\end{equation}
2902+Equation~\eqref{eq:ising} expresses the energy of a configuration
2903+of spins in the Ising model.\footnote{It is necessary to process (typeset) a
2904+file twice to get the counters correct.}
2905+
2906+We can define our own macros to save typing. For example, suppose
2907+that we introduce the macros:
2908+\begin{verbatim}
2909+ \newcommand{\lb}{{\langle}}
2910+ \newcommand{\rb}{{\rangle}}
2911+\end{verbatim}
2912+\newcommand{\lb}{{\langle}}
2913+\newcommand{\rb}{{\rangle}}
2914+Then we can write the average value of $x$ as
2915+\begin{verbatim}
2916+\begin{equation}
2917+\lb x \rb = 3
2918+\end{equation}
2919+\end{verbatim}
2920+The result is
2921+\begin{equation}
2922+\lb x \rb = 3 .
2923+\end{equation}
2924+
2925+Examples of more complicated equations:
2926+\begin{equation}
2927+I = \! \int_{-\infty}^\infty f(x)\,dx \label{eq:fine}.
2928+\end{equation}
2929+We can do some fine tuning by adding small amounts of horizontal
2930+spacing:
2931+\begin{verbatim}
2932+ \, small space \! negative space
2933+\end{verbatim}
2934+as is done in Eq.~\eqref{eq:fine}.
2935+
2936+We also can align several equations:
2937+\begin{align}
2938+a & = b \\
2939+c &= d ,
2940+\end{align}
2941+or number them as subequations:
2942+\begin{subequations}
2943+\begin{align}
2944+a & = b \\
2945+c &= d .
2946+\end{align}
2947+\end{subequations}
2948+
2949+We can also have different cases:
2950+\begin{equation}
2951+\label{eq:mdiv}
2952+m(T) =
2953+\begin{cases}
2954+0 & \text{$T > T_c$} \\
2955+\bigl(1 - [\sinh 2 \beta J]^{-4} \bigr)^{\! 1/8} & \text{$T < T_c$}
2956+\end{cases}
2957+\end{equation}
2958+write matrices
2959+\begin{align}
2960+\textbf{T} &=
2961+\begin{pmatrix}
2962+T_{++} \hfill & T_{+-} \\
2963+T_{-+} & T_{--} \hfill
2964+\end{pmatrix} , \nonumber \\
2965+& =
2966+\begin{pmatrix}
2967+e^{\beta (J + B)} \hfill & e^{-\beta J} \hfill \\
2968+e^{-\beta J} \hfill & e^{\beta (J - B)} \hfill
2969+\end{pmatrix}.
2970+\end{align}
2971+and
2972+\newcommand{\rv}{\textbf{r}}
2973+\begin{equation}
2974+\sum_i \vec A \cdot \vec B = -P\!\int\! \rv \cdot
2975+\hat{\mathbf{n}}\, dA = P\!\int \! {\vec \nabla} \cdot \rv\, dV.
2976+\end{equation}
2977+
2978+\section{Tables}
2979+Tables are a little more difficult. TeX
2980+automatically calculates the width of the columns.
2981+
2982+\begin{table}[h]
2983+\begin{center}
2984+\begin{tabular}{|l|l|r|l|}
2985+\hline
2986+lattice & $d$ & $q$ & $T_{\rm mf}/T_c$ \\
2987+\hline
2988+square & 2 & 4 & 1.763 \\
2989+\hline
2990+triangular & 2 & 6 & 1.648 \\
2991+\hline
2992+diamond & 3 & 4 & 1.479 \\
2993+\hline
2994+simple cubic & 3 & 6 & 1.330 \\
2995+\hline
2996+bcc & 3 & 8 & 1.260 \\
2997+\hline
2998+fcc & 3 & 12 & 1.225 \\
2999+\hline
3000+\end{tabular}
3001+\caption{\label{tab:5/tc}Comparison of the mean-field predictions
3002+for the critical temperature of the Ising model with exact results
3003+and the best known estimates for different spatial dimensions $d$
3004+and lattice symmetries.}
3005+\end{center}
3006+\end{table}
3007+
3008+\section{Lists}
3009+
3010+Some example of formatted lists include the
3011+following:
3012+
3013+\begin{enumerate}
3014+
3015+\item bread
3016+
3017+\item cheese
3018+
3019+\end{enumerate}
3020+
3021+\begin{itemize}
3022+
3023+\item Tom
3024+
3025+\item Dick
3026+
3027+\end{itemize}
3028+
3029+\section{Figures}
3030+
3031+We can make figures bigger or smaller by scaling them. Figure~\ref{fig:lj}
3032+has been scaled by 60\%.
3033+
3034+\begin{figure}[h]
3035+\begin{center}
3036+\includegraphics{figures/sine}
3037+\caption{\label{fig:typical}Show me a sine.}
3038+\end{center}
3039+\end{figure}
3040+
3041+\begin{figure}[h]
3042+\begin{center}
3043+\scalebox{0.6}{\includegraphics{figures/lj}}
3044+\caption{\label{fig:lj}Plot of the
3045+Lennard-Jones potential
3046+$u(r)$. The potential is characterized by a length
3047+$\sigma$ and an energy
3048+$\epsilon$.}
3049+\end{center}
3050+\end{figure}
3051+
3052+\section{Literal text}
3053+It is desirable to print program code exactly as it is typed in a
3054+monospaced font. Use \verb \begin{verbatim} and
3055+\verb \end{verbatim} as in the following example:
3056+\begin{verbatim}
3057+double y0 = 10; // example of declaration and assignment statement
3058+double v0 = 0; // initial velocity
3059+double t = 0; // time
3060+double dt = 0.01; // time step
3061+double y = y0;
3062+\end{verbatim}
3063+The command \verb \verbatiminput{programs/Square.java}\ allows
3064+you to list the file \texttt{Square.java} in the directory
3065+programs.
3066+
3067+\section{Special Symbols}
3068+
3069+\subsection{Common Greek letters}
3070+
3071+These commands may be used only in math mode. Only the most common
3072+letters are included here.
3073+
3074+$\alpha,
3075+\beta, \gamma, \Gamma,
3076+\delta,\Delta,
3077+\epsilon, \zeta, \eta, \theta, \Theta, \kappa,
3078+\lambda, \Lambda, \mu, \nu,
3079+\xi, \Xi,
3080+\pi, \Pi,
3081+\rho,
3082+\sigma,
3083+\tau,
3084+\phi, \Phi,
3085+\chi,
3086+\psi, \Psi,
3087+\omega, \Omega$
3088+\subsubsection{Test for ctags}
3089+\subsection{Special symbols}
3090+
3091+The derivative is defined as
3092+\begin{equation}
3093+\frac{dy}{dx} = \lim_{\Delta x \to 0} \frac{\Delta y}
3094+{\Delta x}
3095+\end{equation}
3096+\begin{equation}
3097+f(x) \to y \quad \mbox{as} \quad x \to
3098+x_{0}
3099+\end{equation}
3100+\begin{equation}
3101+f(x) \mathop {\longrightarrow}
3102+\limits_{x \to x_0} y
3103+\end{equation}
3104+
3105+\noindent Order of magnitude:
3106+\begin{equation}
3107+\log_{10}f \simeq n
3108+\end{equation}
3109+\begin{equation}
3110+f(x)\sim 10^{n}
3111+\end{equation}
3112+Approximate equality:
3113+\begin{equation}
3114+f(x)\simeq g(x)
3115+\end{equation}
3116+\LaTeX\ is simple if we keep everything in proportion:
3117+\begin{equation}
3118+f(x) \propto x^3 .
3119+\end{equation}
3120+
3121+Finally we can skip some space by using commands such as
3122+\begin{verbatim}
3123+\bigskip \medskip \smallskip \vspace{1pc}
3124+\end{verbatim}
3125+The space can be negative.
3126+
3127+\section{\color{red}Use of Color}
3128+
3129+{\color{blue}{We can change colors for emphasis}},
3130+{\color{green}{but}} {\color{cyan}{who is going pay for the ink?}}
3131+
3132+\section{\label{morefig}Subfigures}
3133+
3134+As soon as many students start becoming comfortable using \LaTeX, they want
3135+to use some of its advanced features. So we now show how to place two
3136+figures side by side.
3137+
3138+\begin{figure}[h!]
3139+\begin{center}
3140+\subfigure[Real and imaginary.]{
3141+\includegraphics[scale=0.5]{figures/reim}}
3142+\subfigure[Amplitude and phase.]{
3143+\includegraphics[scale=0.5]{figures/phase}}
3144+\caption{\label{fig:qm/complexfunctions} Two representations of complex
3145+wave functions.}
3146+\end{center}
3147+\end{figure}
3148+
3149+We first have to include the necessary package,
3150+\verb+\usepackage{subfigure}+, which has to go in the preamble (before
3151+\verb+\begin{document}+). It sometimes can be difficult to place a figure in
3152+the desired place.
3153+
3154+Your LaTeX document can be easily modified to make a poster or a screen
3155+presentation similar to (and better than) PowerPoint. Conversion to HTML is
3156+straightforward. Comments on this tutorial are appreciated.
3157+
3158+\begin{thebibliography}{5}
3159+
3160+\bibitem{latex}Helmut Kopka and Patrick W. Daly, \textsl{A Guide to
3161+\LaTeX: Document Preparation for Beginners and Advanced Users},
3162+fourth edition, Addison-Wesley (2004).
3163+
3164+\bibitem{website}Some useful links are
3165+given at \url{}.
3166+
3167+\end{thebibliography}
3168+
3169+{\small \noindent Updated 5 December 2006.}
3170+\end{document}
3171+
3172+Updated 6 February 2006.
3173+
3174+
3175
3176=== added file 'Test/bug2888482.js'
3177--- Test/bug2888482.js 1970-01-01 00:00:00 +0000
3178+++ Test/bug2888482.js 2011-03-11 21:16:06 +0000
3179@@ -0,0 +1,12 @@
3180+function scrollEditBox() {
3181+ var editBoxEl = document.getElementById("wpTextbox1");
3182+ var scrollTopEl = document.getElementById("wpScrolltop");
3183+ var editFormEl = document.getElementById("editform");
3184+
3185+ if (editBoxEl && scrollTopEl) {
3186+ if (scrollTopEl.value) editBoxEl.scrollTop = scrollTopEl.value;
3187+ editFormEl.onsubmit = function() {
3188+ document.getElementById("wpScrolltop").value = document.getElementById("wpTextbox1").scrollTop;
3189+ }
3190+ }
3191+}
3192
3193=== added file 'Test/bug2959889.mak'
3194--- Test/bug2959889.mak 1970-01-01 00:00:00 +0000
3195+++ Test/bug2959889.mak 2011-03-11 21:16:06 +0000
3196@@ -0,0 +1,1 @@
3197+{
3198\ No newline at end of file
3199
3200=== added file 'Test/bug2961855.sql'
3201--- Test/bug2961855.sql 1970-01-01 00:00:00 +0000
3202+++ Test/bug2961855.sql 2011-03-11 21:16:06 +0000
3203@@ -0,0 +1,19 @@
3204+// When it should be demo_pkg.test_func and demo_pkg.test_var
3205+// Tags are created for:
3206+// packages
3207+// demo_pkg
3208+// variables
3209+// test_var
3210+//
3211+// But no tags for the function.
3212+//
3213+//
3214+create or replace package demo_pkg is
3215+test_var number;
3216+
3217+function test_func return varchar2;
3218+function more.test_func2 return varchar2;
3219+function test_func3 return varchar2;
3220+
3221+end demo_pkg;
3222+
3223
3224=== added file 'Test/bug3032253.vim'
3225--- Test/bug3032253.vim 1970-01-01 00:00:00 +0000
3226+++ Test/bug3032253.vim 2011-03-11 21:16:06 +0000
3227@@ -0,0 +1,5 @@
3228+" ctags will hang when it attempts to process this line
3229+ command.
3230+ command!.
3231+ comma!.
3232+ comma! ThisIsValid
3233
3234=== added file 'Test/bug507864.c'
3235--- Test/bug507864.c 1970-01-01 00:00:00 +0000
3236+++ Test/bug507864.c 2011-03-11 21:16:06 +0000
3237@@ -0,0 +1,2 @@
3238+FUNCSTS func1(ENTSEQNO(seq)) {}
3239+FUNCSTS func2 (MEMTXT(form_msg), MEMTXT (text), MEMTXT (mail)) {}
3240
3241=== added file 'Test/bug538629.asm'
3242--- Test/bug538629.asm 1970-01-01 00:00:00 +0000
3243+++ Test/bug538629.asm 2011-03-11 21:16:06 +0000
3244@@ -0,0 +1,1 @@
3245+ MYMACRO EQU 01234h
3246
3247=== added file 'Test/bug556645.c'
3248--- Test/bug556645.c 1970-01-01 00:00:00 +0000
3249+++ Test/bug556645.c 2011-03-11 21:16:06 +0000
3250@@ -0,0 +1,39 @@
3251+/*
3252+From noreply@sourceforge.net Wed May 29 23:11:25 2002
3253+Date: Wed, 15 May 2002 23:25:52 -0700
3254+From: noreply@sourceforge.net
3255+To: noreply@sourceforge.net
3256+Subject: [ ctags-Bugs-556645 ] Some typedef can not be tagged in C code
3257+
3258+Bugs item #556645, was opened at 2002-05-16 14:25
3259+You can respond by visiting:
3260+http://sourceforge.net/tracker/?func=detail&atid=106556&aid=556645&group_id=6556
3261+
3262+Category: None
3263+Group: None
3264+Status: Open
3265+Resolution: None
3266+Priority: 5
3267+Submitted By: Howard Wu (howardhbwu)
3268+Assigned to: Nobody/Anonymous (nobody)
3269+Summary: Some typedef can not be tagged in C code
3270+
3271+Initial Comment:
3272+My Ctags version:5.2.3
3273+
3274+The typedef of "Qtype" as the following,
3275+
3276+*/
3277+#define A1(_type, _length) \
3278+struct { \
3279+ unsigned int head; \
3280+ unsigned int tail; \
3281+ bool is_full; \
3282+ _type queue[_length]; \
3283+ }
3284+
3285+typedef A1(ilm_struct, 1) Qtype;
3286+
3287+/*
3288+As using ctags, the "Qtype" can not be tagged by it.
3289+*/
3290
3291=== added file 'Test/bug556646.c'
3292--- Test/bug556646.c 1970-01-01 00:00:00 +0000
3293+++ Test/bug556646.c 2011-03-11 21:16:06 +0000
3294@@ -0,0 +1,42 @@
3295+/*
3296+Bugs item #556646, was opened at 2002-05-16 14:36
3297+You can respond by visiting:
3298+http://sourceforge.net/tracker/?func=detail&atid=106556&aid=556646&group_id=6556
3299+
3300+Category: None
3301+Group: None
3302+Status: Open
3303+Resolution: None
3304+Priority: 5
3305+Submitted By: Howard Wu (howardhbwu)
3306+Assigned to: Nobody/Anonymous (nobody)
3307+Summary: Some typedef can not be tagged in C code
3308+
3309+Initial Comment:
3310+My Ctags version: 5.2.3
3311+*/
3312+typedef enum{
3313+ INDX_NIL = 0x00,
3314+ INDX_P,
3315+ INDX_S,
3316+ INDX_M,
3317+ INDX_S1,
3318+ INDX_S2,
3319+ INDX_S3,
3320+ INDX_C1,
3321+ INDX_C2,
3322+ INDX_S4,
3323+ INDX_T,
3324+ INDX_L,
3325+ INDX_R,
3326+ INDX_R2,
3327+ INDX_IM1,
3328+ INDX_IM2,
3329+ INDX_L2,
3330+ INDX_T2,
3331+ A = INDX_T2
3332+} task_indx_type;
3333+
3334+/*
3335+"task_indx_type" can not be tagged with Ctags
3336+*/
3337
3338=== added file 'Test/bug565813.f90'
3339--- Test/bug565813.f90 1970-01-01 00:00:00 +0000
3340+++ Test/bug565813.f90 2011-03-11 21:16:06 +0000
3341@@ -0,0 +1,42 @@
3342+module ctags_bug
3343+
3344+ implicit none
3345+ private
3346+ save
3347+
3348+ type :: foo_t
3349+ integer :: bar
3350+ end type foo_t
3351+
3352+ integer, parameter :: N = 1000
3353+
3354+ public :: foo_t
3355+ public :: foo_setbar
3356+ public :: foo_set_bar
3357+ public :: foo_getbar
3358+
3359+contains
3360+
3361+ subroutine foo_setbar (f,b)
3362+ type(foo_t), intent(out) :: f
3363+ integer, intent(in) :: b
3364+
3365+ f%bar = b
3366+ end subroutine foo_setbar
3367+
3368+
3369+ pure subroutine foo_set_bar (f,b)
3370+ type(foo_t), intent(out) :: f
3371+ integer, intent(in) :: b
3372+
3373+ f%bar = b
3374+ end subroutine foo_set_bar
3375+
3376+
3377+ integer function foo_getbar (f)
3378+ type(foo_t), intent(in) :: f
3379+
3380+ foo_getbar = f%bar
3381+ end function foo_getbar
3382+
3383+end module ctags_bug
3384
3385=== added file 'Test/bug612019.pas'
3386--- Test/bug612019.pas 1970-01-01 00:00:00 +0000
3387+++ Test/bug612019.pas 2011-03-11 21:16:06 +0000
3388@@ -0,0 +1,33 @@
3389+(*
3390+Bugs item #612019, was opened at 2002-09-20 15:29
3391+You can respond by visiting:
3392+https://sourceforge.net/tracker/?func=detail&atid=106556&aid=612019&group_id=6556
3393+
3394+Category: None
3395+Group: None
3396+Status: Open
3397+Resolution: None
3398+Priority: 5
3399+Submitted By: Konstantin Stupnik (xecutor)
3400+Assigned to: Nobody/Anonymous (nobody)
3401+Summary: pascal parser
3402+
3403+Initial Comment:
3404+In attached sample there are some lines from tags file
3405+generated for object pascal sources.
3406+There are some problems with this lines.
3407+Generaly speaking they are parsed incorrectly.
3408+*)
3409+unit a;
3410+
3411+interface
3412+type
3413+ TTest=class
3414+ procedure Test1;
3415+ procedure Test2;
3416+ procedure Test3;
3417+ end;
3418+
3419+implementation
3420+
3421+end.
3422
3423=== added file 'Test/bug612621.pl'
3424--- Test/bug612621.pl 1970-01-01 00:00:00 +0000
3425+++ Test/bug612621.pl 2011-03-11 21:16:06 +0000
3426@@ -0,0 +1,57 @@
3427+=pod
3428+Bugs item #612621, was opened at 2002-09-21 21:23
3429+You can respond by visiting:
3430+https://sourceforge.net/tracker/?func=detail&atid=106556&aid=612621&group_id=6556
3431+
3432+Category: None
3433+Group: None
3434+Status: Open
3435+Resolution: None
3436+Priority: 5
3437+Submitted By: Richard Donkin (rdonkin)
3438+Assigned to: Nobody/Anonymous (nobody)
3439+Summary: Perl POD syntax -> incomplete tags file
3440+
3441+Initial Comment:
3442+In the following test file, ctags 5.2.3 (compiled from
3443+source on Cygwin) only adds the first subroutine (bar) to
3444+the tags file, when run using:
3445+
3446+ctags --totals --
3447+language-force=perl temp
3448+
3449+-----------------
3450+=cut
3451+sub bar()
3452+{
3453+
3454+ print "blah\n";
3455+
3456+=for
3457+ print "blah2\n";
3458+ #
3459+Note: next line has trailing space
3460+=cut
3461+
3462+
3463+}
3464+
3465+sub foo {
3466+ print "hello\n";
3467+}
3468+=pod
3469+The
3470+tags file looks like
3471+this:
3472+!_TAG_FILE_FORMAT 2 /extended format; -- format=1 will not append ;" to lines/
3473+!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted/
3474+!_TAG_PROGRAM_AUTHOR Darren Hiebert /dhiebert@users.sourceforge.net/
3475+!_TAG_PROGRAM_NAME Exuberant Ctags //
3476+!_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/
3477+!_TAG_PROGRAM_VERSION 5.2.3 //
3478+bar temp /^sub bar() {$/;" s
3479+
3480+The workaround is to delete the
3481+trailing space at the end of the '=cut' line.
3482+
3483+=cut
3484
3485=== added file 'Test/bug620288.f'
3486--- Test/bug620288.f 1970-01-01 00:00:00 +0000
3487+++ Test/bug620288.f 2011-03-11 21:16:06 +0000
3488@@ -0,0 +1,98 @@
3489+C Bugs item #620288, was opened at 2002-10-08 08:15
3490+C You can respond by visiting:
3491+C https://sourceforge.net/tracker/?func=detail&atid=106556&aid=620288&group_id=6556
3492+C
3493+C Category: None
3494+C Group: None
3495+C Status: Open
3496+C Resolution: None
3497+C Priority: 5
3498+C Submitted By: Nobody/Anonymous (nobody)
3499+C Assigned to: Nobody/Anonymous (nobody)
3500+C Summary: fortran function definition
3501+C
3502+C Initial Comment:
3503+C
3504+C System Information:
3505+C --------------
3506+C ctags version:
3507+C Exuberant Ctags 5.3.1, Copyright (C) 1996-2002 Darren
3508+C Hiebert
3509+C Compiled: Sep 12 2002, 10:22:42
3510+C Addresses: <dhiebert@users.sourceforge.net>,
3511+C http://ctags.sourceforge.net
3512+C Optional compiled features: +wildcards, +regex
3513+C
3514+C Unix:
3515+C HP-UX B.11.00 A 9000/800 551726527
3516+C --------------
3517+C
3518+C Symptoms:
3519+C --------------
3520+C I have a fortran file that has a single function. This
3521+C function has a
3522+C return type of double precision. I type $ctags bar.f .
3523+C This produces the expected
3524+C tags file. However, tags does not contain the function
3525+C definition.
3526+C
3527+C This does not occur when the same function's return
3528+C type has been changed to
3529+C a integer or character data return type.
3530+C --------------
3531+C
3532+C
3533+C Examples in which I can repeat the experience with their
3534+C respective tags files:
3535+C --------------
3536+C
3537+C
3538+C foo.f
3539+C --------------
3540+ integer function foo(a)
3541+
3542+ integer a
3543+ foo = a
3544+ end
3545+C --------------
3546+C
3547+C
3548+C tags
3549+C --------------
3550+C !_TAG_FILE_FORMAT 2 /extended
3551+C format; --format=1 will not append ;" to lines/
3552+C !_TAG_FILE_SORTED 1
3553+C /0=unsorted, 1=sorted, 2=foldcase/
3554+C !_TAG_PROGRAM_AUTHOR Darren Hiebert
3555+C /dhiebert@users.sourceforge.net/
3556+C !_TAG_PROGRAM_NAME Exuberant Ctags //
3557+C !_TAG_PROGRAM_URL
3558+C http://ctags.sourceforge.net /official site/
3559+C !_TAG_PROGRAM_VERSION 5.3.1 //
3560+C foo foo.f /^ integer function foo(/;" f
3561+C --------------
3562+C
3563+C
3564+C
3565+C bar.f
3566+C ---------------
3567+ double precision function bar(a)
3568+
3569+ double precision a
3570+ bar = a
3571+ end
3572+C --------------
3573+C
3574+C tags
3575+C ---------------
3576+C !_TAG_FILE_FORMAT 2 /extended
3577+C format; --format=1 will not append ;" to lines/
3578+C !_TAG_FILE_SORTED 1
3579+C /0=unsorted, 1=sorted, 2=foldcase/
3580+C !_TAG_PROGRAM_AUTHOR Darren Hiebert
3581+C /dhiebert@users.sourceforge.net/
3582+C !_TAG_PROGRAM_NAME Exuberant Ctags //
3583+C !_TAG_PROGRAM_URL
3584+C http://ctags.sourceforge.net /official site/
3585+C !_TAG_PROGRAM_VERSION 5.3.1 //
3586+C ---------------
3587
3588=== added file 'Test/bug629115.sql'
3589--- Test/bug629115.sql 1970-01-01 00:00:00 +0000
3590+++ Test/bug629115.sql 2011-03-11 21:16:06 +0000
3591@@ -0,0 +1,5 @@
3592+/***/
3593+DECLARE
3594+ variable CLOB;
3595+BEGIN
3596+END;
3597
3598=== added file 'Test/bug639639.h'
3599--- Test/bug639639.h 1970-01-01 00:00:00 +0000
3600+++ Test/bug639639.h 2011-03-11 21:16:06 +0000
3601@@ -0,0 +1,46 @@
3602+/*
3603+Date: Sun, 17 Nov 2002 04:41:42 -0800
3604+Subject: [ ctags-Bugs-639639 ] incorrect enum field for C++ header
3605+
3606+Bugs item #639639, was opened at 2002-11-17 13:41
3607+You can respond by visiting:
3608+https://sourceforge.net/tracker/?func=detail&atid=106556&aid=639639&group_id=6556
3609+
3610+Category: None
3611+Group: None
3612+Status: Open
3613+Resolution: None
3614+Priority: 5
3615+Submitted By: Matthias S. Benkmann (mbenkmann)
3616+Assigned to: Nobody/Anonymous (nobody)
3617+Summary: incorrect enum field for C++ header
3618+
3619+Initial Comment:
3620+----------- temp2.h -------------
3621+*/
3622+namespace Namespace1
3623+{
3624+ int function2(char* str);
3625+}
3626+
3627+enum {anon2=1000};
3628+----------------------------
3629+/*
3630+> ctags --excmd=number --fields=+kKmnsSz
3631+--file-scope=no -f - temp2.h
3632+
3633+Namespace1 temp2.h 1;" kind:namespace line:1
3634+anon2 temp2.h 6;" kind:enumerator line:6
3635+enum:Namespace1
3636+
3637+
3638+As you can see ctags thinks that anon2 belongs to enum
3639+Namespace1 which it obviously doesn't (Namespace1 is
3640+not even an enum). It should be enum:<anonymous>.
3641+
3642+
3643+----------------------------------------------------------------------
3644+
3645+You can respond by visiting:
3646+https://sourceforge.net/tracker/?func=detail&atid=106556&aid=639639&group_id=6556
3647+*/
3648
3649=== added file 'Test/bug639644.h'
3650--- Test/bug639644.h 1970-01-01 00:00:00 +0000
3651+++ Test/bug639644.h 2011-03-11 21:16:06 +0000
3652@@ -0,0 +1,41 @@
3653+/*
3654+Date: Sun, 17 Nov 2002 04:57:43 -0800
3655+Subject: [ ctags-Bugs-639644 ] anonymous namespaces in headers
3656+
3657+Bugs item #639644, was opened at 2002-11-17 13:57
3658+You can respond by visiting:
3659+https://sourceforge.net/tracker/?func=detail&atid=106556&aid=639644&group_id=6556
3660+
3661+Category: None
3662+Group: None
3663+Status: Open
3664+Resolution: None
3665+Priority: 5
3666+Submitted By: Matthias S. Benkmann (mbenkmann)
3667+Assigned to: Nobody/Anonymous (nobody)
3668+Summary: anonymous namespaces in headers
3669+
3670+Initial Comment:
3671+--------------------temp3.h----------------
3672+*/
3673+namespace
3674+{
3675+ int foo;
3676+}
3677+/*
3678+---------------------------------------------
3679+
3680+> ctags -f - temp3.h
3681+
3682+foo temp3.h /^ int foo;$/;" m namespace:
3683+
3684+That last field should be "namespace:<anonymous>"
3685+and the kind field should be variable, not member.
3686+
3687+
3688+
3689+----------------------------------------------------------------------
3690+
3691+You can respond by visiting:
3692+https://sourceforge.net/tracker/?func=detail&atid=106556&aid=639644&group_id=6556
3693+*/
3694
3695=== added file 'Test/bug665086.cpp'
3696--- Test/bug665086.cpp 1970-01-01 00:00:00 +0000
3697+++ Test/bug665086.cpp 2011-03-11 21:16:06 +0000
3698@@ -0,0 +1,32 @@
3699+/*
3700+Bugs item #665086, was opened at 2003-01-09 15:30
3701+You can respond by visiting:
3702+https://sourceforge.net/tracker/?func=detail&atid=106556&aid=665086&group_id=6556
3703+
3704+Category: None
3705+Group: None
3706+Status: Open
3707+Resolution: None
3708+Priority: 5
3709+Submitted By: Welti Marco (cider101)
3710+Assigned to: Nobody/Anonymous (nobody)
3711+Summary: nested namespaces
3712+
3713+Initial Comment:
3714+hi
3715+
3716+it seems that ctags has ommits the scope for nested
3717+namespaces.
3718+*/
3719+namespace N1
3720+{
3721+ namespace N2
3722+ {
3723+ class C12{}
3724+ }
3725+}
3726+/*
3727+N1 test.h /^namespace N1$/;" namespace line:1
3728+N2 test.h /^namespace N2$/;" namespace line:3
3729+C12 test.h /^ class C12{};$/;" class line:5 namespace:N1::N2
3730+*/
3731
3732=== added file 'Test/bug670433.f90'
3733--- Test/bug670433.f90 1970-01-01 00:00:00 +0000
3734+++ Test/bug670433.f90 2011-03-11 21:16:06 +0000
3735@@ -0,0 +1,40 @@
3736+! Bugs item #670443, was opened at 2003-01-18 22:44
3737+! You can respond by visiting:
3738+! https://sourceforge.net/tracker/?func=detail&atid=106556&aid=670443&group_id=6556
3739+!
3740+! Category: None
3741+! Group: None
3742+! Status: Open
3743+! Resolution: None
3744+! Priority: 5
3745+! Submitted By: Erik Edelmann (fanerier)
3746+! Assigned to: Nobody/Anonymous (nobody)
3747+! Summary: Fortran: Internal procedures causes trouble
3748+!
3749+! Initial Comment:
3750+! If a function in a module has an internal procedure
3751+! (after a CONTAINS-statement), everything in the module
3752+! after the parent function will be skipped. I.e. in the
3753+! attached file, the subroutine 'bar' will not be listed
3754+! in the 'tags' file. Note that this problem arises only
3755+! when the parent procedure is a function, if it is a
3756+! subroutine everything works fine.
3757+
3758+module foobar
3759+
3760+contains
3761+
3762+ integer function foo (i)
3763+
3764+ contains
3765+
3766+ real function f(x)
3767+ end function f
3768+
3769+ end function foo
3770+
3771+
3772+ subroutine bar (n)
3773+ end subroutine bar
3774+
3775+end module foobar
3776
3777=== added file 'Test/bug681824.php'
3778--- Test/bug681824.php 1970-01-01 00:00:00 +0000
3779+++ Test/bug681824.php 2011-03-11 21:16:06 +0000
3780@@ -0,0 +1,31 @@
3781+// Bugs item #681824, was opened at 2003-02-06 18:14
3782+// You can respond by visiting:
3783+// https://sourceforge.net/tracker/?func=detail&atid=106556&aid=681824&group_id=6556
3784+//
3785+// Category: None
3786+// Group: None
3787+// Status: Open
3788+// Resolution: None
3789+// Priority: 5
3790+// Submitted By: Thomi Dammann (thomi35)
3791+// Assigned to: Nobody/Anonymous (nobody)
3792+// Summary: Comments disturb ctags (v. 5.4) scaning a PHP-file?
3793+//
3794+// Initial Comment:
3795+// If I have (correct) statements like
3796+//
3797+ function db_query
3798+ ($pDB, // connection handle
3799+ $pQuery) // query string
3800+ {
3801+...
3802+}
3803+//
3804+// it seems that ctags used with vim doesn't find the
3805+// function names anymore. I think that either the
3806+// comments or the distribution on more than one line
3807+// disturb the parser.
3808+//
3809+// Regards
3810+//
3811+// Thomi
3812
3813=== added file 'Test/bug699171.py'
3814--- Test/bug699171.py 1970-01-01 00:00:00 +0000
3815+++ Test/bug699171.py 2011-03-11 21:16:06 +0000
3816@@ -0,0 +1,8 @@
3817+# Test for Bug #699171.
3818+# Extracted from http://txt2tags.sourceforge.net/src/txt2tags-1.4.tar.gz
3819+
3820+HEADER_TEMPLATE = {
3821+r"""Multiline raw string
3822+"""
3823+}
3824+def Quit(msg, exitcode=0): print msg ; sys.exit(exitcode)
3825
3826=== added file 'Test/bug722501.sql'
3827--- Test/bug722501.sql 1970-01-01 00:00:00 +0000
3828+++ Test/bug722501.sql 2011-03-11 21:16:06 +0000
3829@@ -0,0 +1,24 @@
3830+/*
3831+The PL/SQL parser (v1.6) does not parse a standalone
3832+procedure or function (i.e., not part of a package) when
3833+the SQL is in the form
3834+*/
3835+CREATE OR REPLACE PROCEDURE foo
3836+AS /* or IS*/
3837+ BEGIN
3838+ DECLARE
3839+ l_foo NUMBER;
3840+ BEGIN
3841+ l_foo := 1;
3842+ END;
3843+ END;
3844+/*
3845+When this is processed the only tag reported is
3846+Procedure foo. If you remove the line with AS, the
3847+variable l_foo is seen, but then the procedure will not
3848+compile in Oracle.
3849+
3850+Functions seem to have similar problems in that the
3851+parser will not see inside the function, but removing the
3852+IS or AS does not remedy the problem for a function.
3853+*/
3854
3855=== added file 'Test/bug726712.f90'
3856--- Test/bug726712.f90 1970-01-01 00:00:00 +0000
3857+++ Test/bug726712.f90 2011-03-11 21:16:06 +0000
3858@@ -0,0 +1,72 @@
3859+! Bugs item #726712, was opened at 2003-04-24 08:36
3860+! Message generated for change (Comment added) made by schubidu
3861+! You can respond by visiting:
3862+! https://sourceforge.net/tracker/?func=detail&atid=106556&aid=726712&group_id=6556
3863+!
3864+! Category: None
3865+! Group: None
3866+! Status: Open
3867+! Resolution: None
3868+! Priority: 5
3869+! Submitted By: sandra schrödter (schubidu)
3870+! Assigned to: Darren Hiebert (dhiebert)
3871+! Summary: ctags 5.5 and f90: "endsubroutine" not recognized
3872+!
3873+! Initial Comment:
3874+! Dear Ctags'ers. :)
3875+!
3876+! First of all: good tool! :) I stumbled across ctags for
3877+! my gvim6, wanted to use the nice plugin taglist.
3878+!
3879+! My System: HP-Unix and ctags 5.5
3880+!
3881+! My problem is the following. The command:
3882+!
3883+! "ctags tagstest.f90"
3884+!
3885+! builds a tagsfile that lacks 1 of the declared 3
3886+! subroutines.
3887+! The problem disappears when the declaration of the
3888+! subroutine ends in "end subroutine" and not in
3889+! "endsubroutine", although "endsubroutine" is correct
3890+! Fortran90 syntax, AFAIK.
3891+!
3892+! Is there a chance to get this corrected?
3893+!
3894+!
3895+! The example file tagstest.f90:
3896+
3897+ subroutine tagstest_ctrl()
3898+ real :: a
3899+ a = 0.0
3900+ call sub1( a)
3901+ call sub2( a)
3902+ endsubroutine tagstest_ctrl
3903+
3904+ subroutine sub1( a)
3905+ real,intent( inout) ::a
3906+ a = 1.1
3907+ endsubroutine sub1
3908+
3909+ subroutine sub2( a)
3910+ real,intent( inout) ::a
3911+ a = 2.2
3912+ endsubroutine sub2
3913+
3914+! ----------------------------------------------------------------------
3915+!
3916+! Comment By: sandra schrödter (schubidu)
3917+! Date: 2003-05-28 13:17
3918+!
3919+! Message:
3920+! Logged In: YES
3921+! user_id=763447
3922+!
3923+! I realized that there are also problems when a subroutine
3924+! ends only with the keyword
3925+! end
3926+!
3927+! The following subroutine is listed but cannot be selected
3928+! (that is, the cursor wont go there)
3929+!
3930+! ----------------------------------------------------------------------
3931
3932=== added file 'Test/bug726875.f90'
3933--- Test/bug726875.f90 1970-01-01 00:00:00 +0000
3934+++ Test/bug726875.f90 2011-03-11 21:16:06 +0000
3935@@ -0,0 +1,28 @@
3936+! Bugs item #726875, was opened at 2003-04-24 15:30
3937+! Message generated for change (Tracker Item Submitted) made by Item Submitter
3938+! You can respond by visiting:
3939+! https://sourceforge.net/tracker/?func=detail&atid=106556&aid=726875&group_id=6556
3940+!
3941+! Category: None
3942+! Group: None
3943+! Status: Open
3944+! Resolution: None
3945+! Priority: 5
3946+! Submitted By: sandra schrödter (schubidu)
3947+! Assigned to: Nobody/Anonymous (nobody)
3948+! Summary: ctags 5.5 and f90: common and !
3949+!
3950+! Initial Comment:
3951+! ctags won't add a common-block definition to the tags
3952+! file when the following occurs:
3953+
3954+ common /coma/ a,b,!foobar
3955+ + c,d
3956+
3957+ common /comb/ e,f
3958+
3959+ common /comc/ g,h
3960+
3961+! The problem seems to be based on the fact that the
3962+! comment "! foobar" is followed by a continuation line
3963+! ("+" in column 6 shows that)
3964
3965=== added file 'Test/bug734933.f90'
3966--- Test/bug734933.f90 1970-01-01 00:00:00 +0000
3967+++ Test/bug734933.f90 2011-03-11 21:16:06 +0000
3968@@ -0,0 +1,39 @@
3969+ MODULE MDCOMPONENTS
3970+
3971+ USE kindef
3972+ USE memory
3973+
3974+ IMPLICIT NONE
3975+
3976+ SAVE
3977+
3978+ INTEGER (INT4), PARAMETER :: LIM_COMPONENTS = 1000;
3979+ INTEGER (INT4) :: NUM_COMPONENTS = 0, NCOMP;
3980+ TYPE COMPONENT
3981+ CHARACTER (LEN=30) :: NAME
3982+ INTEGER (INT4) :: NUM_PART
3983+ REAL (REAL8), DIMENSION(:), POINTER :: PART_LIST
3984+ END TYPE
3985+
3986+ TYPE COMPONENT_POINTER
3987+ TYPE (COMPONENT), POINTER :: P
3988+ END TYPE
3989+
3990+ TYPE (COMPONENT), POINTER :: COMP
3991+ TYPE (COMPONENT_POINTER) :: COMP_TMP
3992+ TYPE (COMPONENT_POINTER), DIMENSION(LIM_COMPONENTS) :: COMPONENTS, COMPONENTS_TMP
3993+
3994+ INTERFACE MEMDEALLOC
3995+ MODULE PROCEDURE MEMDEALLOC_COMPONENTS_PTR
3996+ END INTERFACE
3997+
3998+ CONTAINS
3999+
4000+ SUBROUTINE ADD_COMPONENTS
4001+
4002+ NUM_COMPONENTS = NUM_COMPONENTS + 1
4003+ CALL MEMALLOC (COMPONENTS(NUM_COMPONENTS)%P, IDALL999)
4004+
4005+ END SUBROUTINE ADD_COMPONENTS
4006+
4007+ END MODULE MDCOMPONENTS
4008
4009=== added file 'Test/bug762027.v'
4010--- Test/bug762027.v 1970-01-01 00:00:00 +0000
4011+++ Test/bug762027.v 2011-03-11 21:16:06 +0000
4012@@ -0,0 +1,27 @@
4013+/*
4014+Bugs item #762027, was opened at 2003-06-27 18:32
4015+Message generated for change (Tracker Item Submitted) made by Item Submitter
4016+You can respond by visiting:
4017+https://sourceforge.net/tracker/?func=detail&atid=106556&aid=762027&group_id=6556
4018+
4019+Category: None
4020+Group: None
4021+Status: Open
4022+Resolution: None
4023+Priority: 5
4024+Submitted By: cdic (cdic)
4025+Assigned to: Nobody/Anonymous (nobody)
4026+Summary: multi-line definition w/o back-slash will be missing
4027+
4028+Initial Comment:
4029+There is a small bug (language verilog):
4030+*/
4031+ wire N_84, N_83; // is ok.
4032+
4033+ wire N_84,
4034+ N_83; // then N_83 will be missing in tags.
4035+/*
4036+Thanks for fixing it.
4037+
4038+cdic
4039+*/
4040
4041=== added file 'Test/bug814263.java'
4042--- Test/bug814263.java 1970-01-01 00:00:00 +0000
4043+++ Test/bug814263.java 2011-03-11 21:16:06 +0000
4044@@ -0,0 +1,6 @@
4045+import java.util.Map;
4046+
4047+public class bug814263 {
4048+ protected java.util.Map map1;
4049+ protected Map map2;
4050+}
4051
4052=== added file 'Test/bug816636.sml'
4053--- Test/bug816636.sml 1970-01-01 00:00:00 +0000
4054+++ Test/bug816636.sml 2011-03-11 21:16:06 +0000
4055@@ -0,0 +1,26 @@
4056+(*
4057+Bugs item #816636, was opened at 2003-10-02 11:01
4058+Message generated for change (Tracker Item Submitted) made by Item Submitter
4059+You can respond by visiting:
4060+https://sourceforge.net/tracker/?func=detail&atid=106556&aid=816636&group_id=6556
4061+
4062+Category: None
4063+Group: None
4064+Status: Open
4065+Resolution: None
4066+Priority: 5
4067+Submitted By: Rahul Chaudhry (rahuldotc)
4068+Assigned to: Nobody/Anonymous (nobody)
4069+Summary: sml (standard ML) tag support
4070+
4071+Initial Comment:
4072+The program does not handle the "and" keyword of ML.
4073+
4074+e.g. on the following code:
4075+*)
4076+fun f x = 1 + g x
4077+
4078+and g x = 2 + f 0;
4079+(*
4080+ctags generates a tag for function "f" but not for function "g".
4081+*)
4082
4083=== added file 'Test/bug823000.sql'
4084--- Test/bug823000.sql 1970-01-01 00:00:00 +0000
4085+++ Test/bug823000.sql 2011-03-11 21:16:06 +0000
4086@@ -0,0 +1,80 @@
4087+/*
4088+Bugs item #823000, was opened at 2003-10-13 21:56
4089+Message generated for change (Tracker Item Submitted) made by Item Submitter
4090+You can respond by visiting:
4091+https://sourceforge.net/tracker/?func=detail&atid=106556&aid=823000&group_id=6556
4092+
4093+Category: None
4094+Group: None
4095+Status: Open
4096+Resolution: None
4097+Priority: 5
4098+Submitted By: Jozsef Nagy (brutal)
4099+Assigned to: Nobody/Anonymous (nobody)
4100+Summary: PL/SQL functions and procedures
4101+
4102+Initial Comment:
4103+I've tried to use ctags (version 5.5.2) to navigate
4104+PL/SQL source codes in vim but jumping to
4105+function/procedure definitions worked not properly. I
4106+figured out that the problem was that I've defined
4107+these functions/procedures in multiline format, for
4108+example:
4109+
4110+test.pkb:
4111+*/
4112+CREATE OR REPLACE PACKAGE TEST IS
4113+
4114+PROCEDURE TestFunc1
4115+(
4116+ arg1 IN NUMBER,
4117+ arg2 IN NUMBER
4118+)
4119+IS
4120+BEGIN
4121+ NULL;
4122+END TestFunc1;
4123+
4124+PROCEDURE TestFunc2
4125+(
4126+ arg1 IN NUMBER,
4127+ arg2 IN NUMBER
4128+)
4129+IS
4130+BEGIN
4131+ NULL;
4132+END TestFunc2;
4133+
4134+END TEST;
4135+/
4136+/*
4137+ctags creates a regexp type pattern for my
4138+functions/procedures but unfortunately the pattern was
4139+/^IS$/ for each function/procedure, that's why the
4140+jumping method worked really crappy. (see the output of
4141+ctags 5.5.2 on this example code below)
4142+
4143+ctags -f - --language-force=sql test.pkb
4144+TEST test.pkb /^CREATE OR REPLACE PACKAGE
4145+TEST IS$/;" P
4146+TestFunc1 test.pkb /^IS$/;" p
4147+TestFunc2 test.pkb /^IS$/;" p
4148+
4149+I've looked into the ctags source code and I saw that
4150+in parseSubProgram() in sql.c called makeSqlTag() only
4151+when KEYWORD_is reached. I have modified this function
4152+ so that makeSqlTag() is called immediately after a
4153+function/procedure keyword and name is read (I have
4154+attached the output of diff sql.c.5.5.2 sql.c). I don't
4155+know much of ctags internals so I am not sure if this
4156+is the best solution but it worked for me. (see the
4157+output of my modified ctags below)
4158+
4159+ctags -f - --language-force=sql test.pkb
4160+TEST test.pkb /^CREATE OR REPLACE PACKAGE
4161+TEST IS$/;" P
4162+TestFunc1 test.pkb /^PROCEDURE
4163+TestFunc1$/;" p
4164+TestFunc2 test.pkb /^PROCEDURE
4165+TestFunc2$/;" p
4166+*/
4167
4168=== added file 'Test/bug842077.pl'
4169--- Test/bug842077.pl 1970-01-01 00:00:00 +0000
4170+++ Test/bug842077.pl 2011-03-11 21:16:06 +0000
4171@@ -0,0 +1,33 @@
4172+# Bugs item #842077, was opened at 2003-11-14 10:57
4173+# Message generated for change (Tracker Item Submitted) made by Item Submitter
4174+# You can respond by visiting:
4175+# https://sourceforge.net/tracker/?func=detail&atid=106556&aid=842077&group_id=6556
4176+
4177+# Category: None
4178+# Group: None
4179+# Status: Open
4180+# Resolution: None
4181+# Priority: 5
4182+# Submitted By: Christian Reis (kiko_async)
4183+# Assigned to: Nobody/Anonymous (nobody)
4184+# Summary: wrong precedence applied to perl POD and "here document"
4185+
4186+# Initial Comment:
4187+# Basically, ctags stops parsing when it reaches code
4188+# with the syntax below:
4189+
4190+# ...
4191+$this->print_log(<<EOM);
4192+== Tinderbox Info
4193+...
4194+== End Tinderbox Client Info
4195+EOM
4196+# ...
4197+
4198+sub test {
4199+# This subroutine is missed when bug is present.
4200+}
4201+
4202+# It sounds to me like ctags thinks it's a POD comment
4203+# when it
4204+# isn't--wrong precedence of POD vs. here document.
4205
4206=== added file 'Test/bug849591.cpp'
4207--- Test/bug849591.cpp 1970-01-01 00:00:00 +0000
4208+++ Test/bug849591.cpp 2011-03-11 21:16:06 +0000
4209@@ -0,0 +1,56 @@
4210+/*
4211+Bugs item #849591, was opened at 2003-11-26 11:35
4212+Message generated for change (Tracker Item Submitted) made by Item Submitter
4213+You can respond by visiting:
4214+https://sourceforge.net/tracker/?func=detail&atid=106556&aid=849591&group_id=6556
4215+
4216+Category: None
4217+Group: None
4218+Status: Open
4219+Resolution: None
4220+Priority: 5
4221+Submitted By: Igor Proskuriakov (proskig)
4222+Assigned to: Nobody/Anonymous (nobody)
4223+Summary: C++ Member templates
4224+
4225+Initial Comment:
4226+Hi,
4227+There seems to be a problem with how ctags treats C++
4228+member templates. Example:
4229+*/
4230+void MainClass< ParamClass1&, ParamClass2>::Foo()
4231+{
4232+ exit(0);
4233+};
4234+/*
4235+Generates erroneous tag
4236+ParamClass1 test.cpp /^void MainClass< ParamClass1&, ParamClass2>::Foo()$/;" v
4237+
4238+Full ctags file:
4239+!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/
4240+!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/
4241+!_TAG_PROGRAM_AUTHOR Darren Hiebert /dhiebert@users.sourceforge.net/
4242+!_TAG_PROGRAM_NAME Exuberant Ctags //
4243+!_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/
4244+!_TAG_PROGRAM_VERSION 5.5.2 //
4245+Foo test.cpp /^void MainClass< const ParamClass1&, ParamClass2>::Foo()$/;" f class:ParamClass2
4246+ParamClass1 test.cpp /^void MainClass< ParamClass1&, ParamClass2>::Foo()$/;" v
4247+
4248+-----
4249+
4250+Removing space after first angle bracket:
4251+*/
4252+void MainClass<ParamClass1&, ParamClass2>::Foo()
4253+{
4254+ exit(0);
4255+};
4256+/*
4257+makes ctags to drop first letter from parameter class
4258+name:
4259+
4260+aramClass1 test.cpp /^void MainClass<ParamClass1&, ParamClass2>::Foo()$/;" v
4261+
4262+
4263+Let me know if you need any clarification with this issue.
4264+Many thanks in advance!
4265+*/
4266
4267=== added file 'Test/bug852368.cpp'
4268--- Test/bug852368.cpp 1970-01-01 00:00:00 +0000
4269+++ Test/bug852368.cpp 2011-03-11 21:16:06 +0000
4270@@ -0,0 +1,34 @@
4271+/*
4272+Bugs item #852368, was opened at 2003-12-01 23:20
4273+Message generated for change (Tracker Item Submitted) made by Item Submitter
4274+You can respond by visiting:
4275+https://sourceforge.net/tracker/?func=detail&atid=106556&aid=852368&group_id=6556
4276+
4277+Category: None
4278+Group: None
4279+Status: Open
4280+Resolution: None
4281+Priority: 5
4282+Submitted By: Welti Marco (cider101)
4283+Assigned to: Nobody/Anonymous (nobody)
4284+Summary: c/c++ unabalanced template brackets in signature
4285+
4286+Initial Comment:
4287+hi,
4288+
4289+ctags 5.5x generates unbalanced tempalte brackets in
4290+the method/function signature if a funtion parameter
4291+is a template.
4292+
4293+i.e.
4294+*/
4295+void foo(std::vector<float> &);
4296+/*
4297+generates the following signature
4298+signature:void (std::vector<<float>&)
4299+
4300+let me know if you need more details.
4301+
4302+regards
4303+cider
4304+*/
4305
4306=== added file 'Test/bug858165.f90'
4307--- Test/bug858165.f90 1970-01-01 00:00:00 +0000
4308+++ Test/bug858165.f90 2011-03-11 21:16:06 +0000
4309@@ -0,0 +1,25 @@
4310+! Bugs item #858165, was opened at 2003-12-11 10:09
4311+! Message generated for change (Tracker Item Submitted) made by Item Submitter
4312+! You can respond by visiting:
4313+! https://sourceforge.net/tracker/?func=detail&atid=106556&aid=858165&group_id=6556
4314+!
4315+! Category: None
4316+! Group: None
4317+! Status: Open
4318+! Resolution: None
4319+! Priority: 5
4320+! Submitted By: Blazej Krzeminski (blazk)
4321+! Assigned to: Nobody/Anonymous (nobody)
4322+! Summary: Fortran90: comment line after continuation character &
4323+!
4324+! Initial Comment:
4325+program test
4326+
4327+integer :: a, & !comment on variable a
4328+ b, & !comment on variable b
4329+ !more comment on variable b, CTAGS STOPS HERE
4330+ c, & !comment on variable c
4331+ d !comment on variable d
4332+end program test
4333+
4334+! ctags will index program test, a,b but not c,d
4335
4336=== added file 'Test/bug872494.cpp'
4337--- Test/bug872494.cpp 1970-01-01 00:00:00 +0000
4338+++ Test/bug872494.cpp 2011-03-11 21:16:06 +0000
4339@@ -0,0 +1,43 @@
4340+/*
4341+Bugs item #872494, was opened at 2004-01-07 16:33
4342+Message generated for change (Tracker Item Submitted) made by Item Submitter
4343+You can respond by visiting:
4344+https://sourceforge.net/tracker/?func=detail&atid=106556&aid=872494&group_id=6556
4345+
4346+Category: None
4347+Group: None
4348+Status: Open
4349+Resolution: None
4350+Priority: 5
4351+Submitted By: Igor Proskuriakov (proskig)
4352+Assigned to: Nobody/Anonymous (nobody)
4353+Summary: C++ class template specialization
4354+
4355+Initial Comment:
4356+Hi,
4357+some time ago I posted a bug related to C++ member
4358+template, which was fixed using patch bug849591.diff.
4359+Many thanks - it really fixed the problem !
4360+Now about a different one.
4361+When parsing C++ file ctags seems to ignore template
4362+specialization, but I think that it maybe useful to add it
4363+as a configurable feature. Another problem is that
4364+template specialization seems to confuse patched
4365+version of ctags (patch bug849591.diff). When running a
4366+patched version against the following file
4367+*/
4368+template<class T> class TemplClass { double i;};
4369+
4370+template<> class TemplClass< char* > { int i;};
4371+
4372+class FooClass2{};
4373+/*
4374+it does not generate tag for FooClass2 while ctags 5.5.2
4375+does generate tag for FooClass2. Neither of them
4376+generate tag for specialization TemplClass<char *>.
4377+
4378+thanks in advance and let me know should you need
4379+more info!
4380+
4381+Igor
4382+*/
4383
4384=== added file 'Test/bug877956.f90'
4385--- Test/bug877956.f90 1970-01-01 00:00:00 +0000
4386+++ Test/bug877956.f90 2011-03-11 21:16:06 +0000
4387@@ -0,0 +1,54 @@
4388+! Bugs item #877956, was opened at 2004-01-15 17:59
4389+! Message generated for change (Tracker Item Submitted) made by Item Submitter
4390+! You can respond by visiting:
4391+! https://sourceforge.net/tracker/?func=detail&atid=106556&aid=877956&group_id=6556
4392+!
4393+! Category: None
4394+! Group: None
4395+! Status: Open
4396+! Resolution: None
4397+! Priority: 5
4398+! Submitted By: Randy Hood (randy762)
4399+! Assigned to: Nobody/Anonymous (nobody)
4400+! Summary: Broken Fortran variable listing after =-1
4401+!
4402+! Initial Comment:
4403+! When I run ctags v5.5.2 on Redhat Linux 9 with the command
4404+!
4405+! ctags --Fortran-kinds=v -x test.f90
4406+!
4407+! where test.f90 is
4408+! ----------------------------------
4409+PROGRAM test
4410+
4411+ IMPLICIT NONE
4412+ INTEGER :: cm1 =-1, c2 = 2
4413+
4414+END PROGRAM test
4415+! -------------------------------------
4416+!
4417+! I only get this one line of output
4418+!
4419+! cm1 variable 4 test.f90 INTEGER :: cm1 =-1, c2 = 2
4420+!
4421+! If I change one line of test.f90 so that it is now
4422+! ----------------------------------------
4423+PROGRAM test
4424+
4425+ IMPLICIT NONE
4426+ INTEGER :: cm1 = -1, c2 = 2
4427+
4428+END PROGRAM test
4429+! -----------------------------------------
4430+! and run the command
4431+!
4432+! ctags --Fortran-kinds=v -x test.f90
4433+!
4434+! I get this correct output
4435+!
4436+! c2 variable 4 test.f90 INTEGER :: cm1 = -1, c2 = 2
4437+! cm1 variable 4 test.f90 INTEGER :: cm1 = -1, c2 = 2
4438+!
4439+! ----------------------------------------------------------------------
4440+! You can respond by visiting:
4441+! https://sourceforge.net/tracker/?func=detail&atid=106556&aid=877956&group_id=6556
4442
4443=== added file 'Test/bug960316.v'
4444--- Test/bug960316.v 1970-01-01 00:00:00 +0000
4445+++ Test/bug960316.v 2011-03-11 21:16:06 +0000
4446@@ -0,0 +1,53 @@
4447+/**************************************************************************
4448+****
4449+* test task one
4450+* the line below has 53 asteriks
4451+*****************************************************/
4452+task pass_task_1;
4453+begin
4454+end
4455+endtask
4456+
4457+/**************************************************************************
4458+****
4459+* test task one
4460+* the line below has 54 asteriks
4461+******************************************************/
4462+task fail_task_2;
4463+begin
4464+end
4465+endtask
4466+
4467+/**************************************************************************
4468+****
4469+* test function one
4470+* the line below has 53 asteriks
4471+*****************************************************/
4472+function pass_func_1;
4473+begin
4474+end
4475+endfunction
4476+
4477+/**************************************************************************
4478+****
4479+* test function two
4480+* the line below has 54 asteriks
4481+******************************************************/
4482+function fail_func_2;
4483+begin
4484+end
4485+endfunction
4486+
4487+/**************************************************************************
4488+****
4489+* test function one
4490+* the line below has 53 asteriks
4491+*****************************************************/
4492+`define pass_define_1 1'b1;
4493+
4494+/**************************************************************************
4495+****
4496+* test function two
4497+* the line below has 54 asteriks
4498+******************************************************/
4499+`define fail_define_2 1'b1;
4500
4501=== added file 'Test/bug961001.v'
4502--- Test/bug961001.v 1970-01-01 00:00:00 +0000
4503+++ Test/bug961001.v 2011-03-11 21:16:06 +0000
4504@@ -0,0 +1,26 @@
4505+/*
4506+ * In Verilog, the following two lines are both valid syntax:
4507+ *
4508+ * `define GUEST
4509+ * `define GUEST <value>
4510+ *
4511+ * The first defines "GUEST" as existing, but with no assigned
4512+ * value. The second defines "GUEST" as existing with an
4513+ * assigned value. Ctags55 correctly handles both cases, but
4514+ * Ctags551 - Ctags554 only handles the `define with value
4515+ * correctly. Here is some test code to demonstrate this:
4516+ */
4517+`define HOSTA
4518+`define HOSTB
4519+`define HOSTC
4520+`define HOSTD
4521+
4522+`define GUESTA 1
4523+`define GUESTB 2
4524+`define GUESTC 3
4525+`define GUESTD 4
4526+/*
4527+ * Ctags55 correctly generates a tag for all `defines in the
4528+ * code, but Ctags554 does not generate tags for "HOSTB"
4529+ * or "HOSTD".
4530+ */
4531
4532=== added file 'Test/build.xml'
4533--- Test/build.xml 1970-01-01 00:00:00 +0000
4534+++ Test/build.xml 2011-03-11 21:16:06 +0000
4535@@ -0,0 +1,102 @@
4536+<?xml version="1.0" encoding="UTF-8" ?>
4537+
4538+<project name="MyProject" default="deploy" basedir=".">
4539+
4540+ <target name="init">
4541+ <property environment="envvars" />
4542+ <property name="rootDir" value="." />
4543+ <property name="srcDir" value="${rootDir}/src" />
4544+
4545+ <path id="base.classpath">
4546+ <pathelement location="${buildDir}" />
4547+ </path>
4548+ </target>
4549+
4550+ <target name="clean" depends="init">
4551+ <delete dir="${buildDir}"
4552+ verbose="false"
4553+ quiet="false"
4554+ />
4555+ </target>
4556+
4557+ <target name="compile_something" depends="init">
4558+ <mkdir dir="${buildDir}" />
4559+ <mkdir dir="${buildDir}/images" />
4560+ <javac srcdir="${javaDir}"
4561+ destdir="${buildDir}"
4562+ debug="on"
4563+ optimize="off"
4564+ verbose="no"
4565+ listfiles="yes"
4566+ deprecation="no"
4567+ classpathref="base.classpath"
4568+ />
4569+
4570+ <copy toDir="${buildDir}/images">
4571+ <fileset dir="${javaImagesDir}" includes="*.*" />
4572+ </copy>
4573+
4574+ </target>
4575+
4576+ <!--target name="generate_h_from_java" depends="compile_something">
4577+ <exec executable="javah" dir="${buildDir}">
4578+ </exec>
4579+ </target-->
4580+
4581+ <target name="generate_h_from_java" depends="compile_something">
4582+ <javah destdir="${ulgateDir}" classpath="${buildDir}">
4583+ </javah>
4584+ </target>
4585+
4586+ <target name="javadoc">
4587+ <delete dir="${javaDocDir}"
4588+ verbose="false"
4589+ quiet="false"
4590+ />
4591+ <mkdir dir="${javaDocDir}" />
4592+ <javadoc destdir="${javaDocDir}"
4593+ classpathref="base.classpath"
4594+ link="http://java.sun.com/j2se/1.4.1/docs/api/"
4595+ verbose="no"
4596+ additionalparam="-breakiterator"
4597+ >
4598+ <fileset dir="${javaDir}" />
4599+ </javadoc>
4600+ </target>
4601+
4602+ <target name="deploy" depends="compile_something, generate_h_from_java">
4603+
4604+ <delete dir="${deployDir}"
4605+ verbose="false"
4606+ quiet="false"
4607+ />
4608+ <mkdir dir="${deployDir}" />
4609+ <mkdir dir="${deployDir}/client" />
4610+ <mkdir dir="${deployDir}/server" />
4611+
4612+ <jar jarfile="${deployDir}/server/something.jar">
4613+ <fileset dir="${buildDir}"
4614+ includes="images/**"
4615+ />
4616+ </jar>
4617+
4618+ <copy toDir="${deployDir}/client" verbose="Yes" >
4619+ <fileset dir="${binDir}" includes="startClient.cmd" />
4620+ <fileset dir="${binDir}" includes="killProcess.vbs" />
4621+ </copy>
4622+
4623+ <copy toDir="${deployDir}/server/sql" verbose="Yes" >
4624+ <fileset dir="${sqlDir}" includes="*.sql" />
4625+ </copy>
4626+
4627+ <copy toDir="${deployDir}/server/samples">
4628+ <fileset dir="${samplesDir}" includes="**/*.*" />
4629+ </copy>
4630+
4631+ <copy toDir="${deployDir}/doc">
4632+ <fileset dir="${docDir}" includes="**/*.*" />
4633+ </copy>
4634+
4635+ </target>
4636+
4637+</project>
4638
4639=== added file 'Test/byte.f'
4640--- Test/byte.f 1970-01-01 00:00:00 +0000
4641+++ Test/byte.f 2011-03-11 21:16:06 +0000
4642@@ -0,0 +1,7 @@
4643+! Provided by Brian Helsinki, 7 March 2003
4644+ program byte_test
4645+ BYTE A, B, C
4646+ BYTE A1, B1, C1(10)
4647+ BYTE A2 /'x'/, B2 /255/, C2(10)
4648+ END
4649+
4650
4651=== added file 'Test/char-selector.f90'
4652--- Test/char-selector.f90 1970-01-01 00:00:00 +0000
4653+++ Test/char-selector.f90 2011-03-11 21:16:06 +0000
4654@@ -0,0 +1,19 @@
4655+! Test for bug in parsing of char-selector
4656+ MODULE OUT_RD5
4657+ USE inmdmx
4658+ IMPLICIT NONE
4659+ SAVE
4660+
4661+ CHARACTER*(MXPATHLNGTH) temp
4662+ PRIVATE :: temp
4663+ INTEGER(4), PRIVATE, PARAMETER :: MXDDI=45
4664+ CHARACTER*40 titles(MXDDI)
4665+ PRIVATE :: titles
4666+ CHARACTER*12 units(MXDDI)
4667+ PRIVATE :: units
4668+ INTEGER(4), PRIVATE, DIMENSION (MXDDI+1) :: list
4669+ CHARACTER(1024) :: fpshape
4670+ INTEGER(4), PRIVATE :: nout
4671+ CHARACTER*(1024) :: fpshape2
4672+ INTEGER(4), PRIVATE :: last
4673+ END MODULE OUT_RD5
4674
4675=== added file 'Test/class.e'
4676--- Test/class.e 1970-01-01 00:00:00 +0000
4677+++ Test/class.e 2011-03-11 21:16:06 +0000
4678@@ -0,0 +1,72 @@
4679+indexing
4680+
4681+ description: "Try everything"
4682+
4683+deferred class UBER_CLASS [G -> CONSTRAINT] obsolete "message"
4684+
4685+inherit
4686+
4687+ ANY
4688+ rename
4689+ generator as my_generator,
4690+ generating_type as my_generating_type,
4691+ infix "/" as infix "//"
4692+ export
4693+ {NONE} my_generator, my_generating_type;
4694+ {ANY} same_type
4695+ undefine
4696+ is_equal
4697+ redefine
4698+ conforms_to
4699+ select
4700+ consitent
4701+ end
4702+
4703+ LINKED_LIST [G]
4704+ export {NONE}
4705+ all
4706+ end
4707+
4708+creation
4709+
4710+ make, make2
4711+
4712+create {SOMETHING}
4713+
4714+ make3
4715+
4716+feature -- Initialization
4717+
4718+ make is
4719+ do
4720+ end
4721+
4722+ make2 is
4723+ do
4724+ end
4725+
4726+ make3 is
4727+ do
4728+ end
4729+
4730+feature {ANY, NONE} -- Feature clause comment
4731+
4732+ procedure_full is
4733+ require else
4734+ local
4735+ do
4736+ ensure then
4737+ rescue
4738+ end
4739+
4740+ guard: INTEGER
4741+
4742+invariant
4743+
4744+ invariant: condition
4745+
4746+indexing
4747+
4748+ license: "May not be used for any purpose"
4749+
4750+end
4751
4752=== added file 'Test/common.f'
4753--- Test/common.f 1970-01-01 00:00:00 +0000
4754+++ Test/common.f 2011-03-11 21:16:06 +0000
4755@@ -0,0 +1,4 @@
4756+ PROGRAM main
4757+ COMMON /common1/ c1a, c1b
4758+ COMMON /common2/ c2a (1:3), c2b /common3/ c3a, c3b
4759+ END
4760
4761=== added file 'Test/complex_decl.c'
4762--- Test/complex_decl.c 1970-01-01 00:00:00 +0000
4763+++ Test/complex_decl.c 2011-03-11 21:16:06 +0000
4764@@ -0,0 +1,2 @@
4765+/* Complex declarations */
4766+static void (* const(ScanAction[5][5]))(void *)= {};
4767
4768=== added file 'Test/continuation.f90'
4769--- Test/continuation.f90 1970-01-01 00:00:00 +0000
4770+++ Test/continuation.f90 2011-03-11 21:16:06 +0000
4771@@ -0,0 +1,6 @@
4772+! Problem reported by Jim on 7 Jul 2002
4773+module test
4774+real*8 :: &
4775+para_a, & ! para_a is ...
4776+para_b, & ! para_b is ...
4777+para_c ! para_c is ...
4778
4779=== added file 'Test/countall.sql'
4780--- Test/countall.sql 1970-01-01 00:00:00 +0000
4781+++ Test/countall.sql 2011-03-11 21:16:06 +0000
4782@@ -0,0 +1,43 @@
4783+rem -----------------------------------------------------------------------
4784+rem URL: http://www.orafaq.com/scripts/plsql/countall.txt
4785+rem Filename: countall.sql
4786+rem Purpose: Count the number of rows for ALL tables in current schema
4787+rem using PL/SQL
4788+rem Date: 15-Apr-2000
4789+rem Author: Eberhardt, Roberto (Bolton) (reberhar@husky.ca)
4790+rem -----------------------------------------------------------------------
4791+
4792+set serveroutput on size 1000000
4793+
4794+DECLARE
4795+ t_c1_tname user_tables.table_name%TYPE;
4796+ t_command varchar2(200);
4797+ t_cid integer;
4798+ t_total_records number(10);
4799+ stat integer;
4800+ row_count integer;
4801+ t_limit integer := 0; -- Only show tables with more rows
4802+ cursor c1 is select table_name from user_tables order by table_name;
4803+BEGIN
4804+ t_limit := 0;
4805+ open c1;
4806+ loop
4807+ fetch c1 into t_c1_tname;
4808+ exit when c1%NOTFOUND;
4809+ t_command := 'SELECT COUNT(0) FROM '||t_c1_tname;
4810+ t_cid := DBMS_SQL.OPEN_CURSOR;
4811+ DBMS_SQL.PARSE(t_cid,t_command,dbms_sql.native);
4812+ DBMS_SQL.DEFINE_COLUMN(t_cid,1,t_total_records);
4813+ stat := DBMS_SQL.EXECUTE(t_cid);
4814+ row_count := DBMS_SQL.FETCH_ROWS(t_cid);
4815+ DBMS_SQL.COLUMN_VALUE(t_cid,1,t_total_records);
4816+ if t_total_records > t_limit then
4817+ DBMS_OUTPUT.PUT_LINE(rpad(t_c1_tname,55,' ')||
4818+ to_char(t_total_records,'99999999')||' record(s)');
4819+
4820+ end if;
4821+ DBMS_SQL.CLOSE_CURSOR(t_cid);
4822+ end loop;
4823+ close c1;
4824+END;
4825+/
4826
4827=== added file 'Test/cpp_destructor.cpp'
4828--- Test/cpp_destructor.cpp 1970-01-01 00:00:00 +0000
4829+++ Test/cpp_destructor.cpp 2011-03-11 21:16:06 +0000
4830@@ -0,0 +1,6 @@
4831+A::~A() { }
4832+
4833+B:: ~B () { }
4834+
4835+// bug 1585745
4836+C:: ~ C () { }
4837
4838=== added file 'Test/cython_sample.pyx'
4839--- Test/cython_sample.pyx 1970-01-01 00:00:00 +0000
4840+++ Test/cython_sample.pyx 2011-03-11 21:16:06 +0000
4841@@ -0,0 +1,46 @@
4842+# -*- cython-mode -*-
4843+# test code for python/cython functionality
4844+
4845+python_var = 1
4846+
4847+cdef int i = 2 # cython identifiers are not indexed
4848+cdef :
4849+ int j = 3
4850+cdef k = 4 # no type here
4851+
4852+cdef int int_identity(int i) : return i
4853+
4854+# here is a long one
4855+cdef object int2string(int i) :
4856+ return str(i)
4857+
4858+# a cdef class
4859+cdef class CDefClass :
4860+ def __init__(self) :
4861+ pass
4862+ def standard_method(self,i) :
4863+ return i
4864+ cdef int c_method(self,int i) :
4865+ return i
4866+
4867+# a python function
4868+def identity(x) :
4869+ return x
4870+
4871+# a python class
4872+class StdClass :
4873+ def return_me(self) :
4874+ return "me"
4875+
4876+cdef CDefClass cdefObj = CDefClass()
4877+stdObj = StdClass()
4878+
4879+print "cython_sample: testing to make sure this file compiles and runs..."
4880+print "i is: ", i
4881+print "j is: ", j
4882+print "i via identity: ", int_identity(i)
4883+print "i via int2string: ", int2string(i)
4884+print "cdefObj: ", cdefObj.c_method(i)
4885+print "k via py identity", identity(k)
4886+print "py method call:", stdObj.return_me()
4887+
4888
4889=== added file 'Test/db-trig.sql'
4890--- Test/db-trig.sql 1970-01-01 00:00:00 +0000
4891+++ Test/db-trig.sql 2011-03-11 21:16:06 +0000
4892@@ -0,0 +1,31 @@
4893+rem -----------------------------------------------------------------------
4894+rem URL: http://www.orafaq.com/scripts/plsql/db-trig.txt
4895+rem Filename: db-trig.sql
4896+rem Purpose: Demonstrate database triggers (available from Oracle 8i)
4897+rem Need DBA or CREATE ANY TRIGGER privs
4898+rem Date: 28-Aug-1998
4899+rem Author: Frank Naude (frank@ibi.co.za)
4900+rem -----------------------------------------------------------------------
4901+
4902+create or replace trigger restrict_login
4903+ after logon on database
4904+declare
4905+ flag number := 0;
4906+begin
4907+ select 1 into flag from sys.v_$session where program like '%sqlplus%';
4908+ if flag = 1 then
4909+ raise_application_error(-20000, 'No access from sqlplus');
4910+ end if;
4911+end;
4912+/
4913+show errors
4914+
4915+
4916+CREATE OR REPLACE TRIGGER startup_db
4917+after startup on database
4918+begin
4919+ dbms_shared_pool.keep ('SYS.STANDARD','P');
4920+ dbms_shared_pool.keep ('SYS.DBMS_STANDARD','P');
4921+end;
4922+/
4923+show errors
4924
4925=== added file 'Test/debian_432872.f90'
4926--- Test/debian_432872.f90 1970-01-01 00:00:00 +0000
4927+++ Test/debian_432872.f90 2011-03-11 21:16:06 +0000
4928@@ -0,0 +1,8 @@
4929+! { dg-do compile }
4930+! PR18923 segfault after subroutine name confusion.
4931+module FOO
4932+contains
4933+ subroutine FOO ! { dg-error "conflicts with PROCEDURE" }
4934+ character(len=selected_int_kind(0)) :: C ! { dg-error "data declaration statement" }
4935+ end subroutine ! { dg-error "Expecting END MODULE statement" }
4936+end ! { dg-warning "CONTAINS statement without FUNCTION" }
4937\ No newline at end of file
4938
4939=== added file 'Test/directives.c'
4940--- Test/directives.c 1970-01-01 00:00:00 +0000
4941+++ Test/directives.c 2011-03-11 21:16:06 +0000
4942@@ -0,0 +1,69 @@
4943+/* Test simple cases */
4944+#define VARIABLE_LIKE some_value
4945+#define FUNCTION_LIKE(a,b) (a + b)
4946+#pragma weak WeakSymbol = StrongSymbol
4947+
4948+#define with_long_comment /* line 1
4949+ line 2 */
4950+
4951+/* Test usual case */
4952+#ifdef MY_MACRO
4953+# define MACRO_TO_SEE1 1
4954+int a;
4955+#elif YOUR_MACRO
4956+# define MACRO_TO_SEE2 2
4957+int b;
4958+#elif defined (THEIR_MACRO)
4959+# define MACRO_TO_SEE3 3
4960+int c;
4961+#else
4962+# define MACRO_TO_SEE4 4
4963+int d;
4964+#endif
4965+
4966+/* Test commented-out case */
4967+#if 0
4968+#define IGNORE_MACRO
4969+int e;
4970+# if 0
4971+# define ANOTHER_IGNORE_MACRO
4972+int f;
4973+# else
4974+# define YAIM
4975+# endif
4976+#else
4977+# define SEE_THIS_MACRO 1
4978+int g;
4979+#endif
4980+
4981+/* Test path selection algorithm */
4982+#ifdef OK
4983+#define PATH1
4984+int foo1 (void)
4985+{
4986+#elif defined (OK)
4987+#define PATH2
4988+int foo2 (void)
4989+{
4990+#else
4991+#define PATH3
4992+int foo3 (void)
4993+{
4994+#endif
4995+}
4996+
4997+int bar1 (void)
4998+{
4999+#ifdef OK
5000+#define PATH1b
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches

to all changes: