___________________________________
|      |  |  |     |  _  |     |  |
|  |___|  |  |  |  |    _|  |  |  |    GNU GLOBAL source code tagging system
|  |   |  |  |  |  |     |     |  |
|  ~~  |   ~~|     |  ~  |  |  |   ~~|          for all hackers.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 Copyright (c) 2000-2021 Tama Communications Corporation

 This file is free software; as a special exception the author gives
 unlimited permission to copy and/or distribute it, with or without
 modifications, as long as this notice is preserved.

 This program is distributed in the hope that it will be useful, but
 WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
 implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

		----------------------------------

GNU Global NEWS - User visible changes.
At least, you should search '[INCOMPATIBLE CHANGES]' for each version.

Version 6.6.12 - March 5 2024

[CHANGES]
global: Added new option 'limit' for the --completion command.
  If limit option is given, print up to the limit lines.
	$ global --completion=100 -P lib

[FIXED BUGS]
o global: The -c command with the --from-here option brings segmentation fault.
	$ global -c --from-here='158:libutil/find.c'
  Now it works (--from-here is ignored).

o htags: If the environment happens to be large, it fails with an obscure
  error message:
	$ htags ...
	htags: Negative exec line limit = -80951
  Now it mostly works since the limit has been loosened.

Version 6.6.11 - November 20 2023

[CHANGE IN SUPPORT STATUS]
Exuberant Ctags as a plug-in parser is no longer supported.
Please use Universal Ctags 6.0.0 or later instead. The same
applies to Pygments plug-in parser.

[FIXED BUGS]
o gtags('pygments-parser.la'): The following setting of Universal Ctags
  caused no tag output. Same result if the value is not 'no'.

        [$HOME/.config/conf.ctags]
        +---------------------------
        |--tag-relative=always

  Now it works.

Version 6.6.10 - May 9 2023

[INCOMPATIBLE CHANGES]
o configure: Auto-detection of python in the config stage is no longer done.
  '$datadir/gtags/script/pygments_parser.py' will have '#!/usr/bin/env python' by default.
  You can specify the path using the following option:
  (Assuming python is located in /usr/local3/bin)

	./configure --with-python-interpreter=/usr/local3/bin/python

o configure: The --with-pread-pwrite option no longer exists.
  Now configure automatically uses pread(2) and pwrite(2) if they are available.

[FIXED BUGS]
o gtags(C++ parser): did not recognize 'namespace name1::name2::name3' syntax.
  Now it picks up 'name2' and 'name3' in addition to 'name1' in the next example:

	namespace name1::name2::name3 { /*...*/ }

o gtags('universal-ctags.la'): The following setting of Universal Ctags caused no tag output.
  Same result if the value is not 'no'.

	[$HOME/.config/conf.ctags]
	+---------------------------
	|--tag-relative=always

  Now it works. This fix applies to 'exuberant-ctags.la' as well.

Version 6.6.9 - December 12 2022

[FIXED BUGS]
o gtags(C++ parser): did not recognize 'final' keyword. Now it works.
o Fixed a couple of bugs in MinGW.
- Fixed unknown type sigset_t error in MinGW.
- Fixed pointer to integer cast warnings in MinGW.

Version 6.6.8 - December 17 2021

[CHANGES]
o gtags: Now you can write comments in '.notfunction' file.
  Lines starting with ';' are comment lines.

	[.notfunction]
	+---------------------------
	|;
	|; This is a comment.
	|;
	|main

o configure: Now you can build Global with external SQLite3 library.
  --with-sqlite3[=dir]    By default, the embedded version is used.

[NEW DOCUMENT]
o plugin-factory/PLUGIN_HOWTO.universal-ctags:
  Added a howto document: 'How to get Universal Ctags to handle references'

[FIXED BUGS]
o global: The --print0 option was ignored when using the --completion command.
  Now it works.
o gtags: The --file option could cause segmentation fault.
  Now it works.

Version 6.6.7 - July 1 2021

[FIXED BUGS]
o Pygments-enabled gtags failed to start. Now it works.
  (Changed the shebang of pygments_parser.py.in from '#!/usr/bin/env python'
  to '#!@PYTHON@'.)

Version 6.6.6 - May 2 2021

[CHANGES]
New facilities:
o gtags.el: Added native support for TRAMP.
  'global-client' command is no longer needed to use TRAMP.

  Required:
    GNU Emacs version 25.1 or later (Tested on version 26).
    If you don't use 'gtags-visit-rootdir' then version 22 is good enough.
    You also need to install Global at the remote site.
  Limitations: gtags-path-style: 'root is automatically converted to 'relative.

o gtags.el: New custom variable 'gtags-path-order'.
  value: 'alphabet (default) or 'nearness.

[DEPRECATED]
o gtags: environment variable GTAGSFORCECPP is deprecated.

[FIXED BUGS]
o configure: configure script failed with an error 'realpath not found.' on MacOS 11.1.
  Now, it works.
o gtags: If GTAGSFORCECPP was defined and --explain was used and the first file is a
  '*.h', gtags crashed. Now it works.

Version 6.6.5 - September 3 2020

[INCOMPATIBLE CHANGES]
o gtags: Now gtags_hook is not executed when the following options are specified:
  --version, --help, --config, --dump.
  This change might be considered a bug fix.

[CHANGES]
New facilities:
o gtags: Added new option: -C (--directory)
  Change the directory before doing all the work including parameter analysis.

[DEPRECATED]
o gtags: the built-in C++ parser is deprecated, since it is not well maintained.
  Currently, it is hard to say that Global supports C++ language.

Version 6.6.4 - December 24 2019

[INCOMPATIBLE CHANGES]
o htags: Now the -g, --suggest and --suggest2 option does not make ID
  database, since mkid(1) often fails on some systems. If mkid works
  in your system, you can use ID database by the following command line:
	$ gtags -I		# create ID database explicitly
	$ htags --suggest2

[CHANGES]
New facilities:
o gtags.vim: New custom variable 'Gtags_Emacs_Like_Mode'.
  If this variable is 1, use the tag files of the project to which the current
  file belongs. By default, use the tag files of the current project.

[FIXED BUGS]
o gtags.vim: Gtags command discarded all unsaved changes. Now it brings
  the following error: E37: No write since last change (add ! to override).
o gtags: Now gtags skips java annotations (@...[(...)]).

Version 6.6.3 - December 17 2018

[CHANGES]
New facilities:
o gtags: New --skip-symlink option.
  This option skips symbolic links.
  --skip-symlink[=type]
  If type is 'f' then skip only symbolic links for file, else if 'd' then skip
  only symbolic links for directory. The default value is 'a' (all symbolic links).
o gtags-cscope: 'Find assignments to this symbol:' was implemented.
  In vim, you can use it as ':cs find a <pattern>' or ':cs find 9 <pattern>'.
o gtags-cscope.vim: the following key assignment was added.
	<C-\>a, <C-@>a, <C-@><C-@>a

[FIXED BUGS]
o pygments_parser.py.in: This plug-in parser failed with the handling of file names
  with mixed case on Windows. Now it works.
o gtags-cscope: Fixed a wrong description in the online manual.
  Find this function definition: -> Find this global definition:

Version 6.6.2 - February 9 2018

[INCOMPATIBLE CHANGES]
o gozilla: Deleted the following undocumented functions to reduce or eliminate
  possibility of future security risks. These were inherently unnecessary as
  source code tagging system.

  $HOME/.gozillarc
        Alias file. Please read the source code for details.
  BUGS
        Gozilla can accept not only source files but also text files,
        directories, HTML files and even URLs, because it is omnivorous.

[FIXED BUGS]
o geco.rc: gecoless always failed with a message 'geco: percol, peco or fzf is required.'
  Now, it works.
o gtags-cscope: did not accept function '9' in the line mode. This caused vim8 to hang.
  Now it accepts function '9' and reports an error message.

Version 6.6.1 - December 16 2017

[FIXED BUG]
o gozilla: A critical vulnerability (CVE-2017-17531) was found in a unknown
  function of gozilla(1). It allows remote attackers to execute arbitrary
  code via a crafted URL. All gozilla(1) before Global-6.6.1 have the vulnerability.
  Now it is fixed.

- What is the unknown function?
Gozilla accepts a URL as an argument, and invokes a web browser with the URL.
Though it is undocumented, it is implied in the online manual as follows:

> BUGS
>         Gozilla can accept not only source files but also text files,
>         directories, HTML files and even URLs, because it is omnivorous.

Version 6.6 - December 12 2017

[CHANGES]
New facilities:
o gtags: Added support for glob patterns in langmap variable in gtags.conf(5).
  Now, you can treat source files without extension like ctags(1).
  (e.g. :langmap=Make\:.mak.mk([Mm]akefile):)

Changed:
o gozilla: Changed the default browser from 'mozilla' to 'firefox'.
o gtags.conf.in: Updated to adapt to the latest ctags(s).
  Removed: common-ctags-maps
  Updated: exuberant-ctags, universal-ctags

[INCOMPATIBLE CHANGES]
o universal-ctags.la: The --extra option in Exuberant-ctags is renamed
  to --extras (plural) in Universal-ctags for making consistent with
  --kinds-<LANG> and --fields.

[FIXED BUGS]
o gtags: (parser error) picked up a typedef name as both of definition
  and reference. Now it works.
	Input:
	[a.h]
	typedef struct a A;

	$ global -x A
	A                   1 a.h              typedef struct a A;
	$ global -x A -r
	(global-6.5.7)
	A                   1 a.h              typedef struct a A;
	(global-6.6)
	no output

o global: the -i option does not work correctly in some conditions.
  Now it works.
o global: didn't accept pattern as a string literal with the --from-here
  option, even if the --literal option was specified. Now, global(1)
  accepts pattern as a string literal with the --literal option.
o libdb: there was 4 Gbyte limitation on the system where `off_t' is 64 bits
  and `long' is 32 bits. Now it is eliminated.
o libparser: php parser was not reset state for each source file.
  So, it was producing unintelligible results. Now it is fixed.
o gozilla: with wrong argument caused segmentation violation.
	$ gozilla -d
	Segmentation fault: 11
  Now it displays usage.

Version 6.5.7 - 15 May 2017

[CHANGES]
o global: Now global(1) accept a file as --nearness option.
  If it is a file, tags in the file are shown first.
o global: Added aliases for MAKEOBJDIR and MAKEOBJDIRPREFIX.
  GTAGSOBJDIR: alias for MAKEOBJDIR
  GTAGSOBJDIRPREFIX: alias for MAKEOBJDIRPREFIX
  These aliases are given higher priority than the originals.
o global: New command --print=<name>.
  <name> may be one of: root, dbpath or conf.
  This is a generic version of the -p (--print-dbpath) command.
	'global -p' is equal to 'global --print=dbpath'
	'global -pr' is equal to 'global --print=root'
o gtags: Updated the built-in PHP parser to support namespaces and traits,
  which were introduced in PHP5. The following keywords have been removed:
	- failure: not a keyword
	- header: normal built-in function
	- is_array: normal built-in function
	- is_set: typo -> isset
	- printf: normal built-in function
	- setcookie: normal built-in function
	- success: not a keyword

[FIXED BUGS]
o globash: Echo command with -n option didn't work on some OS. Now it works.
o global: The --nearness option without -x option brought segmentation fault.
	$ global --nearness=. main
	Segmentation fault: 11
  Now it works.
