Changelog findent
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 <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