Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Bringing the packages up to date

  • Loading branch information...
commit 6fb4cc9b46f20ace7319f7836b1bb15f001072f5 1 parent 4886c8c
@elandesign authored
Showing with 9,023 additions and 672 deletions.
  1. +1 −0  .gitignore
  2. +1 −0  Packages/CTags/CTags.sublime-settings
  3. +34 −50 Packages/CTags/README.creole
  4. +340 −0 Packages/CTags/ctags58/COPYING
  5. +371 −0 Packages/CTags/ctags58/FAQ
  6. +88 −0 Packages/CTags/ctags58/MAINTAINERS
  7. +73 −0 Packages/CTags/ctags58/README
  8. BIN  Packages/CTags/ctags58/ctags.exe
  9. +2,087 −0 Packages/CTags/ctags58/ctags.html
  10. +50 −11 Packages/CTags/ctagsplugin.py
  11. +1 −1  Packages/CTags/package-metadata.json
  12. BIN  Packages/Default/Meta Info Summary.cache
  13. BIN  Packages/Default/Startup.cache
  14. BIN  Packages/Default/Syntax Summary.cache
  15. +1 −3 Packages/Git/Git Commit Message.sublime-settings
  16. +1 −1  Packages/Git/annotate.py
  17. +4 −3 Packages/Git/commit.py
  18. +22 −17 Packages/Git/git.py
  19. +1 −1  Packages/Git/syntax/Git Blame.tmLanguage
  20. +2 −0  Packages/Markdown Preview/.gitattributes
  21. +26 −3 Packages/Markdown Preview/MarkdownPreview.py
  22. +16 −1 Packages/Markdown Preview/MarkdownPreview.sublime-settings
  23. +9 −0 Packages/Markdown Preview/README.md
  24. +7 −6 Packages/Markdown Preview/github.css
  25. BIN  Packages/Markdown Preview/lib/linux-x32/libssl-0.9.8/_ssl.so
  26. BIN  Packages/Markdown Preview/lib/linux-x32/libssl-1.0.0/_ssl.so
  27. BIN  Packages/Markdown Preview/lib/linux-x32/libssl-10/_ssl.so
  28. BIN  Packages/Markdown Preview/lib/linux-x64/libssl-0.9.8/_ssl.so
  29. BIN  Packages/Markdown Preview/lib/linux-x64/libssl-1.0.0/_ssl.so
  30. BIN  Packages/Markdown Preview/lib/linux-x64/libssl-10/_ssl.so
  31. +437 −0 Packages/Markdown Preview/lib/linux/ssl.py
  32. +6 −7 Packages/Markdown Preview/markdown.css
  33. +1 −1  Packages/Markdown Preview/package-metadata.json
  34. +78 −423 Packages/Markdown Preview/sample.html
  35. +11 −2 Packages/Markdown Preview/sample.md
  36. +433 −119 Packages/Package Control/Package Control.py
  37. BIN  Packages/Package Control/Package Control.pyc
  38. +27 −0 Packages/Package Control/Package Control.sublime-settings
  39. BIN  Packages/Package Control/lib/all/semver.pyc
  40. +1 −1  Packages/Package Control/package-metadata.json
  41. +79 −0 Packages/Rails Related Files/Main.sublime-menu
  42. +3 −2 Packages/Rails Related Files/README.markdown
  43. +36 −15 Packages/Rails Related Files/Rails.py
  44. +1 −1  Packages/Rails Related Files/package-metadata.json
  45. +1 −0  Packages/SCSS/.gitignore
  46. +27 −0 Packages/SCSS/Default (Linux).sublime-keymap
  47. +27 −0 Packages/SCSS/Default (OSX).sublime-keymap
  48. +27 −0 Packages/SCSS/Default (Windows).sublime-keymap
  49. +19 −0 Packages/SCSS/Indentation rules.tmPreferences
  50. +64 −0 Packages/SCSS/README.markdown
  51. +4 −0 Packages/SCSS/SCSS.sublime-settings
  52. +2,018 −0 Packages/SCSS/SCSS.tmLanguage
  53. +24 −0 Packages/SCSS/TM_CSS_SPACE.tmPreferences
  54. +36 −0 Packages/SCSS/comments.tmPreferences
  55. +46 −0 Packages/SCSS/miscellaneous.tmPreferences
  56. +1 −0  Packages/SCSS/package-metadata.json
  57. +187 −0 Packages/SCSS/property%3Aname.tmPreferences
  58. +178 −0 Packages/SCSS/property%3Avalue.tmPreferences
  59. +196 −0 Packages/SCSS/scss_completions.py
  60. BIN  Packages/SCSS/scss_completions.pyc
  61. +16 −0 Packages/SCSS/snippets/+ Shortcut to Include.tmSnippet
  62. +16 −0 Packages/SCSS/snippets/++ Shortcut to @extend.tmSnippet
  63. +16 −0 Packages/SCSS/snippets/++ Shortcut to @import.tmSnippet
  64. +21 −0 Packages/SCSS/snippets/= Shortcut to @mixin.tmSnippet
  65. +20 −0 Packages/SCSS/snippets/@for.tmSnippet
  66. +18 −0 Packages/SCSS/snippets/@if.tmSnippet
  67. +16 −0 Packages/SCSS/snippets/@import.tmSnippet
  68. +18 −0 Packages/SCSS/snippets/@media.tmSnippet
  69. +16 −0 Packages/SCSS/snippets/background.tmSnippet
  70. +19 −0 Packages/SCSS/symbol list for scss.tmPreferences
  71. +19 −0 Packages/SCSS/symbol list%3Agroup.tmPreferences
  72. +19 −0 Packages/SCSS/symbol list%3Aselector.tmPreferences
  73. +2 −0  Packages/Theme - Soda/README.md
  74. +1 −1  Packages/Theme - Soda/package-metadata.json
  75. +1 −1  Packages/User/Package Control.last-run
  76. +2 −0  Packages/User/Package Control.sublime-settings
  77. +1 −2  Packages/User/Preferences.sublime-settings
  78. +1 −0  Packages/ruby-slim.tmbundle/.gitignore
  79. +24 −0 Packages/ruby-slim.tmbundle/Preferences/Comments.tmPreferences
  80. +19 −0 Packages/ruby-slim.tmbundle/Preferences/Disable Indent Corrections.tmPreferences
  81. +26 −0 Packages/ruby-slim.tmbundle/README.md
  82. +16 −0 Packages/ruby-slim.tmbundle/Snippets/HTML 5.tmSnippet
  83. +16 −0 Packages/ruby-slim.tmbundle/Snippets/XHTML 1_0 Strict.tmSnippet
  84. +16 −0 Packages/ruby-slim.tmbundle/Snippets/XHTML 1_0 Transitional.tmSnippet
  85. +16 −0 Packages/ruby-slim.tmbundle/Snippets/XHTML 1_1.tmSnippet
  86. +19 −0 Packages/ruby-slim.tmbundle/Snippets/_columns.tmSnippet
  87. +16 −0 Packages/ruby-slim.tmbundle/Snippets/a.tmSnippet
  88. +16 −0 Packages/ruby-slim.tmbundle/Snippets/blockquote.tmSnippet
  89. +17 −0 Packages/ruby-slim.tmbundle/Snippets/br.tmSnippet
  90. +17 −0 Packages/ruby-slim.tmbundle/Snippets/div (class).tmSnippet
  91. +17 −0 Packages/ruby-slim.tmbundle/Snippets/div (id).tmSnippet
  92. +16 −0 Packages/ruby-slim.tmbundle/Snippets/emphasized.tmSnippet
  93. +17 −0 Packages/ruby-slim.tmbundle/Snippets/filter (erb).tmSnippet
  94. +17 −0 Packages/ruby-slim.tmbundle/Snippets/filter (escaped).tmSnippet
  95. +17 −0 Packages/ruby-slim.tmbundle/Snippets/filter (javascript).tmSnippet
  96. +17 −0 Packages/ruby-slim.tmbundle/Snippets/filter (markdown).tmSnippet
  97. +17 −0 Packages/ruby-slim.tmbundle/Snippets/filter (plain).tmSnippet
  98. +17 −0 Packages/ruby-slim.tmbundle/Snippets/filter (preserve).tmSnippet
  99. +17 −0 Packages/ruby-slim.tmbundle/Snippets/filter (ruby).tmSnippet
  100. +17 −0 Packages/ruby-slim.tmbundle/Snippets/filter (sass).tmSnippet
  101. +17 −0 Packages/ruby-slim.tmbundle/Snippets/filter (textile).tmSnippet
  102. +17 −0 Packages/ruby-slim.tmbundle/Snippets/h1.tmSnippet
  103. +17 −0 Packages/ruby-slim.tmbundle/Snippets/h2.tmSnippet
  104. +17 −0 Packages/ruby-slim.tmbundle/Snippets/h3.tmSnippet
  105. +17 −0 Packages/ruby-slim.tmbundle/Snippets/h4.tmSnippet
  106. +17 −0 Packages/ruby-slim.tmbundle/Snippets/h5.tmSnippet
  107. +17 −0 Packages/ruby-slim.tmbundle/Snippets/h6.tmSnippet
  108. +16 −0 Packages/ruby-slim.tmbundle/Snippets/li.tmSnippet
  109. +18 −0 Packages/ruby-slim.tmbundle/Snippets/link_to (route).tmSnippet
  110. +18 −0 Packages/ruby-slim.tmbundle/Snippets/link_to (url).tmSnippet
  111. +18 −0 Packages/ruby-slim.tmbundle/Snippets/link_to (wrap selected text).tmSnippet
  112. +17 −0 Packages/ruby-slim.tmbundle/Snippets/ol.tmSnippet
  113. +16 −0 Packages/ruby-slim.tmbundle/Snippets/p.tmSnippet
  114. +18 −0 Packages/ruby-slim.tmbundle/Snippets/render_partial.tmSnippet
  115. +16 −0 Packages/ruby-slim.tmbundle/Snippets/span.tmSnippet
  116. +16 −0 Packages/ruby-slim.tmbundle/Snippets/strong.tmSnippet
  117. +19 −0 Packages/ruby-slim.tmbundle/Snippets/table (basic).tmSnippet
  118. +24 −0 Packages/ruby-slim.tmbundle/Snippets/table (templated).tmSnippet
  119. +19 −0 Packages/ruby-slim.tmbundle/Snippets/tbody.tmSnippet
  120. +16 −0 Packages/ruby-slim.tmbundle/Snippets/td.tmSnippet
  121. +19 −0 Packages/ruby-slim.tmbundle/Snippets/tfooter.tmSnippet
  122. +16 −0 Packages/ruby-slim.tmbundle/Snippets/th.tmSnippet
  123. +19 −0 Packages/ruby-slim.tmbundle/Snippets/thead.tmSnippet
  124. +18 −0 Packages/ruby-slim.tmbundle/Snippets/tr.tmSnippet
  125. +17 −0 Packages/ruby-slim.tmbundle/Snippets/ul.tmSnippet
  126. +16 −0 Packages/ruby-slim.tmbundle/Snippets/wrap (selected).tmSnippet
  127. +633 −0 Packages/ruby-slim.tmbundle/Syntaxes/Ruby Slim.tmLanguage
  128. +222 −0 Packages/ruby-slim.tmbundle/info.plist
  129. +1 −0  Packages/ruby-slim.tmbundle/package-metadata.json