o global: --from-here with -i option did not ignore case of function name
  in the context. Now it works.
	Input:
	[main.c]
	1: main() {
	2:         func();
	3:         Func();
	4: }
	5: func() {}
	6: Func() {}

	$ global -xi --from-here=6:main.c func
	(global-6.5.6)
	Func                6 main.c           Func() {}
	func                5 main.c           func() {}
	(global-6.5.7)
	Func                3 main.c            Func();
	func                2 main.c            func();

[INCOMPATIBLE CHANGES]
o gtags.conf: Added new candidate path.
        (1) --gtagsconf file
        (2) $GTAGSCONF
        (3) [project root]/gtags.conf
        (4) [project root]/[objdir]/gtags.conf       <- [NEW]
        (5) $HOME/.globalrc
        (6) /etc/gtags.conf
        (7) [sysconfdir]/gtags.conf

        The default of [objdir] is 'obj'. You can change it by
        the environment variables (GTAGSOBJDIR or MAKEOBJDIR).

Version 6.5.6 - December 19 2016

[CHANGES]
New facilities:
o htags-server: New --retry[=n] option.
  If the port is already in use, retry n times with incrementing the port number.
  The default of n is 20.
o htags: Changed the format of function header (--show-position) to make copying
  text easier.
o geco.rc: Added 'fzf' as a selector candidate.
o gtags: New configuration variable 'gtags_hook'.
  gtags_hook=<command line>
	Specify a command line which should be executed at the beginning of gtags(1).
	Leading "./" in any path is always means the project root directory, since
	gtags(1) is always invoked there.
  GTAGS_COMMANDLINE environment variable (read only)
	You can get the effective command line of gtags(1) from the hook. It includes
	both $GTAGS_OPTIONS and real arguments.

   [Usage]
   You can update 'gtags.files' before gtags(1) read it.

	[gtags.conf]
	+----------------------------------------
	|...
	|:gtags_hook=find src lib -print >gtags.files:

   You can refer the effective arguments of gtags(1) from the hook using
   environment variable GTAGS_COMMANDLINE.

	[gtags.conf]
	+----------------------------------------
	|...
	|:gtags_hook=./gen.sh:\
	|:GTAGS_OPTIONS=-c:\

	[gen.sh]
	+----------------------------------------
	|#!/bin/sh
	|echo ">>> $GTAGS_COMMANDLINE"		# show effective command line

	$ gtags -O
	>>> gtags -c -O
	$ _

[INCOMPATIBLE CHANGES]
o htags: Now --cvsweb option always insert 'view=log' to the generated URLs.
  Because it seems to be almost always a desirable specification.

[FIXED BUGS]
o gtags: Gtags often aborts with a message "buffer overflow. strlimcpy" when
  it encounters a long token (> 152 bytes). Now gtags always ignores it with
  a message "symbol name is too long. (Ignored)".
o htags: Old packages included two CGI scripts (completion.cgi, global.cgi)
  generated in the release manager's machine by mistake. They have some literal
  path like '/opt/local/bin/perl' which works only with MacPorts.
  Now, they are generated in the target (your) machine.

Version 6.5.5 - Sep 21 2016

This is a bug fix release.

[FIXED BUGS]
o exuberant-ctags.la: The path name of ctags command couldn't changed.
  Now, it can be changed by configuration variable 'ctagscom'.
o Tag files got corrupted when the built-in C++ parser gave up parsing and aborted.
  Now, it is avoided.

o Some inappropriate error messages were changed.

  Error1: NULL file (file size == 0)

	$ cp /dev/null GTAGS
	$ global -x main

	(Global-6.5.4)	global: /tmp/test/GTAGS seems older format. Please remake tag files.
	(Global-6.5.5)	global: /tmp/test/GTAGS seems to be corrupted.

  Error2: Corrupted file

	$ echo aaa >GTAGS
	$ global -x main

	(Global-6.5.4)	global: GTAGS not found.
	(Global-6.5.5)	global: /tmp/test/GTAGS seems to be corrupted.

Version 6.5.4 - Mar 27 2016

This is a bug fix release.

[CHANGES]
Changed:
o gtags.conf: The entries which include '.xml' were commented out,
  because they require libxml.a. If you use them, please uncomment them.

[FIXED BUGS]
Serious bug:
o universal-ctags.la: Universal ctags plug-in parser did not work
  on almost files. Now it works.

	$ echo 'void a() {}' >a.inl
	$ echo 'void b() {}' >b.cpp
	$ gtags --gtagslabel=new-ctags
	$ global -x '.*'
	a                   1 a.inl            void a() {}
	(b.cpp was ignored.)

Version 6.5.3 - Mar 18 2016

[CHANGES]
New facilities:
o Added new plug-in parser 'universal-ctags.la'.
o gtags.conf:
  - Added new entry 'universal-ctags'.
  - Added new variable 'ctagscom'. You can overwrite the path of ctags(1)
    dynamically for exuberant-ctags.la, universal-ctags.la and pygments-parser.la.

Changed:
o gtags.conf: Added the following patterns to the skip list.
  '*.o,*.a,*.so,*.lo,*.zip,*.gz,*.bz2,*.xz,*.lzh,*.Z,*.tgz,*.min.js,*min.css'
o gtags: Added some explanations for the --explain option.

[FIXED BUGS]
o global: Global generated incorrect path with the --color option.
  Now, it works well.

        [bad case]
	+- GTAGS
	+- hi/
	    |- foo.cpp
	    +- what/

	$ cd hi/what
	$ global -P hi/foo.cpp --color
	foo.cpp         # It should be '../foo.cpp'.

o global: Global aborted in obstack_free() in some cases. Now it works well.
o htags: Htags ended abnormally when there is a file which includes single
  quote characters in its file name. Now, it works.

Version 6.5.2 - Dec 16 2015

[CHANGES]
New facilities:
o Improvements of gtags.conf
  - Including from another file: Label syntax is expanded. (:tc=label[@file]:)
  - Variable substitution: B shell like variable substitution is available.
  - Addition of variables: 'bindir', 'datadir', 'libdir' and 'localstatedir'.
    By default, these variables has a value given by the configure script.
  - gtags.conf(5): Online manual of the configuration file.
o global: Now the -N(--nearness) option also works with the -P and -g command
  as well as the tag search command.
o gtags.vim: New custom variable 'Gtags_Close_When_Single' (default 0).
  If this variable is set to 1, quickfix window is closed when single tag.

Changed:
o gtags-cscope: Title changed to reduce misunderstanding.
  Find locations calling this function: -> Find references of this function:

[FIXED BUGS]
o gtags.el: a strange error message in gtags-visit-rootdir was fixed.

	$ cp /dev/null main.c
	$ ls
	main.c
	$ emacs -f gtags-mode main.c
	[Emacs mini buffer]
	M-x gtags-visit-rootdir[ENTER]
	Visit root directory: /tmp/test/[ENTER]
	/tmp/test/main.c is not directory.      <= STRANGE ERROR

o gtags (C, C++): Gtags couldn't handle enums in the case that there are
  newlines between "enum" and " {". Now it can handle correctly.

	+-------------
	|typedef enum 
	|{
	|  E_FIRST = 1,
	|  E_SECOND
	|} FIRST_SECOND;
	+-------------
	$ global -x '.*'
	E_FIRST             3 test.h             E_FIRST = 1,
	FIRST_SECOND        5 test.h           } FIRST_SECOND;	<= E_SECOND not found
	$ _

	+-------------
	|enum
	|tag
	|{ ... };
	+-------------
	$ global -x '.*'
	$ _			<= tag not found

o gtags.conf: some part of a comment line (start with '#') was not skipped
  when the line is very large. Now it is skipped correctly.
o gtags: If the DLL path includes ':', loading failed. Now it works.

Version 6.5.1 - Sep 15 2015

[CHANGES]
New facilities:
o gtags(c, c++): New environment variable GTAGSFORCEENDBLOCK.
  If this variable is set, each '}' at the first column brings
  end of all blocks.
o gtags: New --skip-unreadable option.
  If this option is specified, gtags skips unreadable files
  instead of exiting the command.

[FIXED BUGS]
o gtags: There was a difference of interpretation of the langmap
  between gtags and ctags. Now there is no difference.

o gtags (C++): Gtags did not pick up 'my_type1' as a definition
  in the following example:
	[xxx.cpp]
	+------------------------
	|using my_type1 = double;
  Now it picks up the symbol as a definition.

o gtags (C++): gtags picked up 'DomainId_t' as a definition
        in the following example:
	[xxx.cc]
	+------------------------
        |typedef std::map<DomainId_t, int> map_t2;
  Now it does not pick up it as a definition.

o gtags (C, C++): Gtags did not pick up 'pr_debug' as a definition
  in the following example:
	[xxx.h]
	+------------------------
	|extern void dump_stack(void) __cold;
	|#define pr_debug() printk()
  Now it picks up it as a definition.

o gtags (PHP): Gtags did not treat back-quote correctly.
	[xxx.php]
	+------------------------
	|<?php `ls $echo ~/*`; ?>
  Now it works.

[INCOMPATIBLE CHANGES]
o gozilla: Now, gozilla invokes firefox as a generic browser, that is, using
  command line 'firefox url'. Because firefox have removed the -remote command
  since version 39.

Version 6.5 - June 10 2015

[CHANGES]
New facilities:
o global: New -N (--nearness=[start]) option.
        Nearness sort method is available for the output of tag search command.
	The result of nearness sort is concatenation of the followings ([1]-[n])
	in this order. The default of 'start' is the current directory.
        [1] Output of local search in the 'start' directory.
        [2] Output of local search in the parent directory except for [1].
        [3] Output of local search in the grandparent directory except for [1]-[2].
        (repeat until the project root directory)
        [n] Output of local search in the project root directory except for [1]-[n-1].
        In each directory, they are sorted by alphabetical order.
o global: Now the --literal option also works with the tag search command,
        -P command and -I command as well as the -g command.

[FIXED BUGS]
o htags: The -c and -x option of htags(1) were still available in the help
  message, even though they had actually been removed. Now, these options
  are removed completely.
o gtags (PHP): Against the following source code, gtags(1) aborted with a message
  'short of memory'. Now it works.
        [nullstring.php]
        +----------------
        |<?php
        |define('');
        |?>
        +----------------
o gtags (C++): Gtags(1) didn't recognize the shift operator. Now it works.
        [a.hh]
        +----------------
        |class const_mod<uint64_t(1) << 48>
        |{
        |};
        +----------------
        $ gtags
        gtags: failed to parse template [+1 ./a.hh].
o gtags (C, C++): Gtags(1) couldn't pick up 'E2' as a definition. Now it works.
        [test.c]
        +----------------
        |enum my_enum2
        |{
        |    E2
        |};
        +----------------

Version 6.4 - March 24 2015

[CHANGES]
New facilities:
o gtags: Now --sqlite3 option is supported formally. This option uses
  SQLite3 API instead of BSD/DB API for making tag files.
  To use this option, you need to invoke configure script with
  --with-sqlite3 in the build phase.

        [configuration phase]
        $ ./configure --with-sqlite3    # use sqlite3 API

        [execution phase]
        $ gtags --sqlite3               # make sqlite3 tag files

