Xrefactory s.r.o.







Xrefactory Java: [ Download | Change Log ]



Xrefactory Evolution


This page summarizes in chronological order modifications made during the evolution of Xrefactory for Java software.


Version 1.6.10


- A forgotten license check has been removed.




Version 1.6.9


- Fixed problem of compilation of source with gcc4.




Version 1.6.8


- The first free release.



Version 1.6.7


- Fixed problem with removal  of unused parameter during 'Turn virtual
method to Static'.

- Fixed problem with pretty printing in a browser windows when a field
has the same name as a method.



Version 1.6.6


- Database  files are  more compact  because unnecessary  white spaces
have been removed.

- Faster  update when  only small  number of  files has  been modified
(this is the case during majority of refactorings).

- Faster Extract Method and renaming of local variables in Java.

- Fixed the problem with browser opened in multiple Emacs frames.

- 'Turn  Dynamic into Static' now  removes the new parameter  if it is
unused.  However, the case of recursive calls is still unhandled.

- Fixed the problem with the compilation under FreeBSD 5.



Version 1.6.6


- Database  files are  more compact  because unnecessary  white spaces
have been removed.

- Faster  update when  only small  number of  files has  been modified
(this is the case during majority of refactorings).

- Faster Extract Method and renaming of local variables in Java.

- Fixed the problem with browser opened in multiple Emacs frames.

- 'Turn  Dynamic into Static' now  removes the new parameter  if it is
unused.  However, the case of recursive calls is still unhandled.

- Fixed the problem with the compilation under FreeBSD 5.



Version 1.6.5


- OS/2  support  for  the  xref-any  distribution  (thanks  to  Dmitry
Kuminov).

- Fixed the problem with imports in dead code detection.

- Fixed the problem when the  symbol search dialog did not propose the
list of project symbols.

- Fixed the  problem  with truncation  of  lines  making  that in  the
extract method  dialog a part of  the profile of the  new method was
invisible.

- Fixed  the  problem  with  buffer  switching  after  two  successive
completion dialogs.

- Fixed the problem  when an  inner interface  needed  to  be declared
static before moving.



Version 1.6.4


- Refactoring problems  with  UTF-8 and  UTF-16  encodings  have  been
fixed. Support for EUC and SJIS encodings has been implemented.

- Ordering of  Java fully  qualified type  name completions  has  been
improved. Exact matches now appear at first positions.

- Problem with Extract Method  refactoring when the region is selected
from bottom to top has been fixed.

- Few problems in syntax  highlighting of completions under Emacs have
been fixed.



Version 1.6.3


- Xrefactory correctly updates tags before refactoring also in C.

- the  option  'Save files  and  update tags  before refactorings'  is
turned off under Emacs/XEmacs.

- problem  with  adding/removing/moving  of parameter  of  a macro  is
fixed.

- Emacs/XEmacs dialogs should work under an alphanumerical console.

- under   Emacs/XEmacs,   the  C-g  key   combination  pressed  during
creation/update of  tags (or  when precomputing a  refactoring) will
kill extern task and clean-up temporary files.

- problems  with  refactoring dialog  after a  failed  refactoring are
fixed.

- problem    with   non-generating  of   correct  imports   in  moving
refactorings is fixed.

- problem  with  undoing  of  'Move  Class  to New  File'  refactoring
fixed. Also  a failed  refactoring does not  create an  empty buffer
anymore.

- problem when progress bar went beyond 100% fixed.

- few more non-specific bugs in refactoring fixed.



Version 1.6.2


- fixed problem with update of references from header files.

- completion after  left parenthesis  displays also  methods  with  no
parameters.



Version 1.6.1


- problem with first update after create Tag file fixed (sometimes the
first update has reparsed too many files).

- fixed problem with formatting of completions when line truncation is
turned off under Emacs.

- fixed problem with 'move class' refactoring applied on interfaces.

- fixed few SPARC related problems (especially compilation with gcc).

- fixed problem with generation of HTML for large projects.

- fixed small problem with macro expansions in C preprocessor.

- jEdit interface works with both jEdit 4.1 and jEdit 4.2.




Version 1.6.0


- Completions may be case insensitive removing the necessity of typing
upper   case  letters.   For   example:  getba_   is  completed   to
getBackground if this is the only appropriate completion.