View
1  .gitignore
@@ -4,3 +4,4 @@ Settings/License.sublime_license
.DS_Store
Installed Packages
Pristine Packages
+*.cache
View
1  Packages/CTags/CTags.sublime-settings
@@ -11,6 +11,7 @@
// in this file and in your user settings.
"debug" : false,
+ "autocomplete": false,
"command" : "ctags -R -f .tags",
"filters" : {
"source.python": {"type":"^i$"}
View
84 Packages/CTags/README.creole
@@ -2,9 +2,26 @@
This [[http://sublimetext.com|Sublime Text 2]] Package provides support for working with tags generated by [[http://ctags.sourceforge.net/|Exuberant CTags]]
-The ctags command is searched for on PATH. It works by doing a binary search of
-an {{{mmap()}}}'d {{{.tags}}} file so it will work efficiently with very large ( 50MB+ etc
-) tags files if needed.
+The ctags command is searched for on the system PATH. It works by doing a binary search of
+a memory-mapped tags file, so it will work efficiently with very large (50MB+) tags files if needed.
+
+=== Installation ===
+
+The easiest way to install this plugin, is to use the [[http://wbond.net/sublime_packages/package_control|Package Control]] plugin (written by [[http://wbond.net|Will Bond]])
+
+==== Using Git ====
+
+Go to your Sublime Text 2 {{{Packages}}} directory and clone the repository using the command below:
+
+{{{
+$ git clone https://github.com/SublimeText/CTags CTags
+}}}
+
+==== Download Manually ====
+
+* Download the files using the .zip download option
+* Unzip the files (and rename the folder to CTags if needed)
+* Copy the folder to your Sublime Text 2 Packages directory
=== OS X ===
@@ -17,44 +34,20 @@ To get a proper copy of ctags, use one of the following options:
{{{port install ctags}}}
*Make sure that Sublime Text is using the right version of CTags:*
-* If 'which ctags' doesn't point at ctags in '/usr/local/bin', make sure you add '/usr/local/bin' to your PATH ahead of the folder that 'which ctags' reported.
+* If 'which ctags' doesn't point at ctags in '/usr/local/bin', make sure you add '/usr/local/bin' to your PATH ahead of the folder 'which ctags' reported.
** Add or modify the 'export PATH=...' (e.g. in ~/.profile) to make the change permanent
=== Linux ===
-To get a proper copy of ctags, use one of the following options:
+To get a proper copy of ctags:
* In a terminal session:
{{{sudo apt-get install ctags}}}
=== Windows ===
-Download the [[http://prdownloads.sourceforge.net/ctags/ctags58.zip|binary ctags.exe]] from [[http://ctags.sourceforge.net/|Exuberant Ctags site]].
-
-Extract {{{ctags.exe}}} from the download zip to "C:\Program Files\Sublime Text 2" or any folder that within your PATH so CTags support for Sublime Text 2 can run it.
-
-=== Dependencies ===
+Download the [[http://prdownloads.sourceforge.net/ctags/ctags58.zip|binary ctags.exe]] from [[http://ctags.sourceforge.net/|Exuberant CTags site]].
-* No dependencies!
-
-=== Installation ===
-
-If you are a git user, the best way to install the package and keep up to date
-is to clone the repo directly into your /Packages directory in the Sublime Text
-2 application settings area.
-
-==== Using Git ====
-
-Go to your Sublime Text 2 {{{Packages}}} directory and clone the repository using the command below:
-
-{{{
-$ git clone https://github.com/SublimeText/CTags CTags
-}}}
-
-==== Download Manually ====
-
-* Download the files using the .zip download option
-* Unzip the files (and rename the folder to CTags if needed)
-* Copy the folder to your Sublime Text 2 Packages directory
+Extract {{{ctags.exe}}} from the download zip to "C:\Program Files\Sublime Text 2" or any folder that within your PATH so that Sublime Text 2 can run it.
=== About ===
@@ -62,27 +55,16 @@ See this [[http://www.sublimetext.com/forum/viewtopic.php?f=5&t=144|forum thread
=== Usage ===
-This uses {{{.tags}}} files created in {{{ctags -R -f .tags}}} recursive mode.
+This uses {{{.tags}}} files created in {{{ctags -R -f .tags}}} recursive mode (by default).
-The commands will try and find a {{{tags}}} file in the same directory as
+The plugin will try to find a {{{.tags}}} file in the same directory as
the current view, walking up directories until it finds one. If it
-can't find one it will offer to build some ( in the directory of the
-current view ) (TODO: doesn't ask as missing api from S1)
-
-If a symbol can't be found in a tags file it will search in
-alternative locations.
+can't find one it will offer to build one ( in the directory of the
+current view )
-If you create a file {{{tags_search_paths}}} in the same folder as your
-{{{tags}}} file, listing alternative locations (full absolute paths, one
-per line) it will search those files also.
+If a symbol can't be found in a tags file, it will search in additional locations that are sprecified in the CTags.sublime-settings file (see below).
-eg
-
-{{{
-D:\myProject\tags
-}}}
-
-If you are a rubyist, you can build the whole Ruby Gems ctags file for your application seperately via a {{{build_gemtags.rb}}} script:
+If you are a Rubyist, you can build a Ruby Gem's tags with the following script:
{{{
require 'bundler'
@@ -92,7 +74,9 @@ system("ctags -R -f .gemtags #{paths.join(' ')}")
=== Other Settings ===
-By default, Sublime will include ctags files in your project, which causes them to show up in the file treee and search results. To disable this behaviour you should add a {{{file_exclude_patterns}}} entry to your {{{Preferences.sublime-settings}}} eg:
+By default, Sublime will include ctags files in your project, which causes them to show up in the file treee and search results. To disable this behaviour you should add a {{{file_exclude_patterns}}} entry to your {{{Preferences.sublime-settings}}} or you project file.
+
+e.g.:
{{{
"file_exclude_patterns": [".tags", ".tags_sorted_by_file", ".gemtags"]
@@ -140,7 +124,7 @@ The rest of the options are fairly self explanatory.
=== Support ===
-If there are any problems or you have a suggestion [[https://github.com/SublimeText/CTags/issues/new|open an issue]] and we will receive an email notification.
+If there are any problems or you have a suggestion, [[https://github.com/SublimeText/CTags/issues/new|open an issue]], and we will receive a notification.
Thanks :)
View
340 Packages/CTags/ctags58/COPYING
@@ -0,0 +1,340 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) 19yy <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) 19yy name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
View
371 Packages/CTags/ctags58/FAQ
@@ -0,0 +1,371 @@
+Frequently Asked Questions
+==========================
+
+ * 1. Why do you call it "Exuberant Ctags"?
+ * 2. Why doesn't my editor work with these tag files?
+ * 3. What are these strange bits of text beginning with ;"?
+ * 4. Why doesn't XEmacs' Speedbar module work with Exuberant Ctags?
+ * 5. Why doesn't Xemacs correctly locate the tag in the source file?
+ * 6. Why doesn't NEdit correctly locate the tag in the source file?
+ * 7. Why can't I jump to "class::member"?
+ * 8. How can I avoid having to specify my favorite option every time?
+ * 9. Why do I end up on the wrong line when I jump to a tag?
+ * 10. How do I jump to the tag I want instead of the wrong one by the
+ same name?
+ * 11. What is "Vim"?
+ * 12. How can I locate all references to a specific function or variable?
+ * 13. Why does appending tags to a tag file tag so long?
+ * 14. How do I get regex support for Win32?
+ * 15. How should I set up tag files for a multi-level directory hierarchy?
+
+ ----------------------------------------------------------------------
+1. Why do you call it "Exuberant Ctags"?
+
+Because one of the meanings of the word "exuberant" is:
+
+ exuberant : produced in extreme abundance : PLENTIFUL syn see PROFUSE
+
+Compare the tag file produced by Exuberant Ctags with that produced by any
+other ctags and you will see how appropriate the name is.
+
+ ----------------------------------------------------------------------
+2. Why doesn't my editor work with these tag files?
+
+3. What are these strange bits of text beginning with ;" which follow
+ many of the lines in the tag file?
+
+These are "extension flags". They are added in order to provide extra
+information about the tag that may be utilized by the editor in order to
+more intelligently handle tags. They are appended to the EX command part of
+the tag line in a manner that provides backwards compatibility with existing
+implementations of the Vi editor. The semicolon is an EX command separator
+and the double quote begins an EX comment. Thus, the extension flags appear
+as an EX comment and should be ignored by the editor when it processes the
+EX command.
+
+Some non-vi editors, however, implement only the bare minimum of EX commands
+in order to process the search command or line number in the third field of
+the tag file. If you encounter this problem, use the option "--format=1" to
+generate a tag file without these extensions (remember that you can set the
+CTAGS environment variable to any default arguments you wish to supply). Then
+ask the supplier of your editor to implement handling of this feature of EX
+commands.
+
+ ----------------------------------------------------------------------
+4. Why doesn't XEmacs' Speedbar module work with Exuberant Ctags?
+
+The default command line switches used by XEmacs for "etags" are not
+compatible with Exuberant Ctags options. By default, Exuberant Ctags installs
+a symbolic link, "etags", pointing to the ctags executable. When Exuberant
+Ctags is started with the name "etags", it produces Emacs-style tag files by
+default.
+
+To fix this, add the following lines to your .emacs file, replacing the path
+to "etags" with the path where the symbolic link was installed.
+
+(autoload 'speedbar "speedbar")
+(setq speedbar-fetch-etags-command "/usr/local/bin/etags"
+ speedbar-fetch-etags-arguments '("-f" "-"))
+
+ ----------------------------------------------------------------------
+5. Why doesn't Xemacs correctly locate the tag in the source file?
+
+This has been observed with version 20.3. It seems that when Xemacs searches
+for a tag, it searches using the tag name instead of the search string located
+in the TAGS file. This is a bug in Xemacs and does not occur in the GNU
+version of Emacs.
+
+ ----------------------------------------------------------------------
+6. Why doesn't NEdit correctly locate the tag in the source file?
+
+Versions of NEdit prior to 5.1 did not support the extended tag file format
+generated by Exuberant Ctags by default. Either upgrade to version 5.1 or
+specify the option "--format=1" when running ctags to output the old tag file
+format.
+
+ ----------------------------------------------------------------------
+7. Why can't I jump to "class::member"?
+
+Because, by default, ctags only generates tags for the separate identifiers
+found in the source files. If you specify the --extra=+q option, then
+ctags will also generate a second, class-qualified tag for each class member
+(data and function/method) in the form class::member for C++, and in the form
+class.method for Eiffel and Java.
+
+ ----------------------------------------------------------------------
+8. How can I avoid having to specify my favorite option every time?
+
+Either by setting the environment variable CTAGS to your custom
+options, or putting them into a .ctags file in your home directory.
+
+ ----------------------------------------------------------------------
+9. Why do I end up on the wrong line when I jump to a tag?
+
+By default, ctags encodes the line number in the file where macro (#define)
+tags are found. This was done to remain compatible with the original UNIX
+version of ctags. If you change the file containing the tag without
+rebuilding the tag file, the location of tag in the tag file may no longer
+match the current location.
+
+In order to avoid this problem, you can specify the option "--excmd=p",
+which causes ctags to use a search pattern to locate macro tags. I have
+never uncovered the reason why the original UNIX ctags used line numbers
+exclusively for macro tags, but have so far resisted changing the default
+behaviour of Exuberant Ctags to behave differently.
+
+ ----------------------------------------------------------------------
+10. How do I jump to the tag I want instead of the wrong one by the
+ same name?
+
+A tag file is simple a list of tag names and where to find them. If there
+are duplicate entries, you often end up going to the wrong one because the
+tag file is sorted and your editor locates the first one in the tag file.
+
+Standard Vi provides no facilities to alter this behavior. However, Vim
+has some nice features to minimize this problem, primarly by examining all
+matches and choosing the best one under the circumstances. Vim also provides
+commands which allow for selection of the desired matching tag.
+
+ ----------------------------------------------------------------------
+11. What is "Vim"?
+
+Vim is a vi-compatible editor available as source and compilable for any
+platform. Yeah, I know the first reaction is to shy away from this. But you
+will never regret getting it, and you will become greatly attached to its
+features, which you can learn gradually. I would be willing to say that it
+is the best vi-clone available within 4 light-years of Alpha Centauri. It
+works (nearly) exactly like standard vi, but provides some incredibly useful
+extensions (some of which I have participated in designing with the author).
+Most Linux distributions have adopted Vim as its standard vi.
+
+ ----------------------------------------------------------------------
+12. How can I locate all references to a specific function or variable?
+
+There are several packages already available which provide this capability.
+Namely, these are: GLOBAL source code tag system, GNU id-utils, cscope,
+and cflow. As of this writing, they can be found in the following locations:
+
+GLOBAL: http://www.gnu.org/software/global
+id-utils: http://www.gnu.org/software/idutils/idutils.html
+cscope: http://cscope.sourceforge.net
+cflow: ftp://www.ibiblio.org/pub/Linux/devel/lang/c
+
+ ----------------------------------------------------------------------
+13. Why does appending tags to a tag file tag so long?
+
+Sometimes, in an attempt to build a global tag file for all source files in
+a large source tree of many directories, someone will make an attempt to run
+ctags in append (-a) mode on every directory in the hierarchy. Each time
+ctags is invoked, its default behavior is to sort the tag file once the tags
+for that execution have been added. As the cumulative tag file grows, the sort
+time increases arithmetically.
+
+The best way to avoid this problem (and the most efficient) is to make
+use of the --recurse (or -R) option of ctags by executing the following
+command in the root of the directory hierarchy (thus running ctags only once):
+
+ ctags -R
+
+If you really insist on running ctags separately on each directory, you can
+avoid the sort pass each time by specifying the option "--sort=no". Once the
+tag file is completely built, use the sort command to manually sort the
+final tag file, or let the final invocation of ctags sort the file.
+
+ ----------------------------------------------------------------------
+14. How do I get regex support for Win32?
+
+You need to download the GNU regex package for Win32 from the following
+location:
+
+ http://people.delphiforums.com/gjc/gnu_regex.html
+
+Then point the makefile macro, REGEX_DIR, found in mk_mvc.mak and mk_bc5.mak,
+to the directory created by extracting this archive.
+
+ ----------------------------------------------------------------------
+15. How should I set up tag files for a multi-level directory hierarchy?
+
+There are a few ways of approaching this:
+
+1. A local tag file in each directory containing only the tags for source
+ files in that directory.
+
+2. One single big, global tag file present in the root directory of your
+ hierarchy, containing all tags present in all source files in the
+ hierarchy.
+
+3. A local tag file in each directory containing only the tags for source
+ files in that directory, in addition to one single global tag file
+ present in the root directory of your hierarchy, containing all
+ non-static tags present in all source files in the hierarchy.
+
+4. A local tag file in each directory of the hierarchy, each one
+ containing all tags present in source files in that directory and all
+ non-static tags in every directory below it (note that this implies
+ also having one big tag file in the root directory of the hierarchy).
+
+Each of these approaches has its own set of advantages and disadvantages,
+depending upon your particular conditions. Which approach is deemed best
+depends upon the following factors:
+
+A. The ability of your editor to use multiple tag files.
+
+ If your editor cannot make use of multiple tag files (original vi
+ implementations could not), then one large tag file is the only way to
+ go if you ever desire to jump to tags located in other directories. If
+ you never need to jump to tags in another directory (i.e. the source
+ in each directory is entirely self-contained), then a local tag file
+ in each directory will fit your needs.
+
+B. The time is takes for your editor to look up a tag in the tag file.
+
+ The significance of this factor depends upon the size of your source
+ tree and on whether the source files are located on a local or remote
+ file system. For source and tag files located on a local file system,
+ looking up a tag is not as big a hit as one might first imagine, since
+ vi implementations typically perform a binary search on a sorted tag
+ file. This may or may not be true for the editor you use. For files
+ located on a remote file system, reading a large file is an expensive
+ operation.
+
+C. Whether or not you expect the source code to change and the time it
+ takes to rebuild a tag file to account for changes to the source code.
+
+ While Exuberant Ctags is particularly fast in scanning source code
+ (around 1-2 MB/sec), a large project may still result in objectionable
+ delays if one wishes to keep their tag file(s) up to date on a
+ frequent basis, or if the files are located on a remote file system.
+
+D. The presence of duplicate tags in the source code and the ability to
+ handle them.
+
+ The impact of this factor is influenced by the following three issues:
+
+ 1. How common are duplicate tags in your project?
+
+ 2. Does your editor provide any facilities for dealing with duplicate
+ tags?
+
+ While standard vi does not, many modern vi implementations, such
+ as Vim have good facilities for selecting the desired match from
+ the list of duplicates. If your editor does not support duplicate
+ tags, then it will typically send you to only one of them, whether
+ or not that is the one you wanted (and not even notifying you that
+ there are other potential matches).
+
+ 3. What is the significance of duplicate tags?
+
+ For example, if you have two tags of the same name from entirely
+ isolated software components, jumping first to the match found
+ in component B while working in component A may be entirely
+ misleading, distracting or inconvenient (to keep having to choose
+ which one if your editor provides you with a list of matches).
+ However, if you have two tags of the same name for parallel builds
+ (say two initialization routines for different hosts), you may
+ always want to specify which one you want.
+
+Of the approaches listed above, I tend to favor Approach 3. My editor of
+choice is Vim, which provides a rich set of features for handling multiple
+tag files, which partly influences my choice. If you are working with
+source files on a remote file system, then I would recommend either
+Approach 3 or Approach 4, depending upon the hit when reading the global
+tag file.
+
+The advantages of Approach 3 are many (assuming that your editor has
+the ability to support both multiple tag files and duplicate tags). All
+lookups of tag located in the currect directory are fast and the local
+tag file can be quickly and easily regenerated in one second or less
+(I have even mapped a keystroke to do this easily). A lookup of a
+(necessarily non-static) tag found in another directory fails a lookup in
+the local tag file, but is found in the global tag file, which satisfies
+all cross-directory lookups. The global tag file can be automatically
+regenerated periodically with a cron job (and perhaps the local tag files
+also).
+
+Now I give an example of how you would implement Approach 3. Means of
+implementing the other approaches can be performed in a similar manner.
+
+Here is a visual representation of an example directory hierarchy:
+
+project
+ `-----misccomp
+ | `...
+ `-----sysint
+ `-----client
+ | `-----hdrs
+ | `-----lib
+ | `-----src
+ | `-----test
+ `-----common
+ | `-----hdrs
+ | `-----lib
+ | `-----src
+ | `-----test
+ `-----server
+ `-----hdrs
+ `-----lib
+ `-----src
+ `-----test
+
+Here is a recommended solution (conceptually) to build the tag files:
+
+1. Within each of the leaf nodes (i.e. hdrs, lib, src, test) build a tag
+ file using "ctags *.[ch]". This can be easily be done for the whole
+ hierarchy by making a shell script, call it "dirtags", containing the
+ following lines:
+
+ #!/bin/sh
+ cd $1
+ ctags *
+
+ Now execute the following command:
+
+ find * -type d -exec dirtags {} \;
+
+ These tag files are trivial (and extremely quick) to rebuild while
+ making changes within a directory. The following Vim key mapping is
+ quite useful to rebuild the tag file in the directory of the current
+ source file:
+
+ :nmap ,t :!(cd %:p:h;ctags *.[ch])&<CR><CR>
+
+2. Build the global tag file:
+
+ cd ~/project
+ ctags --file-scope=no -R
+
+ thus constructing a tag file containing only non-static tags for all
+ source files in all descendent directories.
+
+3. Configure your editor to read the local tag file first, then consult
+ the global tag file when not found in the local tag file. In Vim,
+ this is done as follows:
+
+ :set tags=./tags,tags,~/project/tags
+
+If you wish to implement Approach 4, you would need to replace the
+"dirtags" script of step 1 with the following:
+
+ #!/bin/sh
+ cd $1
+ ctags *
+ # Now append the non-static tags from descendent directories
+ find * -type d -prune -print | ctags -aR --file-scope=no -L-
+
+And replace the configuration of step 3 with this:
+
+ :set tags=./tags,./../tags,./../../tags,./../../../tags,tags
+
+As a caveat, it should be noted that step 2 builds a global tag file whose
+file names will be relative to the directory in which the global tag file
+is being built. This takes advantage of the Vim 'tagrelative' option,
+which causes the path to be interpreted a relative to the location of the
+tag file instead of the current directory. For standard vi, which always
+interprets the paths as relative to the current directory, we need to
+build the global tag file with absolute path names. This can be
+accomplished by replacing step 2 with the following:
+
+ cd ~/project
+ ctags --file-scope=no -R `pwd`
+
+--
View
88 Packages/CTags/ctags58/MAINTAINERS
@@ -0,0 +1,88 @@
+The following individuals are registered as developers for the maintenance of
+Exuberant Ctags. They are listed by their SourgeForge username and by the
+To send email to any one of them, send it to <username@users.sourceforge.net>.
+
+Ctags SourgeForge Full
+Parser username Name
+---------- ----------- -----
+Ant dfishburn David Fishburn
+AWK jkoshy Joseph Koshy
+Basic elias Elias Pschernig
+C# elliotth Elliott Hughes
+DosBatch dfishburn David Fishburn
+Flex dfishburn David Fishburn
+Java elliotth Elliott Hughes
+JavaScript dfishburn David Fishburn
+MATlAB dfishburn David Fishburn
+OCaml vberthoux Vincent Berthoux
+Perl perlguy0 Dmitri Tikhonov
+PHP jafl John Lindal
+Python elias Elias Pschernig
+Ruby elliotth Elliott Hughes
+SML jkoshy Joseph Koshy
+SQL dfishburn David Fishburn
+TeX dfishburn David Fishburn
+Vim dfishburn David Fishburn
+All else dhiebert Darren Hiebert
+
+How To Build & Test Like A Maintainer
+=====================================
+
+Prerequisites
+-------------
+
+ Debian/Ubuntu:
+
+ sudo apt-get install build-essential subversion autoconf
+
+ Mac OS:
+
+ Install the Xcode developer tools, available here:
+ http://developer.apple.com/tools/download/
+
+ RedHat:
+
+ up2date --nosig subversion autoheader autoconf
+
+ Windows:
+
+ Install Cygwin plus its Subversion and GNU Make packages.
+
+Building
+--------
+
+ First time:
+
+ svn co https://ctags.svn.sourceforget.net/svnroot/ctags/trunk ctags
+ # Miss off the "/trunk" above if you want access to old releases or the
+ # web site.
+ cd ctags
+ autoheader
+ autoconf
+ ./configure --enable-maintainer-mode
+ make -j
+
+ Later:
+
+ cd ctags
+ svn update
+ make -j
+
+Testing
+-------
+
+ First time:
+
+ cd ctags
+ cp /usr/bin/ctags ctags.ref
+ # Edit "testing.mak" so CTAGS_TEST = ./dctags
+ # Edit "testing.mak" so CTAGS_REF = ./ctags.ref
+ make test
+
+ Later:
+
+ make test
+
+ Whenever you're happy with the results and update/commit:
+
+ cp ./dctags ./ctags.ref
View
73 Packages/CTags/ctags58/README
@@ -0,0 +1,73 @@
+Exuberant Ctags
+===============
+Author: Darren Hiebert <dhiebert at users.sourceforge.net>
+ http://ctags.sourceforge.net
+ Instant Messaging:
+ Yahoo! ID : dbhiebert
+ AIM ScreenName: darrenhiebert
+
+Exuberant Ctags is a multilanguage reimplementation of the much-underused
+ctags(1) program and is intended to be the mother of all ctags programs. It
+generates indexes of source code definitions which are used by a number of
+editors and tools. The motivation which drove the development of Exuberant
+Ctags was the need for a ctags program which supported generation of tags
+for all possible C language constructs (which no other ctags offers), and
+because most were easily fooled by a number of preprocessor contructs.
+
+
+Exuberant Ctags offers the following features:
+
+1. It supports the following languages: Assembler, AWK, ASP, BETA,
+ Bourne/Korn/Z Shell, C, C++, C#, COBOL, Eiffel, Erlang, Fortran, Java, Lisp,
+ Lua, Makefile, Pascal, Perl, PHP, PL/SQL, Python, REXX, Ruby, Scheme,
+ S-Lang, SML (Standard ML), Tcl, Vera, Verilog, VHDL, Vim, and YACC.
+
+2. It is capable of generating tags for virtually all C language constructs.
+
+3. It is very robust in parsing code. In particular, the C/C++ parser is
+ far less easily fooled by code containing #if preprocessor conditional
+ constructs, using a conditional path selection algorithm to resolve
+ complicated situations, and a fall-back algorithm when this one fails.
+
+4. Supports output of Emacs-style TAGS files (i.e. "etags").
+
+5. User-defined languages, using Posix regular expressions.
+
+6. Supports UNIX, MSDOS, Windows 95/98/NT/2000/XP, OS/2, QNX, Amiga, QDOS,
+ RISC OS, VMS, Macintosh, and Cray. Some pre-compiled binaries are
+ available on the web site.
+
+
+Visit the Exuberant Ctags web site:
+
+ http://ctags.sourceforge.net
+
+
+Which brings us to the most obvious question:
+
+ Q: Why is it called "Exuberant" ctags?
+ A: Because one of the meanings of the word is:
+
+ exuberant : produced in extreme abundance : PLENTIFUL syn see PROFUSE
+
+Compare the tag file produced by Exuberant Ctags with that produced by any
+other ctags and you will see how appropriate the name is.
+
+
+This source code is distributed according to the terms of the GNU General
+Public License. It is provided on an as-is basis and no responsibility is
+accepted for its failure to perform as expected. It is worth at least as
+much as you paid for it!
+
+Exuberant Ctags was originally derived from and inspired by the ctags
+program by Steve Kirkendall (kirkenda@cs.pdx.edu) that comes with the Elvis
+vi clone (though almost none of the original code remains). This, too, is
+freely available.
+
+Please report any problems you find. The two problems I expect to be most
+likely are either a tag which you expected but is missing, or a tag created
+in error (shouldn't really be a tag). Please include a sample of code (the
+definition) for the object which misbehaves.
+
+--
+vim:tw=76:sw=4:et:
View
BIN  Packages/CTags/ctags58/ctags.exe
Binary file not shown
View
2,087 Packages/CTags/ctags58/ctags.html
@@ -0,0 +1,2087 @@
+<!-- Creator : groff version 1.19.2 -->
+<!-- CreationDate: Thu Jul 9 17:03:58 2009 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta name="generator" content="groff -Thtml, see www.gnu.org">
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<meta name="Content-Style" content="text/css">
+<style type="text/css">
+ p { margin-top: 0; margin-bottom: 0; }
+ pre { margin-top: 0; margin-bottom: 0; }
+ table { margin-top: 0; margin-bottom: 0; }
+</style>
+<title>CTAGS</title>
+
+</head>
+<body>
+
+<h1 align=center>CTAGS</h1>
+
+<a href="#NAME">NAME</a><br>
+<a href="#SYNOPSIS">SYNOPSIS</a><br>
+<a href="#DESCRIPTION">DESCRIPTION</a><br>
+<a href="#SOURCE FILES">SOURCE FILES</a><br>
+<a href="#OPTIONS">OPTIONS</a><br>
+<a href="#OPERATIONAL DETAILS">OPERATIONAL DETAILS</a><br>
+<a href="#TAG FILE FORMAT">TAG FILE FORMAT</a><br>
+<a href="#HOW TO USE WITH VI">HOW TO USE WITH VI</a><br>
+<a href="#HOW TO USE WITH GNU EMACS">HOW TO USE WITH GNU EMACS</a><br>
+<a href="#HOW TO USE WITH NEDIT">HOW TO USE WITH NEDIT</a><br>
+<a href="#CAVEATS">CAVEATS</a><br>
+<a href="#BUGS">BUGS</a><br>
+<a href="#ENVIRONMENT VARIABLES">ENVIRONMENT VARIABLES</a><br>
+<a href="#FILES">FILES</a><br>
+<a href="#SEE ALSO">SEE ALSO</a><br>
+<a href="#AUTHOR">AUTHOR</a><br>
+<a href="#MOTIVATION">MOTIVATION</a><br>
+<a href="#CREDITS">CREDITS</a><br>
+
+<hr>
+
+
+<a name="NAME"></a>
+<h2>NAME</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">ctags &minus;
+Generate tag files for source code</p>
+
+<a name="SYNOPSIS"></a>
+<h2>SYNOPSIS</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>ctags</b>
+[<b>options</b>] [<i>file(s)</i>] <b><br>
+etags</b> [<b>options</b>] [<i>file(s)</i>]</p>
+
+<a name="DESCRIPTION"></a>
+<h2>DESCRIPTION</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">The
+<b>ctags</b> and <b>etags</b> programs (hereinafter
+collectively referred to as <b>ctags</b>, except where
+distinguished) generate an index (or &quot;tag&quot;) file
+for a variety of language objects found in <i>file(s)</i>.
+This tag file allows these items to be quickly and easily
+located by a text editor or other utility. A &quot;tag&quot;
+signifies a language object for which an index entry is
+available (or, alternatively, the index entry created for
+that object).</p>
+
+<p style="margin-left:11%; margin-top: 1em">Alternatively,
+<b>ctags</b> can generate a cross reference file which
+lists, in human readable form, information about the various
+source objects found in a set of language files.</p>
+
+<p style="margin-left:11%; margin-top: 1em">Tag index files
+are supported by numerous editors, which allow the user to
+locate the object associated with a name appearing in a
+source file and jump to the file and line which defines the
+name. Those known about at the time of this release are:</p>
+
+<p style="margin-left:17%; margin-top: 1em"><b>Vi</b>(1)
+and its derivatives (e.g. Elvis, Vim, Vile, Lemmy),
+<b>CRiSP</b>, <b>Emacs</b>, <b>FTE</b> (Folding Text
+Editor), <b>JED</b>, <b>jEdit</b>, <b>Mined</b>,
+<b>NEdit</b> (Nirvana Edit), <b>TSE</b> (The SemWare
+Editor), <b>UltraEdit</b>, <b>WorkSpace</b>, <b>X2</b>,
+<b>Zeus</b></p>
+
+<p style="margin-left:11%; margin-top: 1em"><b>Ctags</b> is
+capable of generating different kinds of tags for each of
+many different languages. For a complete list of supported
+languages, the names by which they are recognized, and the
+kinds of tags which are generated for each, see the
+<b>&minus;&minus;list&minus;languages</b> and
+<b>&minus;&minus;list&minus;kinds</b> options.</p>
+
+<a name="SOURCE FILES"></a>
+<h2>SOURCE FILES</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">Unless the
+<b>&minus;&minus;language&minus;force</b> option is
+specified, the language of each source file is automatically
+selected based upon a mapping of file names to languages.
+The mappings in effect for each language may be display
+using the <b>&minus;&minus;list&minus;maps</b> option and
+may be changed using the <b>&minus;&minus;langmap</b>
+option. On platforms which support it, if the name of a file
+is not mapped to a language and the file is executable, the
+first line of the file is checked to see if the file is a
+&quot;#!&quot; script for a recognized language.</p>
+
+<p style="margin-left:11%; margin-top: 1em">By default, all
+other files names are ignored. This permits running
+<b>ctags</b> on all files in either a single directory (e.g.
+&quot;ctags *&quot;), or on all files in an entire source
+directory tree (e.g. &quot;ctags &minus;R&quot;), since only
+those files whose names are mapped to languages will be
+scanned.</p>
+
+<p style="margin-left:11%; margin-top: 1em">[The reason
+that .h extensions are mapped to C++ files rather than C
+files is because it is common to use .h extensions in C++,
+and no harm results in treating them as C++ files.]</p>
+
+<a name="OPTIONS"></a>
+<h2>OPTIONS</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">Despite the
+wealth of available options, defaults are set so that
+<b>ctags</b> is most commonly executed without any options
+(e.g. &quot;ctags *&quot;, or &quot;ctags &minus;R&quot;),
+which will create a tag file in the current directory for
+all recognized source files. The options described below are
+provided merely to allow custom tailoring to meet special
+needs.</p>
+
+<p style="margin-left:11%; margin-top: 1em">Note that
+spaces separating the single-letter options from their
+parameters are optional.</p>
+
+<p style="margin-left:11%; margin-top: 1em">Note also that
+the boolean parameters to the long form options (those
+beginning with &quot;&minus;&minus;&quot; and that take a
+&quot;<i>[=yes</i>|<i>no]</i>&quot; parameter) may be
+omitted, in which case &quot;<b>=</b><i>yes</i>&quot; is
+implied. (e.g. <b>&minus;&minus;sort</b> is equivalent to
+<b>&minus;&minus;sort</b>=<i>yes</i>). Note further that
+&quot;=<i>1</i>&quot; and &quot;=<i>on</i>&quot; are
+considered synonyms for &quot;=<i>yes</i>&quot;, and that
+&quot;=<i>0</i>&quot; and &quot;=<i>off</i>&quot; are
+considered synonyms for &quot;=<i>no</i>&quot;.</p>
+
+<p style="margin-left:11%; margin-top: 1em">Some options
+are either ignored or useful only when used while running in
+etags mode (see <b>&minus;e</b> option). Such options will
+be noted.</p>
+
+<p style="margin-left:11%; margin-top: 1em">Most options
+may appear anywhere on the command line, affecting only
+those files which follow the option. A few options, however,
+must appear before the first file name and will be noted as
+such.</p>
+
+<p style="margin-left:11%; margin-top: 1em">Options taking
+language names will accept those names in either upper or
+lower case. See the
+<b>&minus;&minus;list&minus;languages</b> option for a
+complete list of the built-in language names.</p>
+
+<table width="100%" border=0 rules="none" frame="void"
+ cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="3%">
+
+
+
+<p style="margin-top: 1em" valign="top"><b>&minus;a</b></p> </td>
+<td width="4%"></td>
+<td width="82%">
+
+
+<p style="margin-top: 1em" valign="top">Equivalent to
+<b>&minus;&minus;append</b>.</p> </td>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="3%">
+
+
+<p><b>&minus;B</b></p></td>
+<td width="4%"></td>
+<td width="82%">
+
+
+<p>Use backward searching patterns (e.g. ?pattern?).
+[Ignored in etags mode]</p></td>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="3%">
+
+
+<p><b>&minus;e</b></p></td>
+<td width="4%"></td>
+<td width="82%">
+
+
+<p>Enable etags mode, which will create a tag file for use
+with the Emacs editor. Alternatively, if <b>ctags</b> is
+invoked by a name containing the string &quot;etags&quot;
+(either by renaming, or creating a link to, the executable),
+etags mode will be enabled. This option must appear before
+the first file name.</p></td>
+</table>
+
+<p style="margin-left:11%;"><b>&minus;f</b>
+<i>tagfile</i></p>
+
+<p style="margin-left:18%;">Use the name specified by
+<i>tagfile</i> for the tag file (default is
+&quot;tags&quot;, or &quot;TAGS&quot; when running in etags
+mode). If <i>tagfile</i> is specified as
+&quot;&minus;&quot;, then the tag file is written to
+standard output instead. <b>Ctags</b> will stubbornly refuse
+to take orders if <i>tagfile</i> exists and its first line
+contains something other than a valid tags line. This will
+save your neck if you mistakenly type &quot;ctags &minus;f
+*.c&quot;, which would otherwise overwrite your first C file
+with the tags generated by the rest! It will also refuse to
+accept a multi-character file name which begins with a
+&rsquo;&minus;&rsquo; (dash) character, since this most
+likely means that you left out the tag file name and this
+option tried to grab the next option as the file name. If
+you really want to name your output tag file
+&quot;&minus;ugly&quot;, specify it as
+&quot;./&minus;ugly&quot;. This option must appear before
+the first file name. If this option is specified more than
+once, only the last will apply.</p>
+
+<table width="100%" border=0 rules="none" frame="void"
+ cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="3%">
+
+
+
+<p style="margin-top: 1em" valign="top"><b>&minus;F</b></p> </td>
+<td width="4%"></td>
+<td width="82%">
+
+
+<p style="margin-top: 1em" valign="top">Use forward
+searching patterns (e.g. /pattern/) (default). [Ignored in
+etags mode]</p></td>
+</table>
+
+<p style="margin-left:11%;"><b>&minus;h</b> <i>list</i></p>
+
+<p style="margin-left:18%;">Specifies a list of file
+extensions, separated by periods, which are to be
+interpreted as include (or header) files. To indicate files
+having no extension, use a period not followed by a
+non-period character (e.g. &quot;.&quot;, &quot;..x&quot;,
+&quot;.x.&quot;). This option only affects how the scoping
+of a particular kinds of tags is interpreted (i.e. whether
+or not they are considered as globally visible or visible
+only within the file in which they are defined); it does not
+map the extension to any particular language. Any tag which
+is located in a non-include file and cannot be seen (e.g.
+linked to) from another file is considered to have
+file-limited (e.g. static) scope. No kind of tag appearing
+in an include file will be considered to have file-limited
+scope. If the first character in the list is a plus sign,
+then the extensions in the list will be appended to the
+current list; otherwise, the list will replace the current
+list. See, also, the <b>&minus;&minus;file&minus;scope</b>
+option. The default list is
+&quot;.h.H.hh.hpp.hxx.h++.inc.def&quot;. To restore the
+default list, specify <b>&minus;h</b> <i>default</i>. Note
+that if an extension supplied to this option is not already
+mapped to a particular language (see <b>SOURCE FILES</b>,
+above), you will also need to use either the
+<b>&minus;&minus;langmap</b> or
+<b>&minus;&minus;language&minus;force</b> option.</p>
+
+<p style="margin-left:11%;"><b>&minus;I</b>
+<i>identifier&minus;list</i></p>
+
+<p style="margin-left:18%;">Specifies a list of identifiers
+which are to be specially handled while parsing C and C++
+source files. This option is specifically provided to handle
+special cases arising through the use of preprocessor
+macros. When the identifiers listed are simple identifiers,
+these identifiers will be ignored during parsing of the
+source files. If an identifier is suffixed with a
+&rsquo;+&rsquo; character, <b>ctags</b> will also ignore any
+parenthesis-enclosed argument list which may immediately
+follow the identifier in the source files. If two
+identifiers are separated with the &rsquo;=&rsquo;
+character, the first identifiers is replaced by the second
+identifiers for parsing purposes. The list of identifiers
+may be supplied directly on the command line or read in from
+a separate file. If the first character of
+<i>identifier&minus;list</i> is &rsquo;@&rsquo;,
+&rsquo;.&rsquo; or a pathname separator (&rsquo;/&rsquo; or
+&rsquo;\&rsquo;), or the first two characters specify a
+drive letter (e.g. &quot;C:&quot;), the parameter
+<i>identifier&minus;list</i> will be interpreted as a
+filename from which to read a list of identifiers, one per
+input line. Otherwise, <i>identifier&minus;list</i> is a
+list of identifiers (or identifier pairs) to be specially
+handled, each delimited by a either a comma or by white
+space (in which case the list should be quoted to keep the
+entire list as one command line argument). Multiple
+<b>&minus;I</b> options may be supplied. To clear the list
+of ignore identifiers, supply a single dash
+(&quot;&minus;&quot;) for <i>identifier&minus;list</i>.</p>
+
+<p style="margin-left:18%; margin-top: 1em">This feature is
+useful when preprocessor macros are used in such a way that
+they cause syntactic confusion due to their presence.
+Indeed, this is the best way of working around a number of
+problems caused by the presence of syntax-busting macros in
+source files (see <b>CAVEATS</b>, below). Some examples will
+illustrate this point.</p>
+
+<p style="margin-left:23%; margin-top: 1em">int foo
+ARGDECL4(void *, ptr, long int, nbytes)</p>
+
+<p style="margin-left:18%; margin-top: 1em">In the above
+example, the macro &quot;ARGDECL4&quot; would be mistakenly
+interpreted to be the name of the function instead of the
+correct name of &quot;foo&quot;. Specifying <b>&minus;I</b>
+<i>ARGDECL4</i> results in the correct behavior.</p>
+
+<p style="margin-left:23%; margin-top: 1em">/* creates an
+RCS version string in module */ <br>
+MODULE_VERSION(&quot;$Revision: 690 $&quot;)</p>
+
+<p style="margin-left:18%; margin-top: 1em">In the above
+example the macro invocation looks too much like a function
+definition because it is not followed by a semicolon
+(indeed, it could even be followed by a global variable
+definition that would look much like a K&amp;R style
+function parameter declaration). In fact, this seeming
+function definition could possibly even cause the rest of
+the file to be skipped over while trying to complete the
+definition. Specifying <b>&minus;I</b>
+<i>MODULE_VERSION+</i> would avoid such a problem.</p>
+
+<p style="margin-left:23%; margin-top: 1em">CLASS Example {
+<br>
+// your content here <br>
+};</p>
+
+<p style="margin-left:18%; margin-top: 1em">The example
+above uses &quot;CLASS&quot; as a preprocessor macro which
+expands to something different for each platform. For
+instance CLASS may be defined as &quot;class
+__declspec(dllexport)&quot; on Win32 platforms and simply
+&quot;class&quot; on UNIX. Normally, the absence of the C++
+keyword &quot;class&quot; would cause the source file to be
+incorrectly parsed. Correct behavior can be restored by
+specifying <b>&minus;I</b> <i>CLASS=class</i>.</p>
+
+<p style="margin-left:11%;"><b>&minus;L</b> <i>file</i></p>
+
+<p style="margin-left:18%;">Read from <i>file</i> a list of
+file names for which tags should be generated. If
+<i>file</i> is specified as &quot;&minus;&quot;, then file
+names are read from standard input. File names read using
+this option are processed following file names appearing on
+the command line. Options are also accepted in this input.
+If this option is specified more than once, only the last
+will apply. <b>Note:</b> <i>file</i> is read in
+line-oriented mode, where a new line is the only delimiter
+and non-trailing white space is considered significant, in
+order that file names containing spaces may be supplied
+(however, trailing white space is stripped from lines); this
+can affect how options are parsed if included in the
+input.</p>
+
+<table width="100%" border=0 rules="none" frame="void"
+ cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="3%">
+
+
+
+<p style="margin-top: 1em" valign="top"><b>&minus;n</b></p> </td>
+<td width="4%"></td>
+<td width="47%">
+
+
+<p style="margin-top: 1em" valign="top">Equivalent to
+<b>&minus;&minus;excmd</b>=<i>number</i>.</p> </td>
+<td width="35%">
+</td>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="3%">
+
+
+<p><b>&minus;N</b></p></td>
+<td width="4%"></td>
+<td width="47%">
+
+
+<p>Equivalent to
+<b>&minus;&minus;excmd</b>=<i>pattern</i>.</p> </td>
+<td width="35%">
+</td>
+</table>
+
+<p style="margin-left:11%;"><b>&minus;o</b>
+<i>tagfile</i></p>
+
+<p style="margin-left:18%;">Equivalent to <b>&minus;f</b>
+<i>tagfile</i>.</p>
+
+<table width="100%" border=0 rules="none" frame="void"
+ cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="3%">
+
+
+
+<p style="margin-top: 1em" valign="top"><b>&minus;R</b></p> </td>
+<td width="4%"></td>
+<td width="82%">
+
+
+<p style="margin-top: 1em" valign="top">Equivalent to
+<b>&minus;&minus;recurse</b>.</p> </td>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="3%">
+
+
+<p><b>&minus;u</b></p></td>
+<td width="4%"></td>
+<td width="82%">
+
+
+<p>Equivalent to <b>&minus;&minus;sort</b>=<i>no</i> (i.e.
+&quot;unsorted&quot;).</p> </td>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="3%">
+
+
+<p><b>&minus;V</b></p></td>
+<td width="4%"></td>
+<td width="82%">
+
+
+<p>Equivalent to <b>&minus;&minus;verbose</b>.</p></td>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="3%">
+
+
+<p><b>&minus;w</b></p></td>
+<td width="4%"></td>
+<td width="82%">
+
+
+<p>This option is silently ignored for
+backward-compatibility with the ctags of SVR4 Unix.</p></td>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="3%">
+
+
+<p><b>&minus;x</b></p></td>
+<td width="4%"></td>
+<td width="82%">
+
+
+<p>Print a tabular, human-readable cross reference (xref)
+file to standard output instead of generating a tag file.
+The information contained in the output includes: the tag
+name; the kind of tag; the line number, file name, and
+source line (with extra white space condensed) of the file
+which defines the tag. No tag file is written and all
+options affecting tag file output will be ignored. Example
+applications for this feature are generating a listing of
+all functions located in a source file (e.g. <b>ctags
+&minus;x &minus;&minus;c&minus;kinds</b>=<i>f file</i>), or
+generating a list of all externally visible global variables
+located in a source file (e.g. <b>ctags &minus;x
+&minus;&minus;c&minus;kinds</b>=<i>v</i>
+<b>&minus;&minus;file&minus;scope</b>=<i>no file</i>). This
+option must appear before the first file name.</p></td>
+</table>
+
+
+<p style="margin-left:11%;"><b>&minus;&minus;append</b>[=<i>yes</i>|<i>no</i>]</p>
+
+<p style="margin-left:18%;">Indicates whether tags
+generated from the specified files should be appended to
+those already present in the tag file or should replace
+them. This option is off by default. This option must appear
+before the first file name.</p>
+
+
+<p style="margin-left:11%;"><b>&minus;&minus;etags&minus;include</b>=<i>file</i></p>
+
+<p style="margin-left:18%;">Include a reference to
+<i>file</i> in the tag file. This option may be specified as
+many times as desired. This supports Emacs&rsquo; capability
+to use a tag file which &quot;includes&quot; other tag
+files. [Available only in etags mode]</p>
+
+
+<p style="margin-left:11%;"><b>&minus;&minus;exclude</b>=[<i>pattern</i>]</p>
+
+<p style="margin-left:18%;">Add <i>pattern</i> to a list of
+excluded files and directories. This option may be specified
+as many times as desired. For each file name considered by
+<b>ctags</b>, each <i>pattern</i> specified using this
+option will be compared against both the complete path (e.g.
+some/path/base.ext) and the base name (e.g. base.ext) of the
+file, thus allowing patterns which match a given file name
+irrespective of its path, or match only a specific path. If
+appropriate support is available from the runtime library of
+your C compiler, then <i>pattern</i> may contain the usual
+shell wildcards (not regular expressions) common on Unix (be
+sure to quote the option parameter to protect the wildcards
+from being expanded by the shell before being passed to
+<b>ctags</b>; also be aware that wildcards can match the
+slash character, &rsquo;/&rsquo;). You can determine if
+shell wildcards are available on your platform by examining
+the output of the <b>&minus;&minus;version</b> option, which
+will include &quot;+wildcards&quot; in the compiled feature
+list; otherwise, <i>pattern</i> is matched against file
+names using a simple textual comparison.</p>
+
+<p style="margin-left:18%; margin-top: 1em">If
+<i>pattern</i> begins with the character &rsquo;@&rsquo;,
+then the rest of the string is interpreted as a file name
+from which to read exclusion patterns, one per line. If
+<i>pattern</i> is empty, the list of excluded patterns is
+cleared. Note that at program startup, the default exclude
+list contains &quot;EIFGEN&quot;, &quot;SCCS&quot;,
+&quot;RCS&quot;, and &quot;CVS&quot;, which are names of
+directories for which it is generally not desirable to
+descend while processing the <b>&minus;&minus;recurse</b>
+option.</p>
+
+
+<p style="margin-left:11%;"><b>&minus;&minus;excmd</b>=<i>type</i></p>
+
+<p style="margin-left:18%;">Determines the type of EX
+command used to locate tags in the source file. [Ignored in
+etags mode]</p>
+
+<p style="margin-left:18%; margin-top: 1em">The valid
+values for <i>type</i> (either the entire word or the first
+letter is accepted) are:</p>
+
+<table width="100%" border=0 rules="none" frame="void"
+ cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="18%"></td>
+<td width="10%">
+
+
+<p style="margin-top: 1em" valign="top"><i>number</i></p></td>
+<td width="4%"></td>
+<td width="68%">
+
+
+<p style="margin-top: 1em" valign="top">Use only line
+numbers in the tag file for locating tags. This has four
+advantages:</p> </td>
+</table>
+
+<table width="100%" border=0 rules="none" frame="void"
+ cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="32%"></td>
+<td width="3%">
+
+
+<p valign="top">1.</p></td>
+<td width="3%"></td>
+<td width="62%">
+
+
+<p valign="top">Significantly reduces the size of the
+resulting tag file.</p></td>
+<tr valign="top" align="left">
+<td width="32%"></td>
+<td width="3%">
+
+
+<p valign="top">2.</p></td>
+<td width="3%"></td>
+<td width="62%">
+
+
+<p valign="top">Eliminates failures to find tags because
+the line defining the tag has changed, causing the pattern
+match to fail (note that some editors, such as <b>vim</b>,
+are able to recover in many such instances).</p></td>
+<tr valign="top" align="left">
+<td width="32%"></td>
+<td width="3%">
+
+
+<p valign="top">3.</p></td>
+<td width="3%"></td>
+<td width="62%">
+
+
+<p valign="top">Eliminates finding identical matching, but
+incorrect, source lines (see <b>BUGS</b>, below).</p></td>
+<tr valign="top" align="left">
+<td width="32%"></td>
+<td width="3%">
+
+
+<p valign="top">4.</p></td>
+<td width="3%"></td>
+<td width="62%">
+
+
+<p valign="top">Retains separate entries in the tag file
+for lines which are identical in content. In <i>pattern</i>
+mode, duplicate entries are dropped because the search
+patterns they generate are identical, making the duplicate
+entries useless.</p></td>
+</table>
+
+<p style="margin-left:32%; margin-top: 1em">However, this
+option has one significant drawback: changes to the source
+files can cause the line numbers recorded in the tag file to
+no longer correspond to the lines in the source file,
+causing jumps to some tags to miss the target definition by
+one or more lines. Basically, this option is best used when
+the source code to which it is applied is not subject to
+change. Selecting this option type causes the following
+options to be ignored: <b>&minus;BF</b>.</p>
+
+<table width="100%" border=0 rules="none" frame="void"
+ cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="18%"></td>
+<td width="11%">
+
+
+<p style="margin-top: 1em" valign="top"><i>pattern</i></p></td>
+<td width="3%"></td>
+<td width="68%">
+
+
+<p style="margin-top: 1em" valign="top">Use only search
+patterns for all tags, rather than the line numbers usually
+used for macro definitions. This has the advantage of not
+referencing obsolete line numbers when lines have been added
+or removed since the tag file was generated.</p></td>
+<tr valign="top" align="left">
+<td width="18%"></td>
+<td width="11%">
+
+
+<p><i>mixed</i></p></td>
+<td width="3%"></td>
+<td width="68%">
+
+
+<p>In this mode, patterns are generally used with a few
+exceptions. For C, line numbers are used for macro
+definition tags. This was the default format generated by
+the original <b>ctags</b> and is, therefore, retained as the
+default for this option. For Fortran, line numbers are used
+for common blocks because their corresponding source lines
+are generally identical, making pattern searches useless for
+finding all matches.</p></td>
+</table>
+
+
+<p style="margin-left:11%;"><b>&minus;&minus;extra</b>=<i>[+|&minus;]flags</i></p>
+
+<p style="margin-left:18%;">Specifies whether to include
+extra tag entries for certain kinds of information. The
+parameter <i>flags</i> is a set of one-letter flags, each
+representing one kind of extra tag entry to include in the
+tag file. If <i>flags</i> is preceded by by either the
+&rsquo;+&rsquo; or &rsquo;&minus;&rsquo; character, the
+effect of each flag is added to, or removed from, those
+currently enabled; otherwise the flags replace any current
+settings. The meaning of each flag is as follows:</p>
+
+<table width="100%" border=0 rules="none" frame="void"
+ cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="23%"></td>
+<td width="2%">
+
+
+<p style="margin-top: 1em" valign="top"><i>f</i></p></td>
+<td width="4%"></td>
+<td width="71%">
+
+
+<p style="margin-top: 1em" valign="top">Include an entry
+for the base file name of every source file (e.g.
+&quot;example.c&quot;), which addresses the first line of
+the file.</p></td>
+<tr valign="top" align="left">
+<td width="23%"></td>
+<td width="2%">
+
+
+<p style="margin-top: 1em" valign="top"><i>q</i></p></td>
+<td width="4%"></td>
+<td width="71%">
+
+
+<p style="margin-top: 1em" valign="top">Include an extra
+class-qualified tag entry for each tag which is a member of
+a class (for languages for which this information is
+extracted; currently C++, Eiffel, and Java). The actual form
+of the qualified tag depends upon the language from which
+the tag was derived (using a form that is most natural for
+how qualified calls are specified in the language). For C++,
+it is in the form &quot;class::member&quot;; for Eiffel and
+Java, it is in the form &quot;class.member&quot;. This may
+allow easier location of a specific tags when multiple
+occurrences of a tag name occur in the tag file. Note,
+however, that this could potentially more than double the
+size of the tag file.</p></td>
+</table>
+
+
+<p style="margin-left:11%;"><b>&minus;&minus;fields</b>=<i>[+|&minus;]flags</i></p>
+
+<p style="margin-left:18%;">Specifies the available
+extension fields which are to be included in the entries of
+the tag file (see <b>TAG FILE FORMAT</b>, below, for more
+information). The parameter <i>flags</i> is a set of
+one-letter flags, each representing one type of extension
+field to include, with the following meanings (disabled by
+default unless indicated):</p>
+
+<table width="100%" border=0 rules="none" frame="void"
+ cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="23%"></td>
+<td width="2%">
+
+
+<p style="margin-top: 1em" valign="top"><i>a</i></p></td>
+<td width="4%"></td>
+<td width="71%">
+
+
+<p style="margin-top: 1em" valign="top">Access (or export)
+of class members</p></td>
+<tr valign="top" align="left">
+<td width="23%"></td>
+<td width="2%">
+
+
+<p valign="top"><i>f</i></p></td>
+<td width="4%"></td>
+<td width="71%">
+
+
+<p valign="top">File-restricted scoping [enabled]</p></td>
+<tr valign="top" align="left">
+<td width="23%"></td>
+<td width="2%">
+
+
+<p valign="top"><i>i</i></p></td>
+<td width="4%"></td>
+<td width="71%">
+
+
+<p valign="top">Inheritance information</p></td>
+<tr valign="top" align="left">
+<td width="23%"></td>
+<td width="2%">
+
+
+<p valign="top"><i>k</i></p></td>
+<td width="4%"></td>
+<td width="71%">
+
+
+<p valign="top">Kind of tag as a single letter
+[enabled]</p> </td>
+<tr valign="top" align="left">
+<td width="23%"></td>
+<td width="2%">
+
+
+<p valign="top"><i>K</i></p></td>
+<td width="4%"></td>
+<td width="71%">
+
+
+<p valign="top">Kind of tag as full name</p></td>
+<tr valign="top" align="left">
+<td width="23%"></td>
+<td width="2%">
+
+
+<p valign="top"><i>l</i></p></td>
+<td width="4%"></td>
+<td width="71%">
+
+
+<p valign="top">Language of source file containing tag</p></td>
+<tr valign="top" align="left">
+<td width="23%"></td>
+<td width="2%">
+
+
+<p valign="top"><i>m</i></p></td>
+<td width="4%"></td>
+<td width="71%">
+
+
+<p valign="top">Implementation information</p></td>
+<tr valign="top" align="left">
+<td width="23%"></td>
+<td width="2%">
+
+
+<p valign="top"><i>n</i></p></td>
+<td width="4%"></td>
+<td width="71%">
+
+
+<p valign="top">Line number of tag definition</p></td>
+<tr valign="top" align="left">
+<td width="23%"></td>
+<td width="2%">
+
+
+<p valign="top"><i>s</i></p></td>
+<td width="4%"></td>
+<td width="71%">
+
+
+<p valign="top">Scope of tag definition [enabled]</p></td>
+<tr valign="top" align="left">
+<td width="23%"></td>
+<td width="2%">
+
+
+<p valign="top"><i>S</i></p></td>
+<td width="4%"></td>
+<td width="71%">
+
+
+<p valign="top">Signature of routine (e.g. prototype or
+parameter list)</p></td>
+<tr valign="top" align="left">
+<td width="23%"></td>
+<td width="2%">
+
+
+<p valign="top"><i>z</i></p></td>
+<td width="4%"></td>
+<td width="71%">
+
+
+<p valign="top">Include the &quot;kind:&quot; key in kind
+field</p> </td>
+<tr valign="top" align="left">
+<td width="23%"></td>
+<td width="2%">
+
+
+<p valign="top"><i>t</i></p></td>
+<td width="4%"></td>
+<td width="71%">
+
+
+<p valign="top">Type and name of a variable or typedef as
+&quot;typeref:&quot; field [enabled]</p></td>
+</table>
+
+<p style="margin-left:18%; margin-top: 1em">Each letter or
+group of letters may be preceded by either &rsquo;+&rsquo;
+to add it to the default set, or &rsquo;&minus;&rsquo; to
+exclude it. In the absence of any preceding &rsquo;+&rsquo;
+or &rsquo;&minus;&rsquo; sign, only those kinds explicitly
+listed in <i>flags</i> will be included in the output (i.e.
+overriding the default set). This option is ignored if the
+option <b>&minus;&minus;format</b>=<i>1</i> has been
+specified. The default value of this option is
+<i>fkst</i>.</p>
+
+
+<p style="margin-left:11%;"><b>&minus;&minus;file&minus;scope</b>[=<i>yes</i>|<i>no</i>]</p>
+
+<p style="margin-left:18%;">Indicates whether tags scoped
+only for a single file (i.e. tags which cannot be seen
+outside of the file in which they are defined, such as
+&quot;static&quot; tags) should be included in the output.
+See, also, the <b>&minus;h</b> option. This option is
+enabled by default.</p>
+
+
+<p style="margin-left:11%;"><b>&minus;&minus;filter</b>[=<i>yes</i>|<i>no</i>]</p>
+
+<p style="margin-left:18%;">Causes <b>ctags</b> to behave
+as a filter, reading source file names from standard input
+and printing their tags to standard output on a file-by-file
+basis. If <b>&minus;&minus;sorted</b> is enabled, tags are
+sorted only within the source file in which they are
+defined. File names are read from standard input in
+line-oriented input mode (see note for <b>&minus;L</b>
+option) and only after file names listed on the command line
+or from any file supplied using the <b>&minus;L</b> option.
+When this option is enabled, the options <b>&minus;f</b>,
+<b>&minus;o</b>, and <b>&minus;&minus;totals</b> are
+ignored. This option is quite esoteric and is disabled by
+default. This option must appear before the first file
+name.</p>
+
+
+<p style="margin-left:11%;"><b>&minus;&minus;filter&minus;terminator</b>=<i>string</i></p>
+
+<p style="margin-left:18%;">Specifies a string to print to
+standard output following the tags for each file name parsed
+when the <b>&minus;&minus;filter</b> option is enabled. This
+may permit an application reading the output of ctags to
+determine when the output for each file is finished. Note
+that if the file name read is a directory and
+<b>&minus;&minus;recurse</b> is enabled, this string will be
+printed only one once at the end of all tags found for by
+descending the directory. This string will always be
+separated from the last tag line for the file by its
+terminating newline. This option is quite esoteric and is
+empty by default. This option must appear before the first
+file name.</p>
+
+
+<p style="margin-left:11%;"><b>&minus;&minus;format</b>=<i>level</i></p>
+
+<p style="margin-left:18%;">Change the format of the output
+tag file. Currently the only valid values for <i>level</i>
+are <i>1</i> or <i>2</i>. Level 1 specifies the original tag
+file format and level 2 specifies a new extended format
+containing extension fields (but in a manner which retains
+backward-compatibility with original <b>vi</b>(1)
+implementations). The default level is 2. This option must
+appear before the first file name. [Ignored in etags
+mode]</p>
+
+<p style="margin-left:11%;"><b>&minus;&minus;help</b></p>
+
+<p style="margin-left:18%;">Prints to standard output a
+detailed usage description, and then exits.</p>
+
+
+<p style="margin-left:11%;"><b>&minus;&minus;if0</b>[=<i>yes</i>|<i>no</i>]</p>
+
+<p style="margin-left:18%;">Indicates a preference as to
+whether code within an &quot;#if 0&quot; branch of a
+preprocessor conditional should be examined for non-macro
+tags (macro tags are always included). Because the intent of
+this construct is to disable code, the default value of this
+option is <i>no</i>. Note that this indicates a preference
+only and does not guarantee skipping code within an
+&quot;#if 0&quot; branch, since the fall-back algorithm used
+to generate tags when preprocessor conditionals are too
+complex follows all branches of a conditional. This option
+is disabled by default.</p>
+
+
+<p style="margin-left:11%;"><b>&minus;&minus;&lt;LANG&gt;&minus;kinds</b>=<i>[+|&minus;]kinds</i></p>
+
+<p style="margin-left:18%;">Specifies a list of
+language-specific kinds of tags (or kinds) to include in the
+output file for a particular language, where
+<b>&lt;LANG&gt;</b> is case-insensitive and is one of the
+built-in language names (see the
+<b>&minus;&minus;list&minus;languages</b> option for a
+complete list). The parameter <i>kinds</i> is a group of
+one-letter flags designating kinds of tags (particular to
+the language) to either include or exclude from the output.
+The specific sets of flags recognized for each language,
+their meanings and defaults may be list using the
+<b>&minus;&minus;list&minus;kinds</b> option. Each letter or
+group of letters may be preceded by either &rsquo;+&rsquo;
+to add it to, or &rsquo;&minus;&rsquo; to remove it from,
+the default set. In the absence of any preceding
+&rsquo;+&rsquo; or &rsquo;&minus;&rsquo; sign, only those
+kinds explicitly listed in <i>kinds</i> will be included in
+the output (i.e. overriding the default for the specified
+language).</p>
+
+<p style="margin-left:18%; margin-top: 1em">As an example
+for the C language, in order to add prototypes and external
+variable declarations to the default set of tag kinds, but
+exclude macros, use
+<b>&minus;&minus;c&minus;kinds</b>=<i>+px&minus;d</i>; to
+include only tags for functions, use
+<b>&minus;&minus;c&minus;kinds</b>=<i>f</i>.</p>
+
+
+<p style="margin-left:11%;"><b>&minus;&minus;langdef</b>=<i>name</i></p>
+
+<p style="margin-left:18%;">Defines a new user-defined
+language, <i>name</i>, to be parsed with regular
+expressions. Once defined, <i>name</i> may be used in other
+options taking language names. The typical use of this
+option is to first define the language, then map file names
+to it using <i>&minus;&minus;langmap</i>, then specify
+regular expressions using
+<i>&minus;&minus;regex&minus;&lt;LANG&gt;</i> to define how
+its tags are found.</p>
+
+
+<p style="margin-left:11%;"><b>&minus;&minus;langmap</b>=<i>map[,map[...]]</i></p>
+
+<p style="margin-left:18%;">Controls how file names are
+mapped to languages (see the
+<b>&minus;&minus;list&minus;maps</b> option). Each
+comma-separated <i>map</i> consists of the language name
+(either a built-in or user-defined language), a colon, and a
+list of file extensions and/or file name patterns. A file
+extension is specified by preceding the extension with a
+period (e.g. &quot;.c&quot;). A file name pattern is
+specified by enclosing the pattern in parentheses (e.g.
+&quot;([Mm]akefile)&quot;). If appropriate support is
+available from the runtime library of your C compiler, then
+the file name pattern may contain the usual shell wildcards
+common on Unix (be sure to quote the option parameter to
+protect the wildcards from being expanded by the shell
+before being passed to <b>ctags</b>). You can determine if
+shell wildcards are available on your platform by examining
+the output of the <b>&minus;&minus;version</b> option, which
+will include &quot;+wildcards&quot; in the compiled feature
+list; otherwise, the file name patterns are matched against
+file names using a simple textual comparison. When mapping a
+file extension, it will first be unmapped from any other
+languages.</p>
+
+<p style="margin-left:18%; margin-top: 1em">If the first
+character in a map is a plus sign, then the extensions and
+file name patterns in that map will be appended to the
+current map for that language; otherwise, the map will
+replace the current map. For example, to specify that only
+files with extensions of .c and .x are to be treated as C
+language files, use
+&quot;<b>&minus;&minus;langmap</b>=<i>c:.c.x</i>&quot;; to
+also add files with extensions of .j as Java language files,
+specify
+&quot;<b>&minus;&minus;langmap</b>=<i>c:.c.x,java:+.j</i>&quot;.
+To map makefiles (e.g. files named either
+&quot;Makefile&quot;, &quot;makefile&quot;, or having the
+extension &quot;.mak&quot;) to a language called
+&quot;make&quot;, specify
+&quot;<b>&minus;&minus;langmap</b>=<i>make:([Mm]akefile).mak</i>&quot;.
+To map files having no extension, specify a period not
+followed by a non-period character (e.g. &quot;.&quot;,
+&quot;..x&quot;, &quot;.x.&quot;). To clear the mapping for
+a particular language (thus inhibiting automatic generation
+of tags for that language), specify an empty extension list
+(e.g.
+&quot;<b>&minus;&minus;langmap</b>=<i>fortran:</i>&quot;).
+To restore the default language mappings for all a
+particular language, supply the keyword &quot;default&quot;
+for the mapping. To specify restore the default language
+mappings for all languages, specify
+&quot;<b>&minus;&minus;langmap</b>=<i>default</i>&quot;.
+Note that file extensions are tested before file name
+patterns when inferring the language of a file.</p>
+
+
+<p style="margin-left:11%;"><b>&minus;&minus;language&minus;force</b>=<i>language</i></p>
+
+<p style="margin-left:18%;">By default, <b>ctags</b>
+automatically selects the language of a source file,
+ignoring those files whose language cannot be determined
+(see <b>SOURCE FILES</b>, above). This option forces the
+specified <i>language</i> (case-insensitive; either built-in
+or user-defined) to be used for every supplied file instead
+of automatically selecting the language based upon its
+extension. In addition, the special value <i>auto</i>
+indicates that the language should be automatically selected
+(which effectively disables this option).</p>
+
+
+<p style="margin-left:11%;"><b>&minus;&minus;languages</b>=<i>[+|&minus;]list</i></p>
+
+<p style="margin-left:18%;">Specifies the languages for
+which tag generation is enabled, with <i>list</i> containing
+a comma-separated list of language names (case-insensitive;
+either built-in or user-defined). If the first language of
+<i>list</i> is not preceded by either a &rsquo;+&rsquo; or
+&rsquo;&minus;&rsquo;, the current list will be cleared
+before adding or removing the languages in <i>list</i>.
+Until a &rsquo;&minus;&rsquo; is encountered, each language
+in the list will be added to the current list. As either the
+&rsquo;+&rsquo; or &rsquo;&minus;&rsquo; is encountered in
+the list, the languages following it are added or removed
+from the current list, respectively. Thus, it becomes simple
+to replace the current list with a new one, or to add or
+remove languages from the current list. The actual list of
+files for which tags will be generated depends upon the
+language extension mapping in effect (see the
+<b>&minus;&minus;langmap</b> option). Note that all
+languages, including user-defined languages are enabled
+unless explicitly disabled using this option. Language names
+included in <i>list</i> may be any built-in language or one
+previously defined with <b>&minus;&minus;langdef</b>. The
+default is &quot;all&quot;, which is also accepted as a
+valid argument. See the
+<b>&minus;&minus;list&minus;languages</b> option for a
+complete list of the built-in language names.</p>
+
+
+<p style="margin-left:11%;"><b>&minus;&minus;license</b></p>
+
+<p style="margin-left:18%;">Prints a summary of the
+software license to standard output, and then exits.</p>
+
+
+<p style="margin-left:11%;"><b>&minus;&minus;line&minus;directives</b>[=<i>yes</i>|<i>no</i>]</p>
+
+<p style="margin-left:18%;">Specifies whether
+&quot;#line&quot; directives should be recognized. These are
+present in the output of preprocessors and contain the line
+number, and possibly the file name, of the original source
+file(s) from which the preprocessor output file was
+generated. When enabled, this option will cause <b>ctags</b>
+to generate tag entries marked with the file names and line