o gtags: --single-update option supports deletion of a file.
  Now the next command line works well.

	$ rm test.c
	$ gtags --single-update=test.c

o gtags: New --explain option. This option explains handling files.
  You can know the following information:
  - Skipped reason for each skipped files.
  - Used parser and its library path for each source file.

[FIXED BUGS]
o global: global(1) could not pick up source code from source files
  in library projects (GTAGSLLIBPATH) if their tag files are compact
  format. Now it works.

[INCOMPATIBLE CHANGES]
The following features of htags(1) were removed.
o The -c (--compact) option.
o The --system-cgi option.
o The --overwrite-key option.
o The -x (--xhtml[=version]) option.
  All files are 1.0.
o The following configuration variables:
  colorize-warned-line (substitute: --colorize-warned-line)
  gzipped_suffix (substitute: not available)
  htags_options (substitute: HTAGS_OPTIONS)
  ncol (substitute: -n, --line-number [n])
  normal_suffix (always '.html')
  no_order_list (substitute: --no-order-list)
  script_alias (substitute: not available)
  tabs (substitute: --tabs n)
  xhtml_version (always 1.0)

Version 6.3.4 - February 2 2015

[FIXED BUGS]
o global: Global(1) exited with a message "Abbrev character must be
  a lower alphabetic character ()" in some condition. Now it is fixed.
o gozilla/Makefile.am: Installation made a directory outside of the DESTDIR.
  Now it is fixed.
o gtags: The C++ parser picked up compiler specific macros as a class name.
  It is not desirable. Now it is fixed.

Version 6.3.3 - November 26 2014

[CHANGES]
New facilities:
o Pygments plug-in parser: Support python 3.
o gozilla: added support of OSX's default browser.
  Please set environment variable BROWSER to 'osx-default'.

	$ htags --suggest --map-file
	$ export BROWSER=osx-default
	$ gozilla +120 main.c	# shows line 120 in main.c
	$ gozilla -d main	# shows definitions of main()

o vim74-gtags-cscope.patch: New patch for vim + gtags-cscope to treat
  file names which include spaces correctly. Please see README.PATCHES.

Release for beta test:
o Added --sqlite3 option which uses SQLite3 API instead of BSD/DB API for
  making tag files.

[FIXED BUGS]
o gtags-cscope.vim: There was a calling to undefined function.
  Now it works.

Version 6.3.2 - September 4 2014

[CHANGES]
New facilities:
o Pygments plug-in parser by Yoshitaro MAKISE.
  By this parser, you can apply gtags(1) to wide variety of programming
  languages supported by Pygments. The method of plug-in is very simple.
  See 'plugin-factory/PLUGIN_HOWTO.pygments' for details.
  It should mention especially that Pygments plug-in parser can treat both 
  definitions and references using Exuberant Ctags together.

Version 6.3.1 - August 11 2014

[CHANGES]
New facilities:
o gtags.vim: New 'Gtagsa' (Gtags with append) command.
  This command appends tags to the current tag list.
  If you want to get a union of 'global -d foo' and
  'global -r foo' then please do as follows:

    :Gtags -d foo
    :Gtagsa -r foo

