_____

Changelog findent

findent-4.2.0:
    pre1: fix insignifcant bug in free.cpp: change test if line is like:
          123&
    pre2: implement --ws-remred
    pre3: free.cpp: remove non-fatal bug in --align-paren
findent-4.1.3:
    pre1: relabel.cpp: add relabel support for module procedure
    pre2: disable --align_paren=1 for statements containing Hollerith
          constants.
          flags.cpp: --align-paren is now synonymous with --align-paren=1
                     --query-relabel is now synonymous with --query-relabel=2
    pre3: line_prep.cpp: add some comment
          
findent-4.1.2:
    pre1: docs.cpp: minor adaption
    pre2: Add old-DEC statements TYPE, ACCEPT, DECODE, ENCODE
    pre3: Add DEC's REREAD
          Add support for '#' in I/O parameter (DEC's direct access)
             e.g. read(3#20) x
          Support for the even older "'" cannot be done, 
              however see pre4
          Add support for & and $ next to * for label parameter in
           call list  (DEC) e.g: call sub(x,&20)
          Add flag --changelog
          Bring wfindent.bat more or less up to date
          Fix some typo's in ChangeLog
    pre4: line_prep.cpp, lexer.l: recognize u'n next to u#n 
              in for example READ(10'6) x
          recognise DELETE                 (INTEL extension)
          recognise FIND                   (INTEL extension)
          recognise REWRITE                (INTEL extension)
          recognise SELECT RANK and RANK
    pre5: test/test20.sh: add test for SELECT RANK
          fix simplemake.sh, to create .inc files and compile relabel.cpp
             add a direction to create and place the man page
    pre6: implement refactoring END INTERFACE statements
    pre7: implement refactoring END TYPE statements
    pre8: add --refactor_end as synonym for --refactor_procedures,
          the latter is deprecated.
          Change some variable names accordingly.
    pre9: implement -kd, --indent_continuation=default
          implement --align_paren=1
    pre10: wfindent: add --safe before other flags for findent
           flags.cpp, flags.h, docs.cpp: add flag --safe
           wfindent.bat: allow double-hyphened flags, use --safe
    pre11: wfindent only handles regular, readable, writable files
           simplemake.sh: add instructions for installing wfindent
    pre12: fixed  Bug: end procedure not indented (#7) 
    pre13: fortran.cpp, parser.y, prop.h: simplified check if statement is
           executable statement
findent-4.1.1:
    pre1: restored some parts of doc/README
    pre2:fix gedit/findent.py (get_location() does not work any more)
         doc/README: minor changes
    pre3: lexer.l, lineprep.{h,cpp}, pre_analyzer.{h,cpp}, configure.ac
          replaced std::vector and std::stack by std::deque
          configure.ac: check for all used header files
    pre4: free.cpp, fixed.cpp, docs.cpp: -l0 and -l1 now also work in fixed
          removed bug with -l0 and free
          relabel.cpp functions.cpp: take care of labels like 010.
    pre5: some minor fixes in documentations
findent-4.1.0:
    added relabel function:
      --relabel[=n1,n2] --relabel-reset=0|1 --query-relabel=0|1|2 
findent-3.1.8:
    gedit_external.inc: change /bin/bash into /bin/sh
    Makefile.am: change .o in .$(OBJEXT)
    functions.(cpp,h}: remove firstchars(), replace by
      std::string.substr()
    pre_analyzer.{cpp,h}, fortran.cpp: remove first parameter from analyze()
    flags.cpp, fortran,cpp: add '// fall through' to quiet compiler
    Changed fortran.vim: no forced window-width for .f90,
      no margins for .f
    Added copyright to most of the files
    src/Makefile.am: change $? to appropriate filenames
       combine rule for parser.cpp and parser.hpp
    src/parser.y: better lay-out
    Ignore some flags in env FINDENT_FLAGS eg: -q -h
    Better layout for manpage and help output.
findent-3.1.7:
    change parser.h into parser.hpp. 
        bison-3.7 includes this in parser.cpp
findent-3.1.6:
    docs.cpp: document environment variable FINDENT_FLAGS
    vim/fortran.vim: add 
       let $FINDENT_FLAGS = ""
    vim/fortran.vim:
       remove ' 2>/dev/null', because not all shells understand this
    gedit/findent.py: change <ctrl><alt>f into <ctrl><alt>i
    gedit/gedit.plugin: add copyright
findent-3.1.5:
    parser.y: recognize also (non-standard):
      END FUNCTION(something)
      END SUBROUTINE(something)
      END PROCEDURE(something)
      END PROGRAM(something)

    Correct bug when parsing 'TYPE isname' and 'CLASS isname'
    The lexer returned resp "TYPEIS" and "CLASSIS" which should
    only be the case when 'IS' is followed by '('. (ticket 9)
findent-3.1.4:
    adapted some debian stuff
    docs.cpp: added donations entry in manpage 
    parser.y: recognize MODULE PROCEDURE SGAMMA, DGAMMA  (ticket 8) 
    parser.y, lexer.l: recognize NON_RECURSIVE
findent-3.1.3:
    changed /bin/bash back to /bin/sh for all scripts
       used during installation and running (because of openBSD)
    changed in test folder all uses of 'sed' to remove \r to 'tr'
       because I couldn't get sed to work property on all systems
    changed all uses of $< in Makefile.am's into $? (because of BSD make)
findent-3.1.2:
    correct spelling error in debian/control
    pre_analyzer.h: change IF etc into PRE_IF to avoid expansion
       of macro's IF etc.
    test/test18.sh: trivial change in sed command
    deps/makedeps: use awk in stead of bash. (bash-3.x does not
       associative arrays)
    test: some tiny things to make it work in macOS
    wfindent: check if gnu-getopt is available
    test: change all bin/sh into bin/bash (because of $'string' construct)
findent-3.1.1:
    added support for ESOPE (SEGMENT, ENDSEGMENT) as configuration
    parameter
    free-format: statement label can now contain an &
    bug fix: fortran.cp: preprocessor line with continuations where not
             handled properly
    configure.ac: changed testing for gfortran
    make check: start wineserver in first test to speed up checks.
       before ubuntu19.04 this was not necessary
findent-3.1.0:
    added simplemake.sh: compiles findent without 
      configure; make
    updated wfindent
findent-3.0.1:
    doc/README: add something about dependencies
findent-3.0.0:
    add generation of dependencies (flags --deps and --makefdeps)
    corrected a few minor bugs
findent-2.9.2:
    fortran.cpp, findentclass.cpp: fixed error in -ifixed -lastusable
       by taking in account the wizardbuffer 
findent-2.9.1:
    lexer.l: allow space after '#' in cpp preprocessor directive
findent-2.9.0:
    add 2018 features:
       CRITICAL [(...)]
       CHANGE TEAM (...)
       END TEAM [(...)]
    fortran.cpp:
       add CHANGETEAM for detection of moduleprocedure
       add CLASSIS etc to not usables for flag -lastusable
    test/Makefile.am test/test-compile.sh.in configure.ac:
       test for working gfortran:
         yes: 'make check' will compile sources
         no:  'make check' will not compile sources

findent-2.8.6:
    fix bug: wrong lastindent when last line is ENDIF,END etc.
       this bug was introduced in version 2.8.3
    adapt documentation for systems without sudo

findent-2.8.5:
    implemented openmp awareness

findent-2.8.4:
    major restructuring of the code.

findent-2.8.3:
    parser.y, lexer.l: changed detection of do-constructs
         DO , 
         DO , 100
      are now NOT classified as a do-construct
      explicit detection of DOWHILE and DOCONCURRENT

      Made detection of PROGRAM and FUNCTION more
      precise:
      for PROGRAM only allowed:
        PROGRAM IDENTIFIER <followed by whatever you want>
                           some old dialects permit this
        PROGRAM
               i.e: program without a name
      for FUNCTION:
        parameter list is now required

    makedeb: some enhancements. 
    debian.wheezy, debian.xenial: directories with deviations from sid

    findent.cpp, some tests:
       more generic refactoring of end statements. Now
       for example: 'end subroutine' will be refactored to
       'end subroutine mysub'. 
       Moreover: 'end subroutine mysub' will be changed into
       'end function myfun' if appropriate.

    test/Makefile: clean up

    bootstrap: copies most files from test to debian/tests

    test:
       adapted test scripts to run in test and in sadt

    findent.cpp, lexer.l:
       let the lexer find the string findentfix: in stead
       of a function in findent.cpp

    findent.cpp, lexer.l, parser.y:
       minor change in definition of lexer_set()

    test/test-compile.sh.in:
       improved output when test fails

    findent.cpp, lexer.l:
       add support for coco preprocessor

    functions.cpp, functions.h:
       moved some general usable string functions to functions.cpp

    test:
       added test18.sh for testing coco and cpp

    lexer.l, parser.y, findent.cpp:
       use lexer to scan preprocessor lines

    TODO: correct handling of continuation lines of preprocessor
       lines, especially coco continuations
       : clean up code, findent.cpp is too messy

    ~pre3
       streamlined .h files, added prop.h usage.cpp usage.h
       added flags.cpp flags.h lexer.h

       re-arrange code, to make it better readable.
       use list in stead of deque for (cur)lines

       added free2fixed

    ~pre4
       implemented a finite state machine in get_full_statement()
       change list and stack into deque

       implemented user-choosable continuation character

       cleaned up code

       made some optimizations

       adapted documentation


findent-2.8.2: 
    debianizing ...
findent-2.8.1:
    adapt wfindent and wfindent.bat to long options
    parser.y: get rid of shift-reduce conflict
    src/Makefile.am: some minors to ensure proper regeneration
       of lexer.cpp if necessary
findent-2.8.0:
    implement ! findentfix:
    clean up code, enhance documentation
    parallel make, also for make check, seems to work now
findent-2.7.4:
    src/Makefile.am, configure.ac: if flex/bison is not
      to be used, but lexer.l or parser.y has been changed,
      produce a warning message.
    maketar: remove creating executable 
    Readme.1st: adapted to previous line
    Change build process: no bison or flex needed when
    building from tarball.
    Update debian directory.
    bootstrap: fix bug which prevented 'make dist' to run
    src/Makefile.am, Makefile.am, scripts/Makefile.am:
    fixes to facilitate 'make distcheck'
    src/findent.cpp, add option -i- to disable indenting
    test: add test7.sh and test8.sh to test flag -i-
    README: add method to get indented comments when converting
            from fixed to free
    parser.y, lexer.y:
       recognize PROCEDURE(not only MODULEPROCEDURE) as PROCEDURE
    makedeb: add i386-wheezy
    Makefile.am, configure.ac: introduce variable MAKEWIN to 
      mv findent to findent.exe when compiling for windows.
      Somehow, now the mingw compiler does not generate foo.exe
      when requested to produce foo.
    findent.cpp:
       add comment for names of long flags
       add -osame option
    findent.cpp tocpp.sh vim_plugin.cpp vim_plugin.h gedit_plugin.cpp
                gedit_plugin.h
       let findent output configuration files for usage with vim
       and gedit. Flags:
        --vim_help
        --gedit_help
        --vim_findent
        --vim_fortran
        --gedit_external
        --gedit_plugin
        --gedit_plugin_py
    test:
       use only one or two lines for testing flags -h, -H
       add tests (test16.sh) for vim and gedit related flags.
       make use of MAKEWIN (see configure.ac) to determine
       if we made an windows executable.
    parser.y:  bugfix
       take care that "dom(1)%t" is recognized as an lvalue
       so that "dom(1)%t = 0" is not classified as the start
       of a do-loop, but as an assignment by adding:
          lvalue:  lvalue '%' lvalue

    test, findent.cpp, emacs
       add ability to generate emacs config file.
       add aliases for flags containing '_': 
         '-' can be used instead

findent-2.7.3:
findent-2.7.2:
    copyright: BSD-3
    debial/rules: add 
      export DEB_BUILD_MAINT_OPTIONS=hardening=+all
    debian/, makedeb, maketar:
       some slight modifications for debian packaging
    findent.cpp:
       changed output of pure comment lines while converting
         from fixed to free:
         - comment starts with [cC*!] in column one:
          the first character is replaced by '!' and the comment
          is output unindented
         - comment starting with '!', not in column 1, is indented
         - comment with [dD] in column one:
          is output as-is, prepended with '!', starting in column one
       fixed format: if garbage is detected in label field,
          output that line as-is
findent-2.7.1:
    maketar: adapt version in debian/changelog
    vim somewhat better findent.vim and fortran.vim
    pre_analyzer.cpp: bugfix
findent-2.7.0:
    findent.cpp:
       - add option -lastindent to output only the indentation level
         of the last line
       - recognise '#  if' etc
       - fixed minor bug: code starting with preprocessor directive
         in combination with -Ia did not function properly
       - add flag -Q. returncode =2 for free, 4 for fixed
         for usage in vim
       - removed documentation for -Q, it is not needed now
       - add stack for dolabels to obtain correct indenting in cases
        like this:
           do 1 i=1,2
           #if x
           1 continue
           #else
           1 continue
           #endif
       - make fixed ! comment output as in free
       - better initialization of indents if startindent>0
       - -Innn now sets auto_firstindent = 0
       - better #if ... handling
    wfindent:
       - add code to look for findent in default PATH if
         the given location (FINDENT=) does not work
       - exit if no findent is found
    all:
       - omit 'using namespace std'
       - update documentation README, README.1st
       - move test folder out of src folder
       - separate tests, new tests for -lastindent and -lastonly
    vim:
       - add a folder vim and two files: findent.vim and fortran.vim
findent-2.6.0:
    findent.cpp:
       - -Ia now also works correct if source starts with 'end',
         'endif' etc.
       - bootstrap now fills in findent version in configure.ac
         on the 'AC_INIT(' line
       - configure.ac add AC_CONFIG_FILES statements to copy
         test cases to build directory
findent-2.5.1:
    findent.cpp:
       - corrected help output for the -rR flag by replacing leading '\'
         by space
       - some improvements in help output
findent-2.5.0:
    findent.cpp:
       - lines starting originally with '!' are not indented
       - pure comment lines, not starting with '!' get an indent
         of at least 1
       - added -C- flag: resets indent with 'contains'
       - continuation lines not starting with '&' are extra intented
         flag: -kn
       - flag -k-: continuation lines are untouched
       - findent.cpp: somewhat better layout of man page
    README:
       - add remark about not wanting irreversible changes to sources
    wfindent:
       - use installation path of findent in stead of 'findent'
       - recognize -v, -h and -H flags: run findent using only this flag
       - ignore -q flag
    wfindent.bat:
       - recognize -v, -h and -H flags: run findent using only this flag
       - ignore -q flag
    test:
       - adapted progfree.f.try.f.ref and progfree-dos.f.try.f.ref
findent-2.4.1:
    fixed typo in help text.
findent-2.4:
    release 2.4
findent-2.3.1:
    findent.cpp: correct explanation of -l flag in usage()
    maketar: fix a few nearly-bugs
    src/parser.y, src/Makefile.am: take care that older versions
       of bison work

findent-2.3:
    jfindent: is now in a separate folder: ../jfindent
       with it's on autoconf setup
    Makefile.am: added $(DESTDIR) for the man page
       adapted to new jfindent location
    findent.cpp: fix bug in coverting fixed to free when dealing
       with a preprocessor continuation
    configure.ac: explicitly include macros in m4, do not
       use AC_CONFIG_MACRO_DIR, this seems not to work
       in Debian wheezy
    repaired make check. Send log file to stdout.
    maketar, makezip: removed making jfindent.jar
    configure.ac: use standard AC_PROG_YACC

jfindent 1.1:
    jfindent now writes config file after reading (successful
    or not) and after clicking 'Quit'
    added 'recent folders' menu item under 'File'
    some trivial changes
    added menuitem 'File->Save configuration'
version 2.2:
    convert to autoconf
findent-2.2:
    Makefile: add support for creating 32 bit executable
    findent.cpp: -H options produces man page
    findent.cpp: better support for preprocessor lines with
                 continuation line
    src/Makefile.am configure.ac:
        take care that no manpage is made when compiling for
        windows

findent-2.1:
    wfindent.bat:
       added
    wfindent:
       change from bash syntax to sh syntax
    Jfindent.java:
       added
       added Oracle copyright text
       finished ...
       added file menu
       added about menu
       somewhat better menubar and better
         texts for buttons and more intuitive behaviour with
    'show all options'
       removed 'show all options' button, extend help
         with this information
       some trivia
       when previewing a file, the scroll position
         remains the same when trying different options
       Make menu textArea's non-editable
    CHANGELOG
       added subversion Id to all files
    Makefile:
       add support for jfindent
       fix minor bug: make -j works now
    README:
       add text for jfindent
       revised the text
    README.1st:
       add text for jfindent
       revised the text
    INSTALL:
       revised the text
    lexer.l:
       allow $ as non-first character in identifier

findent-2.0:
    Complete new code
    Better parser
    Space insensitive
    Fortran 2008 compliant

findent-1.6.5:
    Makefile:
       removed -g flag
       created 'zip' and 'tar' targets
    findent.y:
       added code and help text for the -L flag
    wfindent:
       added -L flag
    README:
       replaced NOTE 1, it covers now tab input.
    Added scripts 'makezip' and 'maketar'
    Added README.1st

findent-1.6.4:
    findent.y:
       determine if input comes from terminal, warn user
       and accept a single dot ('.') as end-of file
       Extended usage() with examples

findent-1.6.3:
    findent.l, findent.y, findent.h:
       implement refactor routines
    findent.y:
       bug fixes for fixed form continuation lines
          
findent-1.6.2:
    regcognise tabbed source: 
        <tab>[1-9] 
        is recognised as a continuation line
    fixed bug when tab follows label: ltab2sp now takes in acccount 
        a statement label

findent-1.6.1:
    findent.l: 
       get rid of flex message: "warning, dangerous trailing context"
                 by slight redefinition of statement-label
               simplified else, elseif, elsewhere recognition
    findent.y: 
       recognize debug lines in fixed format ('d' or 'D' in colimn 1),
          treating them as comment lines.
     Special treatment with -ofree: debug line as:
        'd        print *,"debug",i'
     will be output after conversion to free format as:
        '!d        print *,"debug",i'

findent-1.6.0:
    Makefile:
       slight change in rule to make .o from .cpp
    wfindent:
       added
    findent.l:
       fixed recognition of elseif by better definition of {nc}
    README:
       describe wfindent
    INSTALL:
       install wfindent

findent-1.5.9:
    findent.l:
       recognize 'label :' ('label:' was already recognized)
       recognize false type as in 'typecode = 10'
       better discrimination between fixed and free
    findent.y:
       recognize '123 enddo', do not double-de-indent

findent-1.5.8:
    findent.y:
       fill indent-stack from 0 to start_indent with the default indent
    findent.l: 
       support for construct name in 'do' 'if' 'select' 'block' 
       recognize some forms of false end
       recognize 'abstract type' and 'abstract interface'

findent-1.5.7
    findent.l:
       recognize strings in 'rest' state
       more precise definition of function
       recognize 'endprogram'
       do not confuse 'do (i) =' witha do statement
    findent.y:
       fixed form: put an ' ' as possible separator between label and code


findent-1.5.6
    Makefile:
       added support for cross compiling to windows:
          make clean
     make MINGW=1
       creates a windows 32 bit findent.exe
    findent.l:
       ticket 1: 
          more precise recognition of function statement

findent-1.5.5
    findent.y:
       added support for conditional preprocessor statements. Example:
       #ifdef USEMPI
       subroutine mysub(a,b)
       real a,b
       #else
       subroutine mysub(a)
       real a
       #endif
       end subroutine mysub

      indents correctly now.

findent-1.5.4
    findent.y: 
       recognize ' x = 3 & ! comment' as a line needing a continuation
       preprocessor statements are handled on ad-hoc basis
    findent.l:
       preprocessor statements are not recognized any more

findent-1.5.3
    findent.y:
       add fixed-to-free: add check if this is a preprocessor line
       fixed-to-free: fixed fortran can have a trailing comment,
          starting with !, and have a continuation line.
          This is fixed.
       fixed-to-free: fixed bad handling of otherwise empty continuation lines
    findent.l: 
       better recognition of fixed and free
       recognize 'integer(kind=8) function func1(a,b)' as a function
               Thanks to Dusan Jovic
       removed 'select' from definition of explicitly not-handled keywords


findent-1.5.2
    findent.l:
       let lexer recognise 'type, public :: mytype' Thanks to Dusan Jovic
findent-1.5.1
    findent.l:
       added some patterns to distinguish between fixed and fixed format
    findent.y:
       fix for files that do not end with \n
       fix for correct indenting continuation line while converting 
findent-1.5
    README:
       add recipe to use equalprg in vim
    findent.y:
       add ';' in to rules to quiet bison-2.5
       fix placement of preprocessor lines if they are in a 
          continuation suite
       enlarge number of lines to be considered when determining
          fixed or free from 10 to 1000
    findent.l:
       fix definition of {neol}

findent-1.4
    findent.y:
       make sure that string(n,' ') is always called with n >= 0
findent-1.3
    version.h:
       set version to 1.3
    findent.h:
       add definition for lexer_set()
    findent.l:
       add lexer_set()
       in lexer_init(): change lexer_push() to lexer_set()
    findent.y:
       replace lexer_pop()...lexer_push() sequences by lexer_set()
    minor code cleaning.
    Makefile: 
      'test' dependent of 'all'
      'clean' also cleans test directory
    test/progfixed_dos.f:
       add -ifixed in first line
    test/progfree_dos.f:
       add -ifree in first line
    README:
       minor adaptations
    CHANGELOG added

findent-1.2
    findent.l:
       fix error in lexer_push

findent-1.1
    findent.l:
       fix error in lexer_pop

findent-1.0
    initial release