Xrefactory s.r.o.
|
-
"Xref-Speller" has been renamed to "Xrefactory".
-
Class Tree. It is now possible for Java users to show
curent inheritance hierarchy in separate window or in separate frame.
-
Automatic update of completion database.
Intellisense code completion database is updated after any modification of a
source file.
In particular it means that it is no longer necessary to recompile
or update tag file in order that changes appear in completions.
-
Refactoring's Undo. It is now possible to undo a suite
of refactorings. The undo is built upon existing Emacs undo mechanism,
but it is able to switch buffers at beginnings of refactorings.
-
Several improvements in project management.
-
A safety check detects name clashes introduced by
renaming.
-
Many new browsing functions are available. For example:
-
Local motion in source. Using those
functions you can simply move to the
previous (next) reference of a symbol without need to push its references
onto the reference stack.
- Repushing of lastly poped references.
- Pushing through class tree. This allows
more fine selection of references to browse also for class fields,
not only for mehods as it was previously. This may be very usefull for
"push down field" refactorings.
-
Possibility to kill running xref process.
If something is going wrong
you can kill the extern process during creation or update of tag file.
You can also kill the xref-server process if you feel that it is running
into an inconsistent state (the next browsing action will restart it).
- Filters can be applied on showed reference list.
There are 4 filter levels for
now. Their meaning depends on the type of the browsed symbol. If the
browsed symbol is a variable the filter levels are following.
- Level
3: only definition and declarations are shown.
- Level 2: as level 3
plus l-value usages.
- Level 1: as level 2 plus usages when address of
the variable is got.
- Level 0: all references.
If the browsed symbol
is a type then the filter levels are:
- Level 3: Only definitions and
declarations are shown;
- Level 2: as level 3 plus usages in the EXTENDS
and IMPLEMENTS clauses (meaningfull only for Java);
- Level 1: as level
2 plus all usages in the top level scope (global vars and function
definitions);
- Level 0: all references are shown.
- When pushing references of an ambiguous symbol an additional
dialog is offered to resolve the symbol manually.
This can happened
either for symbols inside a macro body or for Java virtual methods. In
the case of Java the 'Push references' action do not show the dialog
if there is only one 'usage appropriate' reference. Others pushing
actions show the dialog each time when there is an ambiguity. A
'usage appropriate' reference is the method definition if you start
browsing on a method invocation.
- Filters are applied also
on the symbol resolution dialogs. If
the dialog for manual symbol resolution is shown, you can filter the
listed symbols by following filters (remember that the list is
generated relative to the symbol you have chosen to browse and that
this dialog occurs practically only in resolution of Java virtual
methods):
- Level 0: Only references of methods having the same profile
as the selected one and beeing from a class related to the class of
the selected one.
- Level 1: All symbols having the same profile.
- Level 0: All symbols of the same name.
- New environment variable JDKCLASSPATH is used for setting '.jar'
archives implicitly used by the JDK tools. For example, jdk1.2 do not
require that the file 'rt.jar' is listed in the CLASSPATH variable,
however this file is used by compiler and interpreter. In order to
permit Xrefactory using those implicit archives, you have to list
them in the JDKCLASSPATH variable. The format of the JDKCLASSPATH
value is the same as of the CLASSPATH variable. For example on most
linux/unix systems using jdk1.2.2 from Sun you should set this
variable on the "/usr/local/jdk1.2.2/jre/lib/rt.jar" value.
Note:
You do not need to set JDKCLASSPATH if using JDK from Sun Microsystems,
only if using JDK from some other provider not having the same
distribution structure.
- A new option -jdkclasspath is available to override the
JDKCLASSPATH variable from command line (see also the previous point).
- New options are available for generated HTML files. Options
'-htmlcutpath=', '-htmllinkcolor=' and '-htmlnounderline'
control respectively pathes to be cutted when generating file
hierarchy under -htmlroot, set the color of generated links and avoid
links to be underlined.
- Xref now handles situations when C pre-processor macro is using
the ## gluing construction and you browse a symbol which is glued to
some other.
- Under Emacs when you call a browsing function with cursor at the
begining of the buffer, then references on this buffer are pushed
rather than the references of the first symbol of the buffer. If you
wish to browse all the places when the current file is included, just
go to the begining of the file and call any reference pushing
function.
- Full integration with built-in C pre-processor is implemented.
The include-included relation is stored in cross references and can
be browsed when positioning the cursor on the '#include' keyword.
- The semantics of '-update' option is changed. From now it will
reload not only modified files, but also (recursively) all files
including those files. A new option '-fastupdate' implements the old
fashioned update (re-parsing only modified files).
- The code completion function as well as symbol resolution now
works when writing a macro body in a header file (meaning also when
the macro is not invoked in this header file).
- A possibility of multiple passes through the sources is
implemented. The '-pass' markers (used in a '.xrefrc' file) allow
that the same source file can be processed for different initial macro
settings and that all the references are collected in a single TAG
file. More info in the 'xrefrc' manual page.
- Two new options controlling generated HTML are implemented. The
'-htmllinenums' causes that lines will be numbered and the
'-htmlnocolors' causes that keywords will not be highlighted. The last
one can considerably decrease the size of generated HTML files.
- A possibility to set "dynamically" input source files is
implemented. If your .xrefrc file contains a shell command enclosed
in `` apostrophes, the command will be executed and its standard
output will be interpreted as names of files to process. Usually you
will use this with the 'find' unix comand.
- Ordering of references according to l-value and r-value usages is
no more performed in on-line browsing. From now (as it was before the
version 1.0), the definition goes first, than go declarations and
finally all other usages ordered by their positions. If you are
interested in browsing only l-value usages, you should list all
references and check the 'usage character' (the first char of the
line).
- A symbol retrieval function is available under
Emacs/XEmacs editors. It permits to search a symbol name in the whole
TAG file.
- It is now possible to compress generated HTML files.
Two options '-htmlzip=' and '-htmlsuffix=' can be
used to set respectively the zipping command and
the suffix of zipped files.
- Automatic extraction of a region into a new
function/macro is now
possible under Emacs/XEmacs. The new function/macro is created from
the selected region by adding an automatically generated header. When
creating the header, Xrefactory takes into account full static
analyse of local variable life-times.
- Xrefactory distinguishes between l-value (for example: x=5; &x;)
and r-value references (for example: f(x)) of a variable. References
in listings are ordered by descending "importance": the definition
goes first, then go declarations, l-value usages and finaly r-value
usages.
- The completion list is sensitive on mouse clicks under
Emacs/XEmacs. Middle button click permits you to inspect the
definition place of the symbol, right button selects the symbol for
completion.
- The completion and reference lists are now colored under
Emacs/XEmacs. Coloring can be switched off by editing the
emacs/xrefin.el configuration and key-binding file.
- The '.xrefrc' file can now contain names of source files (or
directories with the '-r' option). This information is used by the
new Emacs/XEmacs macro 'xref-create-refs' (invocable from menu bar as
'Create Xref Tags File'). This macro re-creates the cross-reference
file from scratch.
- Xrefactory now understands the YACC-file format
(suffix '.y').
It understands both grammar and C semantic action parts.
- In HTML output it is possible to generate horizontal bars
separating function definitions. Bars generation is triggered by the
option '-htmlfunseparate'.
- The '-brief' option is default from now. You can switch it off
with the '-nobrief' option.
- Argument manipulation macros are available in Emacs/XEmacs.
They provide global source manipulations such as adding, deleting
and exchanging
arguments of a function or a cpp-macro.
- Searching of an identifier in context sensitive
completions is available under Emacs/XEmacs.
This permits to find for example all functions
usable in the current context with name containing given string or
to find all applicable methods (direct or inherited) containing given string.
- New option '-r' is available. If a directory name is given to xref
as argument and the '-r' option is present then xref searches
recursively all files and subdirectories of that directory.
It process
all files having the '.c' and '.java' suffixes (note that '.h' are
useless as they are processed when included from '.c').
- For Java users the option '-classpath <CLASSPATH>'
is now available. When present it overrides the value of the CLASSPATH
environement variable.
- Browsing of corresponding #if((n)def)-#elif-#else-#fi directives
is now possible. When positionning the cursor on an #elif, #else or #fi
directive you can move directly to the corresponding #if((n)def)
directive.
- Xref is now capable to generate HTML files from your source files.
When invoked with
the '-html' option it converts source files into HTML format. Output
files are stored in file hierarchy under the directory specified by the
'-htmlroot=<dir>' option. The '-htmltab=<number>' option can be used
to set tabulator value in output files.
- 'xrefinstall' script can be used to install Xref into system
directories of the computer.
- New option '-refnum=<number>' is available. It causes that the
reference file is splitted into the <number> smaller files. If
the <number> is greater than 1 then the file specified by the
'-refs <file>' option is interpreted as directory name, where
reference files will be stored.
When Xref searches references of a given symbol, only one of
reference files is read. In consequence '-refnum' option makes
browsing much faster for large projects. It is recomennded to
specify the <number> proportionally to the size of your project
(aproximately one cross reference file per 5 000 lines of code).
The default value is '-refnum=1'.
NOTE: If you change the 'refnum' constant you have to re-CREATE your
cross reference files.
- The possibility to list all references of given symbol is now
available under Emacs/XEmacs. The list is created in a separate
window, each line contains the reference in the form
<file>:<line number>:<content of the line>. Selecting such a line
will move you directly to this reference in the source code window.
The new macro can be
invoked from the Emacs/XEmacs menu bar, or by the 'M-x xref-listCxrefs'
command.
- Personal '.xrefrc' file placed in user's HOME directory is the
preferred way of passing options to Xref.
- The 'Grey+' and 'Grey-' keys are released under Emacs/XEmacs.
You should use 'F4' and
'F3' keys instead. If you wish to continue using original
keys you have to edit 'xrefin.gel' file in your editor subdirectory
of Xref distribution and then run 'sh init' script.
- Xref now can read the 'classes.zip' Java archive file.
However it is still unable
to read compressed archives. If you are using some, you will need
to zip them with no compression.
- Semantics of the '-update' command line option changed! Now, the
'xref -update file1 ...' command do not only updates references
for the explicitly mentioned files 'file1 ...', but also for all
modified files mentioned in the cross reference file. For example,
the command 'xref -update'
will first read the cross references file, then it reparse
modified files. In practice it means that you can update cross
reference file by just typing the 'xref -update' command.
NOTE: You have to CREATE the cross reference file with the version
0.7 (and later) in order to make the '-update' option works
properly!
NOTE2: Only references of really modified files are updated. It
means that the 'include-included' relation is not taken into
accounts.
- If no input file is given xref provide no action! This is
different to previous versions, where the standard input was
scanned as being an input file.
- The directory structure for source distribution changed!
This concerns only users, using the 'xref-any' source
distribution. From now, the xref source distribution is placed in
the 'xref-any' directory, not in the 'xref' directory. The 'xref'
directory is then created automatically and it contains only the
distribution for the given platform (no sources). If you are
updating the source distribution from older revision, please
modify your path setting to this new configuration (it means
change the path '.../xref/xref' to '.../xref').
- New setup utility!
|