- The Emacs interface has been entirely reimplemented. It now supports
multiple  windows (protecting  those opened  by the  user); supports
basic version  control systems; uses left  mouse button equivalently
to middle button and provides refactorings in a single function. The
new interface will require a  little effort from older users, but it
should be more natural than the old one.  For beginning: <escape>
closes dialogs and ? proposes helps.

- Parameter completions  for  Java methods.  Completion  of an   empty
string at place where a parameter is expected shows method profiles.

- Symbol retrieval functions  accept shell like expressions containing
wild character * [ ] and ?.

- Wild characters * [ ] and ? can be used also in input files, include
directories, classpath, sourcepath and javadocpath.

- Input  files  can  be  entered  using  paths  relative  to   project
directory.

- Include directories can be entered using paths relative to currently
parsed file.

- -prune option can be used to prune unwanted directories when looking
for input files.

- Completion of fully qualified  type names in Java can be customized.
It  may propose  all  classes from  jar  archives, current  project,
classpath and sourcepath.

- Moving refactorings  can be  customized to  move  also  commentaries
preceding the moved definition.

- New communication  protocol between  Emacs and  xref task  has  been
implemented.  This should considerably  speed up  refactorings under
MS-Windows systems.

- New  editing function  has been implemented  under Emacs. It  maps a
user defined  macro on  all occurrences of  a symbol  (dangerous but
useful).

- 'Last  Compile & Run' macro  under Emacs memorizes  the last command
per  project. This is  more natural  when working  simultaneously on
several projects.

- The .xrefrc  configuration file  can be  stored in  a  user  defined
directory.



Version 1.5.10


- Fixed problem when nested class was not inherited from an interface.

- Extraction is adding newline when region does not finish by it.

- Fixed  problem  when class  tree  items  were  not linked  to  sources
correctly.

- Option -source  indicating used version of  Java (i.e. 1.3  or 1.4) is
added for compatibility with javac compiler.

- Problem  with  evaluation  of  long  constants  in  pre-preprocessor's
constant expressions fixed.



Version 1.5.9


- New  browsing function  allows  to  push all  references  of a  symbol
entered  simply by  its name.  This  function was  requested by  ctags
users.

- In  'Search in  Tag  file'  dialog the    key is  automatically
browsing Javadoc in case that definition reference is not found.

- Fixed  possible problem  in  Extract-Method in  presence of  try-catch
statements.

- Fixed problem with inserting parameter to C function declarations.

- Better error recovery has been implemented in C parser.



Version 1.5.8


- Improvements  in completion  user interface.  Those  improvements make
completion auto-focus very natural to use.

- Several   implementation   constants    were   increased   in   binary
distributions which  are now compiled with XREF_HUGE  flag. This gives
possibility  to  index  large  files  to users  having  only  personal
licenses.

- Variable  __BASE is now  predefined in  Xrefactory environment  and is
referring to  current project  name. You can  use ${__BASE}  string in
your .xrefrc file instead of current project (directory) name.

- The 'Search Symbol in foreign Tag file' function does not take default
name of foreign  project from .xrefrc file.  It is  now asking for the
name interactively.

- An  improvement in 'Extract  region into  function' refactoring  for C
language. The improvement concerns better handling of & operator.

- Problem with  '-stdop' option is  fixed. The option is  also available
under more mnemonic name '-include <file>'.

- Problem  with  '-javadocpath'  option  in  combination  with  non  JDK
javadocs in HTML generation fixed.

- Problem of browsing  javadoc of a method having  parameter of a nested
class is fixed.

- In the menu as well as in  the documentation we are now using the word
'Parameter'  instead  of  'Argument'.  The  new  term  is  conform  to
M. Fowler's terminology.



Version 1.5.7


- The problem with empty path in -sourcepath option has been fixed.

- Emacs keeps focus while  browsing Javadoc with external viewer. This
makes browsing more natural.

- Browsed URL  now starts with  file:// prefix when browsing  files in
local file system.

- New  registration function  has been  implemented in  Emacs. Windows
users do not need to edit _xrefrc file manually anymore.