o geco.rc: New command (Bash function).
  You need bash, percol and less to use geco.

    $ source /usr/local/share/gtags/geco.rc
    $ geco --help       # show help
    $ geco mai[TAB]     # auto completion
              v
    $ geco main [ENTER]
    QUERY> init         # narrowing down
    (less's screen)
    :tag -r main        # tag jump again

    The same options are available on the both prompts:
    $ geco <options> arg
    :tag <options> arg

[INCOMPATIBLE CHANGES]
o global: The following configuration variables were removed
  since they will surely cause confusion:
  GTAGSROOT, GTAGSDBPATH
  These variables were added in Version 6.3.

Version 6.3 - June 9 2014

[CHANGES]
New facilities:
o htags-server: A private HTTP/CGI web server for a hyper-text
  generated by htags(1).
o gtags.conf: New project based configuration mechanism.
  You can make a configuration file for each project.
  This is Leo Liu's idea.
o gtags, htags: New environment variables which have default
  options for each command: GTAGS_OPTIONS, HTAGS_OPTIONS 
o global: Added support of GREP_COLORS environment variable.
o global: Added new options:
  -F (--first-match), -M (--match-case), -E (--extended-regexp)

[DEPRECATED FEATURES]
The following features of htags(1) are now deprecated.
They will be removed in the future.
o The -c (--compact) option.
o The --system-cgi option.
o The --overwrite-key option.
o The -x (--xhtml[=version]) option.
  All files will be 1.0.
o The following configuration variables:
  colorize-warned-line (substitute: --colorize-warned-line)
  gzipped_suffix
  htags_options (substitute: HTAGS_OPTIONS)
  ncol (substitute: -n, --line-number [n])
  normal_suffix (will be always '.html')
  no_order_list (substitute: --no-order-list)
  script_alias
  tabs (substitute: --tabs n)
  xhtml_version (will be always 1.0)

[FIXED BUGS]
o global: Highlight of symbols in library paths does not
  work. Now it works.
o htags: Htags with the --suggest option didn't find GTAGS
  in obj directories. Now it works.

Version 6.2.12 - March 31 2014

[CHANGES]
New facilities:
o global: New --color option. It use environment variable GREP_COLOR
  (default is red) to highlight matching string like grep (1).
  (--colour and GREP_COLORS are not supported this time)
  Please try the following command line:

  $ global --color=always -x main

[FIXED BUGS]
o global: A lack of initialization of data brought unexpected segmentation
  violation; it often occurred during execution of htags(1). Now it is fixed.
  This bug exists in the following version: 6.2.10, 6.2.11.

Version 6.2.11 - March 12 2014

[CHANGES]
New facilities:
o global: New -S (--scope) <directory> option. This option prints only tags
  which exist under <directory>. It is similar to the -l option, but different
  from it in that you need not change directory.
o gtags: Now, the skip list allows glob file patterns (*, ?, [...], [!...], [^...]).
o gtags.conf: Added the following glob patterns to the skip list:
  *.orig,*.rej,*.bak,*~,#*#,*.swp,*.tmp,*_flymake.*,*_flymake
o gtags: Now, the -I option supports file list (-f option or gtags.files).
  Instead, idutils 4.5 or later is required.

[FIXED BUGS]
o global: With combination of the --invert-match and --literal, it did not match
  the last line of files. Now it works.
o global: Literal search with the -i option printed an unmatched tag in a certain
  kind of case. Now it works.
o global: 'global -cI' without argument caused segmentation fault.
  Now it works.

Version 6.2.10 - January 16 2014

[CHANGES]
New facilities:
o gtags.el: New custom variables 'gtags-find-all-text-files'.

Optimization:
o global: Optimization of case-insensitive search like:
  $ global -xi strlen
  $ global -xi '^str'

[FIXED BUGS]
o global: Combination of the -v and -g option showed wrong matched
  number (always 0). Now it works.
o global: The --from-here option did not work with a path name
  which includes symbolic links. Now it works.
o global: The -I command failed when logical and physical path name
  of the current working directory were not identical.
  Now it works.
o htags: Htags couldn't find tag files in obj directories.
  Now it works.
o ctags-5.8.patch: This file was not included in old packages.
  Now it is included.

Version 6.2.9 - August 26 2013

[CHANGES]
New facilities:
o configure: New option --with-sitekeys-mode=MODE.

Changed:
o jquery.treeview.js: Removed effects on mouse over because they use time too much
  to build a tree. Now it works faster than previous versions.
o htags: Added a loading message when the --tree-view option is specified.

[INCOMPATIBLE CHANGES]
o gtags-cscope: Though previous gtags-cscope ignored GTAGSROOT, GTAGSDBPATH when
  the -d option was not specified, it was meaningless. Now it accepts both of them
  always.

[FIXED BUGS]
o gtags-cscope: Arrow keys didn't work after execution of external programs. Now it works.
o global: The -u option didn't work in a project whose path includes blanks. Now it works.
o htags: Fixed some bugs about --tree-view option.
- The type argument of --tree-view option didn't work in the top page. Now it works.
- Directory icons by --tree-view=filetree were not displayed. Now it works.
- On-line manual didn't say about the type argument. Now it is written.

Version 6.2.8 - February 28 2013

[CHANGES]
New facilities:
o htags: Added support of Python's built-in web server.
  Required python 2.4 or later.

  Please try this: (CGI and AJAX work completely)
        $ htags --suggest2
        $ cd HTML
        $ python -m CGIHTTPServer               # Python 2.X(2.4-)
        ($ python3 -m http.server --cgi         # Python 3.X)
        Serving HTTP on 0.0.0.0 port 8000 ...

        (in another terminal)
        $ firefox http://localhost:8000/

o gtags.conf: Added a new record for Drupal(Content management platform).

o global: New --path-style=<format> option.
  <format> may be relative, absolute, shorter, abslib and through.
        shorter: use shorter one among relative and absolute paths.
        abslib: use absolute path only in library projects.
        through: raw path name as is in GPATH.

        The --path-style option is given more priority than the -a options.
  
[INCOMPATIBLE CHANGES]
o htags: End of support of customization of HTML tag using gtags.conf.
  Please use CSS(cascading style sheets) instead.
  - The --html option of htags(1) was removed.
  - The tag definitions in gtags.conf were removed.

Version 6.2.7 - December 22 2012

[FIXED BUGS]
global: The -g command failed in handling of files whose size is 0 in some systems.
Now it works.

Version 6.2.6 - December 11 2012

[CHANGES]
New facilities:
ctags-5.8.patch: Patch against ctags-5.8. This adds new option --gtags and new
  function makeSimpleReferenceTag() to ctags. These are for making reference tags
  for Global, and enable you to write a single parser for both Global and ctags
  at once.
exuberant-ctags.so: Added support for ctags --gtags option.

Changed:
gtags.vim: Renamed custom variable 'Dont_Jump_Automatically' to 'Gtags_No_Auto_Jump'.
  Now 'Dont_Jump_Automatically' is deprecated.
global: The performance of literal search (-g --literal) has been improved.
  A pattern string which consists of alphanumeric characters and/or blank characters
  is treated as a literal string automatically. Try 'global -gx --literal string'.

Version 6.2.5 - November 16 2012

[CHANGES]
New facilities:
gtags.el: Now supports XEmacs again.
gtags.vim: New custom variable Dont_Jump_Automatically.

[FIXED BUGS]
gtags: Now the following error does not occur.
  'input buffer overflow, can't enlarge buffer because scanner uses REJECT'
gtags.el: 'gtags-parse-file' didn't expand the file name (tilde character => $HOME).
  Now it works.

Version 6.2.4 - May 30 2012

[FIXED BUGS]
Gtags with the -f option brings segmentation fault. Now it works.
This bug exists only in Global-6.2.3.

Version 6.2.3 - May 26 2012

[FIXED BUGS]
o Built-in parser: When attribute specifier appeared immediately after
  `struct', `union' or `enum' keyword, Global could not pick up tag name.
  Now it works correctly.

[CHANGES]
New facilities:
o gtags: --single-update option support addition of a file.
o global: New --single-update option.
o gtags.el: New custom variables:
  - gtags-ignore-case
  - gtags-auto-update.
o gtags.vim: New custom variables 'Gtags_Auto_Update' (default 0).

Version 6.2.2 - March 15 2012

[FIXED BUGS]
o configure: The --disable-gtagscscope option didn't avoid building gtags-cscope
  completely. So, ./configure failed when there is no curses library.
  Now it avoids building gtags-cscope completely.
o htags: Imported a patch to fix htags on Windows Vista+ (tmpfile wants to create
  its file in the root directory, which is not writable by normal users).

Version 6.2.1 - February 24 2012

[CHANGES]
New facilities:
o gtags: New --accept-dotfiles option.
o configure: New --disable-gtagscscope option.
o gtags.el: Key mapping was changed to follow "Key binding conventions" of Emacs Lisp.
  - The prefix character "\C-c" for suggested key mapping became customizable.
    If you want to invoke 'gtags-find-tag by "\C-xt", please write your .emacs file
    like follows:

        [$HOME/.emacs]
        (setq gtags-suggested-key-mapping t)
        (setq gtags-prefix-key "\C-x")

[INCOMPATIBLE CHANGES]
o gtags.el: Key mapping was changed to follow "Key binding conventions" of Emacs Lisp.
  - Policy of key mapping was changed.
  [Old] If 'gtags-suggested-key-mapping' is false, any key mapping is not done.
  [New] If 'gtags-suggested-key-mapping' is false, almost key mapping is not done.
        But "\C-m" and "\C-t" in 'Gtags select mode' are always enabled.

[FIXED BUGS]
global: The -L option with '-' didn't work. Now it works.
Built-in parser:
- Pick up symbols in expression in enumerator-list as "reference or other symbol".
- C/C++ parser couldn't handle typedef of the form of 'typedef enum tag_name TYPEDEF_NAME;'
  correctly. Now, it works.

Version 6.2 - January 21 2012

[CHANGES]
New facilities:
o gtags.el: Added support for TRAMP. Now gtags.el works almost transparently with TRAMP.
  Please send a bug report to the bug mailing list.
o gtags-cscope: Enables an environment variable EDITOR allow options.
o gtags-cscope: New -i option.
o gtags-cscope.vim: New custom variable GtagsCscope_Kepp_Alive.
o globash: Added long name options:
  use, show, first, last, next, prev:   --vi, --less, --emacs, --vim, --gozilla, --noedit
  mark: --list, --edit
  cookie: --list, --edit, --menu, --warp
o gtags: Add keywords introduced in ISO/IEC 9899:2011.
  _Alignas _Alignof _Atomic _Generic _Noreturn _Static_assert _Thread_local

[INCOMPATIBLE CHANGES]
o less-global: Quoting is required for the pattern which should be interpreted by the shell.

[FIXED BUGS]
The icase_path config variable didn't affect the -c command with the -P option of global.
Now it works.

Version 6.1 - October 7 2011

[CHANGES]
New facility:
o Server side Global
  You can use some shell scripts instead of global, gtags and htags.
  By this facility, you need not install Global in your client machine.

  Client machine       Network         Server machine
  +--------------+                    +---------------+
  |gtags-client  |-------- SSH ------>|    gtags      |-->GTAGS,GRTAGS,GPATH
  |              |                    |               |     |
  |global-client |<------- SSH ------>|    global     |<----+
  |              |                    |               |
  | vi, emacs    |<------- NFS ------>| project files |
  +--------------+                    +---------------+

  Please read script/README for the details.

Version 6.0 - September 7 2011

[CHANGES]
New facilities:
o Now Global allows path names which include blanks.
o Now Global refuses looping symbolic links.
o global: the -c command accepts -T option.
o global: the -c command locates symbols in the directories in GTAGSLIBPATH.
o global: New --match-part option.
o global: New environment variable GTAGSTHROUGH. If this variable is set,
  the -T option is specified.
o global: New output format 'ctags-mod'. It is used in gtags.vim.
o global: New environment variable GTAGSBLANKENCODE.
o htags: Changed the cflow loader to accept "_' and HTML special chars (&XXXX;).
o gtags.vim: Now allows use of the -s and -r option at the same time.
o gtags.vim: Now custom variables: 'Gtags_Auto_Map' (default 0).
o gtags.el: New custom variable 'gtags-grep-all-text-files'.
o gtags-cscope: New -a option.
o gtags-cscope.vim: New custom variables: 'GtagsCscope_Use_Old_Key_Map',
  'GtagsCscope_Ignore_Case', 'GtagsCscope_Absolute_Path'.

[INCOMPATIBLE CHANGES]
o gtags.el: Now each gtags-find-xxx command follows 'case-fold-search' variable.
o gtags.el: Mouse key mappings for xemacs is not done any longer.
o gtags.el: Changed the prefix character of the commands from 'ESC' to 'Ctrl-c'
  to avoid collisions with the default key mapping. If you want to use the old
  key mapping, please write the followings in your '.emacs' file.

	(setq gtags-suggested-key-mapping t)
	(setq gtags-use-old-key-map t)

o gtags.el: New policy of key mapping:
  - If 'gtags-suggested-key-mapping' is false, any key mapping is not done.
  - If 'gtags-disable-pushy-mouse-mapping' is true, any mouse mapping is not done.
o gtags-cscope.vim: The default value of 'GtagsCscope_Auto_Map' and
  'GtagsCscope_Auto_Load' was changed to 0. Additionally, the default key mapping
  was changed to the one derived from 'cscope_maps.vim' that was made
  by the cscope team.
  If you hope older environment, please write the followings to your '.vimrc' file.

        let GtagsCscope_Auto_Load = 1
        let GtagsCscope_Auto_Map = 1
        let GtagsCscope_Use_Old_Key_Map = 1

o gtags.vim: Changed the -P sub-command not to accept NULL input.
  Please input '/' instead.
o gtags-cscope: Title changed.
  Find this C symbol: -> Find this symbol
  Find functions calling this function: -> Find locations calling this function:
o gtags.conf: The lines which start with a '#' on continuation lines is considered
  to be a comment line.

  [example]
        :langmap=C\:.c:\
#       :langmap=C#\:.cs:\
        :langmap=Java\:.java:

  [old]
  considered as:|      :langmap=C\:.c:#        :langmap=C#\:.cs:        :langmap=Java\:.java:|
  [new]
  considered as:|      :langmap=C\:.c:        :langmap=Java\:.java:|

[FIXED BUGS]
o gtags.el: gtags-mode-hook and gtags-select-mode-hook were not the last thing run
  when entering the mode. It has been fixed.

Version 5.9.7 - July 1 2011

[CHANGES]
New facilities:
o global: the -c command accepts new -P and -r option.
o gozilla: Now support firefox.
o globash: Added two commands: d and rs.

[INCOMPATIBLE CHANGES]
o globash: The -l option in each search command was removed.
o gtags.el: Removed the default mouse key mapping in gtags-mode and gtags-select-mode.
  If gtags-suggested-key-mapping is true, the old mouse key mapping is available.

        [$HOME/.emacs]
        +------------------------------------------------
        |(setq gtags-suggested-key-mapping t)

[NEW FACILITIES IN TESTING STAGE]
You can use the following facilities by setting GTAGSTESTING environment variable.
Please try:
        $ export GTAGSTESTING=  (in sh)
or
        % setenv GTAGSTESTING   (in csh)

o gtags: Now gtags detects looping symbolic link.(testing stage)
o gtags: Now treat blanks in a path correctly.(testing stage)

If you find a bug, please send a bug report to bug-global@gnu.org. Thank you.

Version 5.9.6 - June 7 2011

[CHANGES]
global: New option --literal.
htags: New --fixed-guide option.

[FIXED BUGS]
htags: didn't make FILEMAP file which is referred by Doxgen.
       version 5.9.4 and 5.9.5 didn't this file.
gtags-cscope: 'Find this text string:' didn't work correctly in some cases.
gtags-cscope/Makefile: setting of gtags_cscope_DEPENDENCIES was wrong.

Version 5.9.5 - May 16 2011

[CHANGES]
o gtags-cscope: re-implemented using cscope's code.
  Now, it is almost compatible with cscope itself.

o Config variable 'suffixes' was completely removed.
  Instead, config variable 'langmap' was actualized.

[INCOMPATIBLE CHANGES]
Removed GPATH,GTAGS,GRTAGS,GSYMS and html/ from the skip variable
in gtags.conf file.
From now on, gtags unconditionally ignore the tag files.
Though 'html/' was added for Windows, it brought troubles for UNIX.

[FIXED BUGS]
o The processing of the --ncol option was missing.

Version 5.9.4 - March 8 2011

[CHANGES]
o gtags.el: New custom variables: 'gtags-disable-pushy-mouse-mapping'
  and 'gtags-suggested-key-mapping'.
o gtags.el: Command gtags-parse-file was rewritten.
o gtags.vim: New custom variable Gtags_Use_Tags_Format.

[INCOMPATIBLE CHANGES]
o htags: Ceases making ID database arbitrarily when the -g option is specified.
o htags: The --no-map-file option was removed. Instead, new --map-file option
  was added. Htags doesn't make mapping files (FILEMAP, MAP) any longer.
o htags: The -c (--compact) option was deleted from the option list of the
  --suggest2 option.

[FIXED BUGS]
o htags: A certain kind of files which does not end with newline bring
  segmentation fault.

Version 5.9.3 - December 6 2010

[CHANGES]
New facilities:
o global: New optional files arguments for the -g command.
o global: New -V(--invert-match) option for the -g command.
o global: New --print0 option.
o global: New --file-list=file option.
o htags: New --html-header option.
o gtags.vim: Activate input completion also on prompt 'Gtags for pattern:'.

[FIXED BUGS]
o global: --from-here option didn't locate definitions in GTAGSLIBPATH.
o global: Under Cygwin environment, global blocks for a few seconds if there is no GTAGS.
o htags: Htags with the -g and -d option didn't work correctly.

[INCOMPATIBLE CHANGES]
o Global's commands locates gtags.conf also in the sysconfdir.
  You can see the path using the following command line:

	$ gtags --config=sysconfdir

  Suggested by Jean-Marc Bourguet.

Version 5.9.2 - August 30 2010

[CHANGES]
New facilities:
o globash: Added -m(-vim) option to the show command.
           Added new use command.

[INCOMPATIBLE CHANGES]
o Renamed the -S(--secure-cgi) option to --system-cgi. This is because
  the parameter of the --secure-cgi was changed in Global-5.9.1.
o The site key directory for the --system-cgi option was moved from
  datadir(/usr/local/share) to localstatedir(/usr/local/var) because
  datadir should be used for read-only data.
  By default, you must execute "cd HTML; sh bless.sh" as a root user,
  since the site key directory can not be written except for root user.

Version 5.9.1 - July 19 2010

[CHANGES]
New facilities:
o gtags: New gtags.files file.

  If a file called 'gtags.files' exists in the current directory,
  gtags(1) treats it as a list of files which are candidates of target.
  The following two brings a same result.
  
  $ gtags -f files
  $ gtags -i -f files
  
  $ cp files gtags.files
  $ gtags
  $ gtags -i

The latter has an advantage that 'global -u' can use the mechanism too.

o htags: New --auto-completion option.
  Enables completion input method for the search form (requires http server).
o htags: New --tree-view option.
  Use tree view for the file index.
o htags: New --suggest2 option
  --suggest - use popular options without frame, CGI and javascript.
  --suggest2 - use frame, CGI and javascript in addition to the --suggest.

The --auto-completion and --tree-view option requires javascript language
in your browser.  If your browser is one of the followings, it will work.

        * GNOME web browser
        * firefox
        * chrome

o global: Allows -I option for the -c command.

[FIXED BUGS]
o gtags.el: The following commands fail with a message 'Beginning of buffer'
  when the cursor is at the head of the buffer.
        gtags-find-tag, gtags-find-rtag, gtags-find-symbol,
        gtags-find-tag-from-here, gtags-find-with-idutils, gtags-find-with-grep

[INCOMPATIBLE CHANGES]
o Safe-CGI mechanism was modified.
  The parameter of the -S option was changed.

Version 5.9 - June 8 2010

			*** Caution ***

This version of Global doesn't support tag files of the former version.
If you install this version, you should remake all tag files again using
gtags(1) in this package. Though new gtags's speed has improved very much,
you need not hurry up to upgrade it if you have a lot of tag files of
former version. Thank you for your cooperation.

[CHANGES]
New facilities:
o global: New --encode-path option.
  This option is to support path names which includes blanks.
o globash: New command.
o global: Accept the -r and -s option at the same time.
o gtags, global, htags: Allows path name which includes blanks.
  This is experimental operation. You can use this function by setting
  environment variable 'GTAGSALLOWBLANK'. Please try and send us bug reports.
o gtags: Speed-up using 'sorted writing'.
  It uses external POSIX sort program (/usr/bin/sort). If your system's path
  is different from /usr/bin/sort, you will see the following message:

    Warning: POSIX sort program not found. If available, the program will be speed up.

  In that case, please rebuild Global with the --with-posix-sort option.

    $ ./configure --with-posix-sort=<path of POXIS sort program in your system>

[FIXED BUGS]
o gtags-cscope: When using gtags-cscope with the -C argument to ignore case,
  it passes malformed arguments to global which prevents it from looking
  up the definition points of the requested identifier.
o global: The -I command with the --result option fails.

[INCOMPATIBLE CHANGES]
o Global shifted to new architecture and new tag files. Global doesn't use
  GSYMS tag file any longer. New Global doesn't support older tag files.
  When you use older tag files, you will see the following message:

	global: /*/GTAGS seems older format. Please remake tag files.

o Removed undermentioned config variables:

Removed config variable         replacement
-------------------------------------------------------------------------
definition_header(position)     -h, --func-header[=position]
disable_grep                    --disable-grep
dynamic                         -D, --dynamic
full_path                       --full-path
no_map_file                     --no-map-file
other_files                     -o, --other
show_position                   --show-position
table_flist                     -T, --table-flist[=rows]
flist_fields(number)            -T, --table-flist[=rows]
enable_idutils                  --disable-idutils (*1)
table_list                      --table-list
suffixes			langmap
-------------------------------------------------------------------------
  *1 Please note that '--disable-idutils' is opposite to 'enable_idutils'.

If you use above removed variables in your configuration file, please
use config variable 'htags_options' instead.

For example:
:definition_header=before:full_path:other_files:table_flist:flist_fields#3:disable_grep:\
        |
        v
:htags_options=--func-header=before --full-path --other --table-flist=3 --disable-grep:\

Version 5.8.2 - April 1 2010

[CHANGES]
o gtags, htags: Changed the algorithm for detecting binary file.
  If the first 512 bytes contain any character of 0-7, 14-26,28-31,
  the file is basically considered to be a binary. New method can correctly
  treat multi-byte text file too. This is suggested by Erik Jonsson.
o global: Changed the -i option to be effective with the -c command.

[INCOMPATIBLE CHANGES]
o gtags: the built-in parser in function layer has become the default.
  Config parameter 'use_builtin_parser' is not used any longer.
o htags: Changed the default output from HTML to XHTML.
  In older htags,
        no option: HTML
        --xhtml: XHTML
  In new htags,
        no option: XHTML
        --xhtml: XHTML
        --html(new option): HTML

Version 5.8.1 - March 6 2010

[CHANGES]
New facilities:
o gtags: Added support of function layer plug-in parser by Hideki IWAMOTO.
  This includes exuberant-ctags shared library, an example of plug-in
  parser using Exuberant ctags. To use this, please try the following:
  (It assumed that Exuberant ctags exists in "/usr/local/bin".)
        $ ./configure --with-exuberant-ctags=/usr/local/bin/ctags
        $ make
        $ sudo make install
        $ gtags --gtagsconf=/usr/local/share/gtags/gtags.conf --gtagslabel=plugin-example
  Please see plugin-example/README for the detail.
o htags: Added call-tree facility using cflow(1).
  Please try this:
        $ gtags
        $ cflow --tree --format=posix `global -P` >cflow.out
        $ htags --cflow=cflow.out
  Input file must be POSIX format(use the --format=posix).
  GNU cflow is available at: http://www.gnu.org/software/cflow/

[FIXED BUGS]
gtags-parser: Input of long token(>= 512bytes) brings buffer overflow.

[INCOMPATIBLE CHANGES]
gtags: Gtags using function layer plug-in parser always makes all tag files
even if some of them are empty. Old style command layer plug-in parser makes
only specified tag files. The new specification is better than old one for the
reason that tag files of different parsers don't mix.
If you want to know whether a tag file is empty or not, please use the following
commands:
        $ global '.*' -r                # GRTAGS is empty?
        $ global '.*' -s                # GSYMS is empty?

Version 5.8 - February 5 2010

[CHANGES]
New facilities:
o gtags: Built-in parser by Hideki IWAMOTO.
  This improvement has shortened the processing time to about 1/3.
  Built-in parser is not effective by default in this version.
  To use built-in parser, please define 'use_builtin_parser' in your
  configuration file like follows:

	$ cp /usr/local/share/gtags/gtags.conf $HOME/.globalrc
	$ vi $HOME/.globalrc
	+------------------------------------
	|...
	|default:\
	|       :tc=gtags:tc=htags:use_builtin_parser:	<= ADD THIS

  In the near future, built-in parser will become effective by default.
o gtags.el: Single 'GTAGS SELECT MODE' buffer of gtags.el by Yushi Oka.
  If "gtags-select-buffer-single" is non-nil, then 'GTAGS SELECT MODE'
  buffer is kept single.
o gtags-cscope.vim: Plug-in script which integrates Global and vim editor
  using cscope interface. Since this script makes vim think Global is cscope,
  you can use the tag stack facility of vim like cscope. Gtags-cscope can
  coexist with gtags.vim.

[FIXED BUGS]
o gtags.el: the completion read in the gtags-find-file fails into endless
  loop when the input string is NULL.

[INCOMPATIBLE CHANGES]
o gtags(built-in parser): In the existing parser (gtags-parser), some symbols
  were stored in both GRTAGS and GSYMS. In the built-in parser, all the symbols
  defined in GTAGS have been moved from GSYMS to GRTAGS. New specification
  is more consistent, and useful for efficiency improvement. If you feel this
  a problem, please inform bug mailing list of your insistence.

Version 5.7.7 - December 19 2009

[CHANGES]
o htags: More accurate statistics mechanism using gettimeofday(2) and getrusage(2).
o gtags: New --statistics option.
o gtags.el: Added completion support for the 'gtags-find-file'.
o global: Allows tag files in the system's root directory.
  This does not recommend tag files to be put on the system's root directory.
  In some systems except UNIX, putting tag files there might be suitable.
[FIXED BUGS]
o The --from-here option didn't work with compact format GTAGS (gtags -c).

Version 5.7.6 - October 6 2009

[CHANGES]
New options:
o gtags: --single-update=file
  Update tag files for single file. It is considered that the file was updated,
  and other files were not updated. This option implies the -i option.
  If the file is new then --single-update is ignored, and the processing is
  automatically switched to the normal incremental updating.
o gtags: --dump=tag-files
  Dump a tag file. Output format is 'key<tab>data'.

Version 5.7.5 - March 14 2009

[CHANGES]
Change of gtags:
o Revived the -c option.
  If this option is specified, gtags uses compact format for GTAGS.
  This option does not influence GRTAGS and GSYMS, because they are always
  made using compact format.
  If you think that GTAGS is too big, please use this option.
o Removed the limitation of the depth of the directory hierarchy. 
o Changed not to do useless inspection for the files in the directories
  which are listed in the skip list.

Version 5.7.4 - January 5 2009

[CHANGES]
o global: In compact format, operation to non-existent lines was changed
	to avoid needless abnormal termination.

	-- Delete lines 20-last from the test.c.
	$ global -xr func

	(OLD)
	func      10 test.c           func(a);
	global: unexpected end of file. './test.c: 19/20'
	$ echo $?
	1                                       <- abnormal termination

	(NEW)
	func      10 test.c           func(a);
	func      20 test.c                     <- plain space means non-existence
	$ echo $?
	0                                       <- normal termination

[FIXED BUGS]
o gtags-parser: Gtags-parser had overlooked objects in 'extern "C" {...}'(C, C++).
  Now, it can pick up them.
o gtags-parser: Gtags-parser was not able to recognize the following definitions.
  Now, it can pick up them.

        int invisible /* COMMENT */ ()
        {
        }

        int also_invisible // COMMENT
        ()
        {
        }

        int visible () // COMMENT
        {
        }
o gtags-parser: Gtags-parser had overlooked 'Foo' in the following construct.
  Now, it can pick up them.

        namespace
        Foo
        { ...

  However, this works:

        namespace Foo
        { ...

Version 5.7.3 - October 29 2008

[FIXED BUGS]
gtags: Gtags with the -f option caused segmentation fault if a file in the
file list is not in the working directory or its sub-directories.
gtags.pl: Version test was failed.

Version 5.7.2 - September 30 2008

[CHANGES]
New functions:
o gtags: New -O(--objdir) option.
o gtags.el: New commands: gtags-select-tag-other-window and gtags-find-tag-other-window.
o htags: Picks up the words 'include', 'required' and 'required_once' statement in PHP
  source files. Htags makes a link to the file described in above statements if it is
  accessible from the current directory.

[INCOMPATIBLE CHANGES]
o gtags: Changed to skip all files whose first character of name is '.'.
  The following paths were deleted from the DEFAULTSKIP list in configure.ac,
  since new rule covers them.

        .notfunction
        .gdbinit
        .cvsrc
        .cvsignore
        .gitignore
        .cvspass
        .cvswrappers
        .deps/
        .snprj/
        .svn/
        .git/

o gtags.el: Changed so that the visited files are left after invoking
  the 'gtags-pop-stack' command. If you hope old specification,
  please set gtags-pop-delete to true like follows:

        [$HOME/.emacs]
        (setq gtags-mode-hook
          '(lambda ()
                (setq gtags-pop-delete t)))

Version 5.7.1 - April 21 2008

[CHANGES]
New functions:
o gtags-parser: Picks up symbols in #{if,elif,ifdef,ifndef} line in assembly source.

Other changes:
o gtags.conf: Added new skip files: cscope.po.out,cscope.in.out
o gtags.vim: Added error check for the -f option.

[FIXED BUGS]
o Fixed imperfect symbolic link support.
  - global: Global didn't work with the -f option.
  - gozilla: Gozilla couldn't convert paths which include symbolic link.

Version 5.7 - March 25 2008

[CHANGES]
New functions:
o gtags: Allows symbolic links which point to a directory.
  In older version, such symbolic links were ignored with warning messages.

	[Example]

	/tmp
	  +-global
	  |  +-GTAGS
	  |  +-gtags ----+ (symbolic link to ../work/gtag2)
	  |  +-htags --+ | (symbolic link to ../work/htag2)
	  |            | |
	  +-work       | |
	     +-gtag2 <-+ |
	     |  +-gtags.c|
	     |           |
	     +-htag2 <---+
		+-htags.c

	Old version
	===========
	$ cd /tmp/global
	$ gtags
	Warning: './gtags' is a directory. (Ignored)
	Warning: './htags' is a directory. (Ignored)
	...
	$ global -f gtags/gtags.c
	'/tmp/work/gtags/gtags.c' is out of source tree.

	New version
	===========
	$ cd /tmp/global
	$ gtags
	$ global -f gtags/gtags.c
	usage              91 gtags/gtags.c  usage(void)
	help               98 gtags/gtags.c  help(void)
	...
	$ global -f gtags/../htags/htags.c
	mkdir              61 htags/htags.c  #define mkdir(path,mode) mkdir(path)
	link               62 htags/htags.c  #define link(one,two) (-1)
	...
	% cd gtags                                      <= get out of the source tree
	$ global -f gtags.c
	global: GTAGS not found.
	$ pwd
	/tmp/work/gtags

	Though the symbolic link to a directory might confuse users,
	it is originally as such. They should understand the characteristic.

o gtags-parser: Picks up the names of struct, union, enum and enum member
  as definitions.
o gtags.el, gtags.vim, gtags.pl: More accurate, language independent context jump
  using new --from-here option of global(1).
o gtags.el: Customizable path style in the [GTAGS SELECT MODE].
  You can select one of the followings:
	root		relative from the root of the project (Default)
	relative	relative from the current directory
	absolute	absolute (=relative from the system root directory)

New options and variables:
o global: New --from-here option. This option is used by context jump facility. 
o gtags,htags,gtags-parser: New environment variable GTAGSFORCECPP.
  If this variable is set, each file whose suffix is 'h' is treated as
  a C++ source file.
o gtags.el: Added new variable for customizing the path style in the
  [GTAGS SELECT MODE].

Other changes:
o global.texi: Added descriptions about gtags-cscope (fake cscope).

[INCOMPATIBLE CHANGES]
o gtags.el: Changed the default path style in [GTAGS SELECT MODE] relative
  from the root of the current project. In older version, it was absolute
  by default.
o nvi-1.79-gtags.diff: The support for nvi-1.79 ended. This nvi is an very
  old program, and is not distributed any longer.
o gtags-parser: Removed the -d(--define) and -t(--typedef) option, because they
  have already been the default operation.

[FIXED BUGS]
o gtags: Failed to process new GCC source code.
o gtags.vim: Completion facility didn't work with the -f option of Gtags.
o htags: Self-referred links.

Version 5.6.2 - October 26 2007

[CHANGES]
* gtags-parser: In C++ source code, now ignores forward definitions of classes
  (e.g. "class name;")

Version 5.6.1 - August 11 2007

[CHANGES]
* gtags.conf: Added '.git/' to the DEFAULTSKIP list.

[FIXED BUGS]
* global: Global(1) with the -t option didn't print correct line number.
  Gtags.vim also didn't work correctly due to this bug. This bug was
  introduced in Global-5.4.

Version 5.6 - July 6 2007

[INCOMPATIBLE CHANGES]
* All commands: According to the GNU coding standard, the --version option
  shows always verbose message without --verbose option.

[CHANGES]
* Migrated to GNU GPLv3 and GNU LGPLv3.
* gtags-parser: Added support for assembler directive ".macro" and ".equ".

[FIXED BUGS]
* global(1): Fixed a memory leak.

Version 5.5 - May 5 2007

* GNU Global became a BOKINware.

* gtags-parser: Added support for 'enum' (java).
* gtags.el: Changed to work without event-point function.

Version 5.4.1 - March 10 2007

[CHANGES]
* htags: New --item-order option.
  Specify the order of items in the top page. The spec is a string
  which consists of item signs in order. Each sign means as follows:
  c: caution, s: search form, m: mains, d: definition, f: files.
  The default is 'csmdf'.

[FIXED BUGS]
* htags: didn't extract some '#include' correctly.

Version 5.4 - January 29 2007

[INCOMPATIBLE CHANGES]
* Further compression of tag files (format version 5).
  Though new global can read older tag file since version-5.0, older
  global cannot read new format. It might say like follows:
	"GTAGS seems new format. Please install the latest Global."

[OTHER CHANGES]
* global: Improved performance when the -x option is not specified.
* globash.rc: New option -l for tag search command (x,r,s,g,P,I,f).
  This option invokes less(1) directly without using tag stack.
* Verbose messages are unified.
  P option      file not found
		<n> files located
  others        object not found
		path format: <n> files located
		other format:<n> objects located

[FIXED BUGS]
* Gtags(1) and global(1) didn't work well in the system root directory('/').

Version 5.3 - November 20 2006

[INCOMPATIBLE CHANGES]
* global: Changed not to locate other symbols (-s) in GTAGSLIBPATH.
  This is the original specification of Global.
* global: Discontinued sorting when the -I(--idutils) option specified.
  The output of gid(idutils) is sorted by the suitable way. Though the order is
  slightly differ from global(1), it need not be sorted again.

[OTHER CHANGES]
* global:  New -O(--only-other) option.
* htags: Added some new options and new arguments which are synonyms of
  configuration variable. This decreases dependence on configuration file.

  new option              | configuration variable
  ------------------------+-------------------------
  --disable-grep          | disable_grep
  --table-list            | table_list
  --tabs=<n>              | tabs
  --full-path             | full_path

  new argument            | configuration variable
  ------------------------+-------------------------
  --line-number [columns] | ncol
  --func-header [position]| definition_header
  --xhtml [version]       | xhtml_version

	(*=default)
	position: before, right, *after
	version: *1.0, 1.1

* htags: Changed to use each 'CVS/Repository' file to generate URLs if it is available.
* htags: Added '.gitignore' to the DEFAULTSKIP list.

* gtags.el:
  - Shorten path names in [GTAGS SELECT MODE]:
    If the project directory is specified using 'gtags-visit-rootdir', gtags.el print path
    using the relative path name from the project directory, else print absolute path name.
  - Support dynamic completing-read of tag name.
    gtags-make-complete-list is deprecated. You can enjoy tag name completion without
    invoking this command.

[FIXED BUGS]
* gtags: gtags had exited when it encountered dead symbolic link.

Version 5.2 - August 8 2006

* htags: Added new options:
  - -h(--func-header) option.
  - -I(--icon) option.
  - -T(table-flist[=fields]) option.
  Suggested options:
	$ htags -vsanohIT
* htags: Changed the default color of braces from blue to red to make them stand out.
* htags: Always enable 'Grep pattern' form when the -f(--form) option specified.
  Removed configuration variable 'enable_grep' since it became meaningless. Instead, added
  a new variable 'disable_grep'.
* htags: Added more profitable tips in the file browser.
  - File        size of bytes
  - Directory   number of files in the directory.

Version 5.1 - June 10 2006

[INCOMPATIBLE CHANGES]
* Changed the priority about the --result option to make the format
  specification easy. The --result option is now given to priority
  more than the -t and -x option. (This option appeared in version 5.0.)

[OTHER CHANGES]
* New program 'gtags-cscope'.
  Gtags-cscope is a pseudo cscope which implements the line-oriented
  interface. You can use this command for various clients instead of
  true cscope.
* Added new format 'cscope' to the argument of --result=<format>.

Version 5.0 - April 21 2006

[INCOMPATIBLE CHANGES]
* Moved to new tag format. (GTAGS, GRTAGS, GSYMS, GPATH)
  The purpose is as follows:
  o Allows path name including blanks, at least in tag files.
    (Global still doesn't support the path name which contains blanks.)
  o Decrease disk space used.
  o Make tag format simpler.
  o Realize stable performance.

  Hereafter, older tag format is not supported.
  Compact format was progressively canceled with the adoption of
  the new tag format. The -c(--compact) option of gtags(1) was removed.

  The following error messages are displayed in wrong combinations:
  - older global and new tag file
    $ global -x main
    GTAGS seems new format. Please install the latest Global.
  - new global and older tag file
    $ global -x main
    GTAGS seems older format. Please remake tag files.

  Known problem:
  - older global and new tag file
    Global(1) with the -g or -P command will always work as if invoked
    with the -o option. There is no way to avoid this problem.

New requirement:
* Added new requirement of plug-in parser
  Plug-in parser must process the arguments in the order they are given
  in the command line. In each file, any order is acceptable.
  Exuberant Ctags with the -xu option meets this requirement.
  (See global.info for the detail.)

Removed options:
* gtags(1): Removed the -c(--compact) option.
  Compact format was progressively canceled with the adoption of new
  tag format.
* gtags(1): Removed the -o(--omit-gsyms) option.
  This option was necessary in the past to use the program in a incompetent
  machine with a small hard disk. Since most recent machines has powerful
  CPU and mass hard disk. This options might already be unnecessary.
* htags(1): Removed the --style-sheet option.
  This was a really halfway option, and now nobody might need it because
  the --xhtml option became available.

[OTHER CHANGES]
New options:
* global: New --result=<format> option. Grep format became available.

  <format>: path,ctags,ctags-x,grep
        
  conventional option | newly added option
  --------------------+---------------------
  (none)              | --result=path
  -t                  | --result=ctags
  -x                  | --result=ctags-x
                      | --result=grep
        
  The -t and -x option are given to priority more than the --result
  option.

Version 4.8.7 - September 30 2005

New options:
* gtags: New --file <file list> option.
  Using this option, you can give the file set which should be
  processed to gtags.

        % find . -type f -print >/tmp/list
        % gtags --file=/tmp/list
        or
        % find . -type f -print | gtags --file=-

* gtags: New --max-args option.

Improvement of efficiency:
* Gtags was improved of performance by changing algorithm of the
  incremental updating. Along with it, the verbose message was
  greatly changed.
* Gtags was improved of performance by decreasing the frequency
  of the parser invoking. Under the influence of it, the verbose
  message is not necessarily real-time. If you dislike this behavior,
  use the --max-args option of gtags. You can control the frequency
  of the invoking with the option. With --max-args=1, the program
  does the same behavior as older version.
* Htags was improved of performance by decreasing the frequency
  of the parser invoking.
* Htags was improved of performance by omitting flushing temporary
  files to the disk.

Fixed bugs:
* Htags didn't treat here document (<<<word) of PHP source code correctly.
  Now it is treated correctly.
* Htags didn't treat HTML part of PHP source code correctly.
  Now it is treated correctly.

Other facilities:
* Added 'Htags Hyper-text Reference Kit'.
  The hypertext generated by htags(1) is now available from external
  programs. This kit helps you to convert the path of the source
  file into the URL in the hypertext.

* doc/global.txi: Added the usage of Doxygen using Global.

Version 4.8.6 - May 12 2005

[INCOMPATIBLE CHANGES]
* htags: Changed the value of id attribute and name attribute of
  the anchor of each line like follows:
	<a id='100' name='100'> => <a id='L100' name='L100'>
  It is because XHTML prohibits the id attribute which starts
  with a digit. If you refer these anchors from outer system,
  please rewrite them.

[OTHER CHANGES]
* htags: New option --insert-header and --insert-footer.

Version 4.8.5 - April 19 2005

* htags: Added the support for XHTML (--xhtml).
  If the --frame option is specified then generates XHTML-1.0 Frameset,
  else if configuration variable 'xhtml_version' is set to 1.1 then generates
  XHTML-1.1 else XHTML 1.0 Transitional.
  You can customize the appearance using style sheet file 'style.css'.
* htags: Added configuration variable 'xhtml_version'.
* htags: Added 'html/' to the fault skip list.
  It is the output directory of doxygen document.
* gtags-parser: Added yacc directives introduced in bison-2.0.
  %default-prec(%default_prec)
  %expect-rr(%expect_rr)
  %initial-action
  %no-default-prec(%no_default_prec,%no_default-prec,%no-default_prec)
  %nondeterministic-parser

Version 4.8.4 - March 4 2005

Fixed bugs:
* gtags-parser: C and C++ parser was broken.
* gnusort: Couldn't be compiled in Solaris environment.

Version 4.8.3 - February 26 2005

[INCOMPATIBLE CHANGES]
* The support for DOS and Windows 32 ended.
  But it doesn't mean the deletion of the code for DOS and Windows 32.
  We leave the support to outside projects and accept their code as is.
  Therefore, anything has not been changed substantially up to now.
* Renamed gctags(1) to gtags-parser(1) because some systems have
  another 'gctags' which does not relate to Global.
* Changed gtags-parser(1) to decide language type of the source files
  only by the suffix. In older version, *.h files were considered to be
  C++ source files if they include token 'class'. New version considers
  *.h files always to be C source files. If you want gtags-parser to
  consider them C++ then you must redefine new configuration variable
  'langmap'.
  
[OTHER CHANGES]
Fixed bugs:
* htags: The --gtagsconf and --gtagslabel option didn't work correctly.
* htags: Buffer overflow occurred in dupindex.c:makedupindex().
* htags: Could not ignore path name which includes blank correctly.
New features:
* gtags,htags: New configuration variable 'langmap'.
  This variable is used for customizing the mapping of languages and the
  parsers, and it includes the function of obsoleted 'suffixes' variable.
  If you use 'suffixes' then it is effective else Global internally
  generates the value of 'suffixes' from the 'langmap'.
  The reason to continue 'suffixes' is that it is needed for plug-in parser.
  If you don't use plug-in parser then you should use 'langmap' instead.
* htags: New configuration variable 'copy_files'.
  With the -f option, htags makes links of tag files in the 'cgi-bin'
  directory by default. With this variable, htags copy them instead of
  linking.

Version 4.8.2 - November 11 2004

[INCOMPATIBLE CHANGES]
* The support for postgres ended.
* Removed htags.pl (older version of htags written by Perl) completely.
* Removed configuration variables: sed_command and sort_command.
  Sed(1) and sort(1) are not necessary any longer.

[OTHER CHANGES]
Fixed bugs:
* Fixed wrong output of 'global -Po'.

New features:
* gctags(assembly language):
  - In addition to `call', `jsr' is recognized as call instruction.
    Although various call instructions exist like `bl' or `calls',
    only `call' and `jsr' are used widely.
  - Macros like ENTRY or EXT are taken up as reference,
    when definitions exist in somewhere else.
  - Warning is displayed when a comment is not closed.
  - C_SYMBOL_NAME and C_ENTRY are recognized as a macro
    which shows the start of a function.
  - The string which is not closed finishes at the end of line.
    This behavior is the same as GNU C pre-processor.
  - The check of correspondence of "#if" and "#endif" was deleted.
    This did not exist in version 4.8.
* Added '.snprj/' directory to the DEFAULTSKIP list.
  This is the tag directory for the Source-Navigator.

Version 4.8.1 - October 6 2004

Fixed bugs:
* htags: The -d option of htags didn't work. Now it works well.
* htags: Didn't recognize continued line and null directive(#).
  Now it works well.

New features:
* htags: Configurable suffix list for include file.
  (See man htags(1). configuration variables: include_file_suffixes)
* htags: Uses environment variable TMP if TMPDIR doesn't exist.(only DJGPP)
* htags: Warns about unknown pre-processing directive. As the exception,
  when unknown preprocessing directive appears in assembly source,
  it will be recognized as the start of a shell comment.  
* htags: Added all yacc directives supported by bison-1.875.

Version 4.8 - August 26 2004

* Htags(1) was rewritten in C language completely. It is compatible
  with the perl version and the performance has been improved greatly.
  The perl version is left in the package for the time being as
  '/usr/local/bin/htags.pl' by default.
* htags: In PHP source code, now picks up variables in strings ("${aaa}").
* gctags: Added __thread to the reserved word list of C and C++.

Version 4.7.2 - June 7 2004

Fixed bugs:
* Fixed obsolete style option for sort(1).

Version 4.7.1 - June 1 2004

New features:
* Added support for home_etc(3) facility on PLD Linux/GNU.
* gctags: Now picks up external defined functions as symbols.

Fixed bugs:
* Global(1) didn't work with the GNU sort(1) based on POSIX 1003.1-2001.
  GNU sort(1) with the latest glibc doesn't accept obsolete +POS1[-POS2]
  style option. Now global(1) works well with it.
* Global-4.3 and the later couldn't treat shadow tree. Now it works well.

Version 4.7 - Feb 1 2004

* gtags.vim: Plug-in script which integrates Global and vim editor.
* global.txi: Added the usage of gtags.vim script.
* global: The -o option is now available with the -P command.
* gctags: Fixed a bug: Gctags couldn't recognize the definitions
  in namespace block. Now it can recognize them.
* Changed to install gtags.conf and other files to $datadir/gtags.
* Borland C++ compiler support in Windows32 ended because
  - Now, Cygwin environment is widely used.
  - Borland C++ compiler is not free software.

  The w32/ directory is left in this release but will be removed in the
  future release.

Version 4.6.1 - Oct 3 2003

* gtags, htags, gctags: Added '.hpp' to the suffix list of C++ source file.

Version 4.6 - July 2 2003

[INCOMPATIBLE CHANGES]
* Changed the default value of configuration variable 'definition_header' to 'no',
  because definition header is unsightly according to the place, especially
  in class definition.

[OTHER CHANGES]
* Added support for PHP language.
  (Known problems in htags)
  - Variables in string cannot be recognized.(global can recognize that.)
  - In HTML, character strings which are same spelling with the reserved
    word of PHP are recognized as reserved words of PHP.
  Htags(1) should be rewritten greatly to solve above problems in the future.
* Added support for SCM_DEFINE macro which is part of guile-snarf.
* Added 'right' as a value of configuration variable 'definition_header'.
* Added some tool tips.
  - Alphabet in the alphabetical definition index shows the count of definitions.
  - File name in the file index shows the full path name.
  - Anchor in the duplicate index shows the number of duplicated objects.
* Added .cvsrc,.cvsignore,.cvspass,.cvswrappers,autom4te.cache/
  to the DEFAULTSKIP list.

Always thanks to Hideki Iwamoto san for his contribution.

Version 4.5.3 - June 5 2003

[INCOMPATIBLE CHANGES]

* htags: Tool tip is now implemented by title attribute instead of javascript.
* htags: Removed the --no-javascript option because it is already unnecessary.
* global: Argument pattern is now always interpreted as an extended regular expression.
  In older version, it was interpreted as a basic or extended regular expression.
  It depended on the build environment. In the new version, if you want pattern
  to be interpreted as a basic regular expression, please specify the -G option.

[OTHER CHANGES]

New features:

htags:
* Added CVS REPOSITORY link (the --cvsweb and --cvsweb-cvsroot option).
* Added tooltips in some anchors.
* Added --no-map-file option.
  Htags generates 'MAP' file by default. You can suppress it by the option.
* Added --statistics option.
  With this option, htags prints statistics information to standard error.

global:
* New -e(--regexp) option like grep(1).
* New -G(--basic-regexp) option like egrep(1).

Performance tuning:

htags:
* Reduced the size of cache file by removing unnecessary information.
* Suppressed the use of temporary file to the minimum by trying to read from
  the source code.

Other modifications:

* Shut a security hole.
* Added '{arch}' and '.notfunction' to the DEFAULTSKIP list.
* gctags: Added support for __attribute__((...)).

I wish to express my gratitude continuously since last time for the
contribution of Hideki Iwamoto san.

Version 4.5.2 - March 29 2003

[INCOMPATIBLE CHANGES]

* htags: Added configuration variables: 'title_begin' and 'title_end'.
  This makes the configuration more flexible.
  If you are still using older version of gtags.conf, please replace it
  with the one in this package.

[OTHER CHANGES]

* htags: Added 'INCLUDED FROM' index written by Hideki IWAMOTO.
  This indexes the places where the header file is included.
* htags: Added support for multi-line string.
* htags: Now pass the '-w' option to gtags when the -g option specified.
* htags: Now allows the references to nonexistent definition without warning.
* htags: Added missing reserved words.
  - Added C99 reserved words _Bool,_Complex,_Imaginary,inline,restrict.
  - Added missing C++ reserved words asm,bool,const_cast,dynamic_cast,
    explicit,export,false,mutable,namespace,reinterpret_cast,static_cast,
    true,typeid,typename,using,wchar_t.
* htags: New configuration variables: 'colorize_warned_line', 'warned_line_begin'
  and 'warned_line_end'.
* gctags: Now picks up references to the macro in conditional directive.
* gctags: Removed wchar_t from the reservation word list of C.
* gctags: Removed overload from the reserved word list of C++.
* gtags: Added new environment variable GTAGSCACHE.
* Fixed many bugs.

Special thanks to Hideki Iwamoto san. Most of improvements and bug fixes
in this version are written by him.

Version 4.5.1 - November 9 2002

[INCOMPATIBLE CHANGES]

* htags: Renamed the --symbols option and configuration variable 'symbols'
  to 'symbol'.

[OTHER CHANGES]

* gtags, htags: Added --gtagslabel option.
* htags: Added -D(--dynamic) option.
* Fixed some bugs.

Version 4.5 - July 4 2002

* htags: New -m(--main-func) option.
* htags: New --style-sheet=<style file> option.
* htags: New --no-javascript option and no_javascript configuration variable.
* htags: New -g(--gtags) option.
* htags: New -s(--symbols) option and configuration variable 'symbols'.
* gctags: New --langmap option.
* gctags: New -t and -d option.
* gtags: Now picks up macros with no argument, typedef names and enum members.
* gozilla: New -d option.
* gctags: Now assumes __attribute__, const, volatile, wchar_t as a reserved word
  in C language. assumes __attribute__, explicit, mutable, namespace,
  overload, typename, using as a reserved word in C++ language.

Version 4.4 - March 30 2002

* Gozilla(1) came back to Global.
* global, htags: Added -o(--other) option which picks up not only source
  files but also other files like 'README'.
* htags: New configuration variables: other_files, definition_header, enable_grep
  and enable_idutils.
* htags: Removed the -l(--each-line-tag) option.
  From now on, htags works as if -l flag is always specified.
  Htags accepts the option for backward compatibility.
* global: Improved performance of path conversion.
* gtags.conf: Added documentation.
* htags: Shut another security hole.
* Fixed some bugs.

Version 4.3.1 - January 22 2002

This is a bug fix version.
* Htags didn't generate global.cgi file correctly. Now it works well.

Version 4.3 - January 10 2002

* Added support for DJGPP.
* Added support for nvi-1.81.5.
* global.texi: Added the chapter of less viewer and nvi-1.81.5.
* global,gtags: New -q option.
* htags: Added new anchors in path names.
* global: Added support for GTAGSROOT file.

Version 4.2 - November 24 2001

* Added support for postgres.
  You need to configure Global with --with-postgres option.
* gtags: When no parser specified in the configuration file, use default value.
* gtags: Now accepts full path name in configuration variable 'skip'.
* htags: New --caution option.
* global.texi: Added command reference manuals.
* gtags, htags: Now accepts relative path name as the parameter of --gtagsconf.

Version 4.1.1 - July 31, 2001

* htags: Fixed some bug.
* configure: Fixed a bug. The --srcdir option didn't work.
  Now you can build the project at any directory other than source directory.
* htags: Now generates rebuild.sh to redo the job with the previous context.
* globash.rc: Changed the prompt when GTAGSROOT is specified from "[$root]/..."
  to "[$root]!$cwd".
* globash.rc: Fixed a bug. In 'next <no>' and 'prev <no>', the <no> was ignored.
* globash.rc: show command: Now use emacsclient instead of emacs when the -e
  option is specified.

Version 4.1 - July 12, 2001

[INCOMPATIBLE CHANGES]

* global: Renamed the -i(incremental) option to -u(update), and added new
  -i(--ignore-case) option, because -i options is generally used for this
  purpose (see grep(1)).
* gtags.conf: Renamed global.conf into gtags.conf because the old name was
  too generic. (Global accepts old name for compatibility.)

[OTHER CHANGES]

* Fixed some bugs.
* Added GloBash -- Global facility for Bash (globash.rc).
* htags: Now creates bless.sh command when the -S option is specified.
* htags: Added configuration variables prolog_script, epilog_script, show_position,
  position_begin, position_end and icase_path.
* htags: Added path name search facility.
* htags: Now locates dbpath like global(1) does.
* htags: Now shows additional information on the browser's status bar.
* gtags: The -i option now locate tag files among candidate directories.
* global, gtags: Makes icase_path always enable in Windows32 environment.
* global: New -T(--through) option.
* gtags, htags: New --gtagsconf option.
* gtags.conf: Added 'htags_options' variable.
* global.texi: Added descriptions about vim+Global and GloBash.

Version 4.0.1 - September 26, 2000

* htags: Shut a security hole in global.cgi.

Version 4.0 - September 3, 2000

[INCOMPATIBLE CHANGES]

* htags: Htags(1) no longer makes frame tag (<FRAME>...</FRAME>) by default.
  It is to reduce dependency on javascript.  Instead, you can use the new
  -F (--frame) option to make it.
* htags: Removed the -h option. Instead, htags(1) displays the path of source file
  at browser's status bar by default if javascript is enabled.
* global.conf: Removed variables 'bgcolor', 'text', 'link', 'vlink' and 'alink'.
  Instead, Added 'body_begin', 'body_end', 'table_begin' and 'table_end'.
  You can write removed items into the 'body_begin' directly.
* nvi-1.79-gtags.diff: New patch for nvi-1.79.
  Removed the ':rtag' command. Instead, please use ':tag -r' command.
  Now you can use all commands and options of global(1) from nvi editor
  except for -c (--completion), -i (incremental), -p (print-dbpath),
  -v (verbose), --help, --version.
* gtags.el: Changed the key assignment to avoid conflicting with other
  key bindings. If you hope old style key assignment, please include
  the following code to your $HOME/.emacs:

(setq gtags-mode-hook
  '(lambda ()
        (define-key gtags-mode-map "\et" 'gtags-find-tag)
        (define-key gtags-mode-map "\er" 'gtags-find-rtag)
        (define-key gtags-mode-map "\es" 'gtags-find-symbol)
        (define-key gtags-mode-map "\eg" 'gtags-find-with-grep)
        (define-key gtags-mode-map "\eI" 'gtags-find-with-idutils)
        (define-key gtags-mode-map "\el" 'gtags-find-file)
        (define-key gtags-mode-map "\ec" 'gtags-make-complete-list)
        (define-key gtags-mode-map "\C-]" 'gtags-find-tag-from-here)
        (define-key gtags-mode-map "\eh" 'gtags-display-browser)
        (define-key gtags-mode-map "\C-t" 'gtags-pop-stack)
        (define-key gtags-mode-map "\e." 'etags-style-find-tag)
))

[OTHER CHANGES]

* Fixed some bugs.
* Now long name options are available.
* global: Improved performance when the -g option is specified.
* global: New -I (--idutils) option.
* htags: New configuration variable 'table_list'.
* htags: New -S (--secure-cgi) option which enables centralized cgi script.
* htags: Added new anchors to the file index.
* htags: Added new frame for search when the both of -F and -f option are
  specified.
* Gctags: Now 'extern' statement is ignored to detect function definition
  like the following: 'extern type function() { ...};'
* Removed gozilla(1) and systags(1) from the package.
* gtags.el: New commands 'gtags-find-with-idutils' and 'gtags-visit-rootdir'.
  Renamed 'gtags-find-pattern' to 'gtags-find-with-grep'.
  (The 'gtags-find-pattern' is left only for compatibility.)

Version 3.55 - December 23, 1999

* Fixed a serious bug.
  Htags(1) in Global-3.54 has a serious bug:
  '*** HTAGS(1) MAY REMOVE ALL FILES IN THE CURRENT DIRECTORY IN A ERROR CASE. ***'
  If you are using that version of htags(1), please replace it with the later or earlier
  version. Only 3.54 has the bug.
* Improved performance when the -g and -s option is specified.

Version 3.54 - November 3, 1999

* Fixed a few bugs.

Version 3.53 - September 17, 1999

* New option --version for each command.
* gtags.el: Now mini-buffer history and default tag for input tag name are available.

Version 3.52 - August 29, 1999

* Fixed a few bugs.

Version 3.51 - August 26, 1999

* Added support for cygwin 32 system.

Version 3.5 - August 23, 1999

* Fixed a few bugs.
* Added support for C++ language.
* Gtags.el now supports XEmacs.
* New command gtags-find-file of gtags.el.
* The -f option of htags(1) now can be used with the -s option.
* Gozilla(1) now supports new protocols: https, ftp, nntp, mailto and about.
* Gctags(1) now can parse '#ident' and '#warning'.
* Gctags(1) now picks up definitions like 'C_LABEL(x)' and 'SYMBOL_NAME(x)'.
* Quoted char '\' is now available in the global.conf.
* You can change sort and sed command using variables in the global.conf.
* Added support for Windows 32 system.

Version 3.44 - March 22, 1999

* Fixed a few bugs.
* New configuration variables: full_path and normal_suffix in gtags.el.
* Gctags(1) now picks up NENTRY() in assembly source.

Version 3.43 - January 20, 1999

* Fixed a few bugs.
* Gtags.el now does not invoke gtags-make-complete-list command automatically.

Version 3.42 - January 8, 1999

* Fixed a few bugs.

Version 3.41 - December 10, 1998

* The support for multilingual nvi-1.79 ended.

Version 3.4 - November 8, 1998

* Htags(1) can now make unlimited nested directory index.
* New btreeop(1) -L2.

Version 3.3 - September 13, 1998

* Fixed a few bugs.
* Improved handling of #if block in gctags(1).
* New gctags(1) option -b, -n and -w.
* New command gtags-display-browser in gtags.el.

Version 3.2 - August 31, 1998

* Added support for multilingual nvi-1.79.
* Added support for nvi-1.66.
* The support for nvi-1.34 ended.

Version 3.1 - August 4, 1998

* Fixed a few bugs.
* Added support for Java language.
* New htags(1) option -h.

Version 3.01 - July 5, 1998

* Fixed a few bugs.
* Now the -f option of global(1) accepts multiple files.

Version 3.0 - June 25, 1998

* Fixed a few bugs.
* New configuration file global.conf.
* Added compact format for tag files.
* New gtags(1) option -c.
* New htags(1) option -c.
* The -c option has been removed from gctags(1).
* New gctags(1) option -n.
* New global(1) option -t.
  This option assumes use for two variables: tagprg and tagprgonce
  in Elvis editor 2.1g-beta or later.

Version 2.24 - January 20, 1998

* Fixed a few bugs.

Version 2.23 - January 13, 1998

* Fixed a few bugs.

Version 2.22 - December 26, 1997

* Gctags(1) now picks up references like 'call EXT(xxx)' or 'call _xxx'
  in assembly source.

Version 2.21 - December 11, 1997

* Fixed a few bugs.

Version 2.2 - December 7, 1997

* Changed regular expression to POSIX (extension) instead of perl's one.
* The -b, -c, -l and -p options have been removed from btreeop(1).

Version 2.11 - November 7, 1997

* Fixed a few bugs.

Version 2.1 - September 20, 1997

* The -e and -s options has been removed from gtags(1). Now it's default.
* New environment variables MAKEOBJDIR and MAKEOBJDIRPREFIX for global(1).
  It works like BSD make.
* Fixed a few bugs.
* New command gozilla(1).
* New global(1) options -g, -s, -i, -l and -v.
* New gtags(1) options -i, -v and -o.
* Added new command gtags-find-symbol and gtags-find-pattern for gtags.el.

Version 2.0 - July 7, 1997

* Fixed a few bugs.
* Added support for emacs editor (gtags.el).
* New htags(1) option -n and -f.
* New links for include files in the hypertext generated by htags(1).
* New global(1) option -f.
* New btreeop(1) -L.

Version 1.9 - April 21, 1997

* Fixed a few bugs.
* New btreeop(1) option -A and -D.
* New htags(1) option -l.
* Added an environment variable TMPDIR.
* Added support for nvi-1.79.

Version 1.81 - April 14, 1997

* Fixed a few bugs.
* Added support for 'obj' directory on BSD build system.

Version 1.8 - April 5, 1997

* Fixed a few bugs.
* New global(1) option -c.
* New htags(1) option -d and -w.

Version 1.7 - February 17, 1997

* Fixed a few bugs.
* The frame.html has been removed from the output of htags(1).
* Major speed improvements for htags(1).
* New htags(1) option -a, -v and -t.
* New gtags(1) option -s.
* New script systags.sh.

Version 1.6 - January 21, 1997

* Fixed a few bugs.
* Added support for nvi-1.76.
* New global(1) option -a: absolute path name.

Version 1.5 - December 12, 1996

* New command htags: Hypertext generator.
* Fixed a few bugs.

Version 1.4 - October 26, 1996

* Added support for yacc source code.

Version 1.3 - July 28, 1996

* Added an environment variable GTAGSLIBPATH.

Version 1.2 - June 7, 1996

* Added support for nvi-1.34.

Version 1.1 - May 2, 1996

* Fixed a few bugs.

Version 1.0 - April 21, 1996

* Initial release.
