_____

Changelog findent

findent-4.2.6:
        fix errors with respect to autopkgtest
findent-4.2.5:
        pre1: fortran.cpp: removed debugging statements
findent-4.2.4:
        pre1: fortran.cpp fix bug which caused wrong indentation of this
        two-liner:
                 do i=1,10;print*,i;enddo
                 continue
        Thanks to Solovjev Andrey for notifying: github issue#12
findent-4.2.3:
        pre1: Makefile.am: add debprelude, debpostlude
findent-4.2.2:
        pre1: test/init.in: remove check for Windows
              Makefile.am: when crosscompiling, the man page cannot be
              generated with the fresh-baked findent.  Therefore:
              First try the fresh-baked findent, if that fails, try the
              installed native findent, and if that fails, put a one liner in
              the man page. (Issue created by Sebastian Ehlert)
              bootstrap: Make autopkgtest working again. 
              test/test25.sh: Add test for availability of generated man page.
              test/test13.sh: prevent hang if findent does not recognize -h or
              --help or -H or --manpage
              test/test17.sh: the same for options like --vim-help: i.e.
              options that do not read from stdin
              src/Makefile.am: add AUTOMAKE_OPTIONS = std-options
                 to create target installcheck
        pre2: test25.sh: change test for availability of man page (Not every man
              supports flag -l)
        pre3: make things debian-compliant
findent-4.2.1:
        pre1: functions.h: trivial addition in string2number to make cppcheck happy
        pre3: relabel.cpp, flags.cpp, flags.h, docs.cpp: implement flag --relabel=shuffle
        pre4: docs.cpp, flags,cpp, flags.h, free.cpp: implement -K, --indent_ampersand, 
              thanks to Kai Germaschewski
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
              actualise dates
              bootstrap: create $deb/tests if necessary
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 converting 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
   convert: findent -ofree < prog.f > prog.f90