- The Emacs window containing completions is now resized proportionaly
to number  of completions. The  minimal size can be  customized with
xref-window-minimal-size  variable.  If  you  do not  like  the  new
feature, set this variable to negative value.



Version 1.5.6


- a  customizable variable  'xref-auto-switch-to-completion-window' is
available under Emacs/XEmacs.  When this  variable is set to t, then
after a  completion the keyboard focus is  automatically switched to
new window  containing completions.  In this window  user can select
completion  either by  cursor  motion or  by  continuing typing  the
identifier.  The completion is definitely selected with <return>.

- key  binding in  symbol  resolution window  has  been changed.   Now
<space> is bound to a  function selecting only one item and browsing
definition  reference.    The  <Ins> key  is  bound   to  function
selecting/unselecting an  item (formerly bound to  <space>). 'q' key
is bound to  function closing the window and  poping references.

- the  window showing  results of  search  in tag  file has  automatic
focus.  In this window <space> inspects the definition of the symbol
and 'q' closes the window  and returns to initial position in source
code.

- optionally  minibuffer completion  works  for "Search  in Tag  File"
functions. In order  to get minibuffer completion works  you need to
set   'xref-allow-completion-in-tag-search-prompt'  (a  customizable
variable) to t.

- fixed problem with JNI interface.

- fixed problem in "Turn static  method to dynamic" in situations when
the parameter needs to be replaced by an explicit 'this'.

- fixed    problem   with    '-fastupdate'    in   combination    with
'-exactpositionresolve'  option. The latest  version did  not marked
that in fact a full update was performed in such situation.

- fixed bug with evaluation of C preprocessor conditionals containing
undefined symbols.

- newline character in string constants is tolerated.

- definition of an empty structure (having no field) in C is tolerated.

- -I<directory> option  is allowed  with  the  same  semantics
as  -I <directory>.




Version 1.5.5


- Move class refactoring moves top-level and nested classes.

- Move (rename) package moves also corresponding directories.

- File names are considered case sensitive also under MS-Windows.  The
option '-filescaseunsensitive'  can be used  to change them  to case
unsensitive.

- A function deleting useless project is available under Emacs.

- Generation of HTML documentation can be launched directly from Emacs.



Version 1.5.4


- Improvements  in project  creation macro.   Projects  generated with
'Project->New'  menu  item are  now  more  complete  and cover  more
complex projects.

- Possibility to  put multiple project  names for same  options.  This
allows  correct  project   auto-detection  when  project  files  are
accessed through different names (via symbolic links, for example).

- Extract method is now proposing new method definition and invocation
instead of generated header and footer. It seems to be more natural.

- When  renaming or  adding/removing  parameter of  a virtual  method,
Xrefactory now proposed whole related definitions to be processed at
once. In practice  it means that you can  rename all methods related
through  inheritance  and  interface  implementations  at  once.  At
difference  to previous  versions  related classes  are computed  as
transitive  closure   not  only  direct  super   classes  and  their
subclasses.

- Add  parameter now checks  for possible  collision of  new parameter
with symbols from outer scope.

- Turn  static to  dynamic  now checks  for  the correct  type of  new
parameter. It also checks for accidental clash of new parameter with
symbols from outer scope.

- Refactorings now  check and report problems  with method invocations
of form super.method() (when such a problem occurs).

- Completions  in  Java  now   display  array  variables  and  methods
returning  an array  in  format 'Class[]  foo()'  instead of  'Class
foo()[]'.

- Wrong displaying of completions containing $ sign fixed.

- Completions  now  display  access modification  (public,  protected)
every-time (even when completing only appropriate symbols).

- Optionally a  completion completing single string  will close window
with list of previous completions.

- An item 'run this' has been  added to (X)Emacs IDE menu. It will run
Java  virtual machine  with currently  editing class  as  main class
argument.

- Improvements in compile-run macros.



Version 1.5.3


- Xrefactory  is  now  capable  to read  majority  of compressed  jar
archives.

- New function  'Search Definition in Tag File'  was implemented. The
function is scanning tag file  and reporting all symbols defined in
your project and matching searched string. In difference to 'Search
symbol in Tag  File' this function returns only  symbols defined in
your project, not symbols defined in headers or jar archives. Also,
only the name of the symbol is matched against the searched string,
not its profile.

