findent-4.3.5: pre01: src/Makefile.am: don't print recipe for makeman to make blhc happy. addcopyright.sh: adapt to also handle .vim files vim/findent.vim, vim/fortran.vim: same copyright as other files findent-4.3.4: pre01: src/Makefile.am: add src/create_token_list.sh and token2name.cpp to ease debugging. src/parser.y: recognise IF(J) GOTO1=3 not as a goto statement. src/parser.y: in ASSIGN 2 TO X let X be a 'lvalue' (was 'gidentifier'). configure.ac: add --mode="a+rwX" to modified tar command. src/Makefile.am: prevent that parser.hpp is in distribution tar. src/lexer.l: add /* fall through */ to prevent fall-through warning. findent-4.3.3: pre01: addcopyright.sh: make sed-usage compatible with FreeBSD doc/design/Makefile.am: do not use $<, FreeBSD's make doesn't understand this bootstrap: put copyright in vim/Makefile.am pre02: implement fypp conditional preprocessor statements starting with '#:' pre03: docs.cpp, findentclass.cpp: include PowerShell examples. pre04: bootstrap: do not use flag '-d' to be compatibe with freebsd pre05: bootstrap: remove $deb/tests before creating findent-4.3.2: pre01: recognize SIMPLE findent-4.3.1: pre01: src/Makefile.am: remove .PHONY tarfile.inc, to prevent useless remakes of tarfile.inc doc/design/findent.tex.in: make resulting pdf reproducible by \pdfinfoomitdate 1 \pdftrailerid{findent design} pre02: bootstrap: changed code to obtain doc/design/date.tex.in pre03: support for cross compile: toascii.sh and creating man page now use native compilers test/esope.f.try.f.ref.in: fix check for esope program pre04: test/prelude.in: if envvar FINDENTCHECK is set, this is used for findent. This enables one to run 'make check' with the executable on another system. Added script 'towin' to create a windows executable. pre05: Removed references to jfindent. Adapt doc/design/README findent-4.3.0: pre01: Jump in versioning because we added a new feature in 4.2.7: --selfrep findent-4.2.7: pre1: add doc/design/ with in-depth info about the internals pre2: add doc/design/README pre3: relabel.cpp: circumvent unjustified warning about possibly uninitialized variable 'pregion' pre4: add flag --selfrep make generation of files in doc/design autoconf-compliant pre5: configure.ac: disable sefrep when creating a windows version: it seems impossible to avoid the carriage returns when writing a binary file to stdout on windows pre6: fortran.cpp test11.sh: prevent popping up indentation level when encountering an END, ENDIF, ... as first non-blank line pre7: fortran.cpp, guessindent(): in case of fixed format, skip first 6 chars of line. Still looking for a solution for the undesired behaviour in vim, espcially with labelled statements ... pre8: flags.cpp: change default for --relabel_reset from 1 to 0: debugging is easier when all labels are different pre9: fortran.cpp: fix bug concerning handling of continuation statement mixed with preprocessor statements github issue14, thanks to Nicholas Hine for mentioning this bug 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 f into 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 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: [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