- Delete parameter refactoring is checking for accidental deletion of
used parameter.

- Encapsulate  field  is  now processing  only  those occurrences  of
field,  where  the  field  becomes  inaccessible  after  making  it
private.  New refactoring 'Self  encapsulate field' was added. Self
encapsulate field replaces all  occurrences of the field by get-set
methods (which  was in fact  the original behavior  of 'Encapsulate
field').

- When an argument manipulation refactoring (insert, delete, reorder)
is invoked on a  constructor, Xrefactory automatically resolves the
ambiguity: Constructor <-> Class in favor of constructor.

- Improvements in project creation  Emacs macro and several bug fixes
in compile-run macro.

- Problem with  '' in URLs when generating  HTML documentation under
MS-Windows has been fixed. You  can now generate HTML under Windows
and then move it to a Unix server.

- New options '-htmlcutsuffix' and '-htmllinenumlabel=<label>' are
available. Using them  you can generate Java html  files fitting to
JavaDoc from Jdk 1.4.

- Indexing of  large projects should be faster  thanks to new hashing
function.

- Xrefactory now handles correctly C macros with ellipsis, such as:
#define DPRINF(format, ...) fprintf(debug, format, __VA_ARGS__)
and #include followed by a macro. Those constructions are allowed
in ANSI C'99 standard.



Version 1.5.2


- pull-up  / push-down method with corrections  of 'this' references.

- completion works also  for explicit constructor invocations (in the
first   line   of  a   constructor)   after   'this'  and   'super'
keywords.   Completion   shows    all   possible   parameters   for
constructors.

- "Rename  symbol" refactoring  checks for accidental  application on
class   or  package   and  referring   you  to   specialized  forms
'xref-rename-class or 'xref-rename-package.

- Options in .xrefrc which  are enclosed in double-quotas can contain
newline character.  Thanks to this it is now possible to enter more
complex scripts for compilation and program runs. If compile or run
option contains  more than  one line, a  temporary shell  (or .bat)
script is created and executed.

-  Options  can contain  special  predefined  variables for  entering
problematic characters:  ${dq} for double-quotas;  ${dl} for dollar
sign; ${pc}  for percent sign and  also ${nl} for  newline (even if
newline can now be entered directly in strings).

- The word assert is by  default not recognized as a keyword. This is
due to compatibility reasons with  programs written in java 1.3 and
sooner.  By  default,  you  can  use  variables  or  methods  named
'assert'.  If your program is written for java 1.4, then you should
put option  "-java1.4" into your  .xrefrc. This option  causes that
the word assert  will be recognized as keyword  and assert commands
will  be correctly  processed. However,  you  will not  be able  to
define methods named assert anymore.

- Maximal number of listed completions is now customizable.

- numerous small bug-fixes.



Version 1.5.1


- bug fix in indexation of .jar archives.

- possible   confusion  when   class  is  imported  by  both  general
import-on-demand and single-type-import is fixed.

- multiple  Emacs  frames  are  now correctly  supported.  It is  now
possible  to  browse, complete,  etc  independently  in all  opened
frames. It  is also  possible to  fix a list  of references  in one
frame and link them to source code displayed in another frame.

-    in   nearly   all    Xrefactory   dialogs    (completion   list,
search-in-tag-file, symbol resolution dialog  and in class tree) it
is  now  possible  to  inspect  definition  or  browse  Javadoc  of
displayed  symbols.  This  function is  bind to  either  button2 or
Shift-button2.

- function  'search-in-foreign-tag-file' was added. It  is a shortcut
allowing  to scan  Tag  file  of another  project  without need  to
switching to it. This function switch to another project, scans its
tag file and  then switch back to original  project. It is supposed
that the  foreign project contains  some large database  of symbols
(probably a huge .jar archive indexed).

- Shift  left-arrow and Shift  right-arrow keys are binded  to scroll
left and right in completion  and reference list buffers. This will
allow Emacs users  to see whole completions (source  lines) if they
are longer than current screen.

- a possibility to add  general import (i.e. import-on-demand with .*
at the end)  directly from comletions has been  added to completion
pop-up menu.

- multiple invocations of  xref-completions will scroll down the list
of proposed completions (if longer then size of its window).



Older changes available!