Sergey Vinokurov
2ed9a13fdb
Replace 'docAltFilter' with 'runFilteredAlternative'
2018-04-02 21:25:44 +01:00
Sergey Vinokurov
8410fbff8e
Trailing whitespace
2018-04-02 21:25:44 +01:00
Sergey Vinokurov
e9689394b1
Add Semigroup instance for 'Max' monoid
...
Otherwise ghc 8.4 will complain since Semigroup became a superclass
of Monoid.
2018-04-02 21:25:43 +01:00
Lennart Spitzner
b43ee43220
Fix/Implement empty type constraint handling ( fixes #133 )
2018-04-02 17:11:53 +02:00
Lennart Spitzner
0845142727
Fix let-in comment placement bug ( fixes #110 )
2018-03-23 17:34:36 +01:00
Lennart Spitzner
bdd3b155f3
Fix HsPar comment placement bug (see #111 )
2018-03-23 17:11:39 +01:00
Lennart Spitzner
3847325fd5
Omit single-line layout for OpApp with comments ( fixes #111 )
2018-03-23 17:02:58 +01:00
Lennart Spitzner
a003b932a9
Fix comments in tuples being dropped ( fixes #37 )
2018-03-23 16:55:28 +01:00
Lennart Spitzner
d634d34ff1
Fix module-import-hiding-items layout
2018-03-23 15:41:41 +01:00
Lennart Spitzner
90a2f65ba7
Align applications on for same function, plus minor fixup
...
Arguments of two function applications will only be aligned
if the same function is called in both cases.
The column transform was altered slightly to fix #65
properly as well.
fixes #65 , #128
2018-03-22 01:19:56 +01:00
Lennart Spitzner
487c32175a
Refactor Alt.hs and Add out-commented alternative
2018-03-21 16:03:38 +01:00
Lennart Spitzner
f1536b8966
Merge pull request #83/#124 from sniperrifle2004/import
2018-03-21 01:06:26 +01:00
Lennart Spitzner
8de56ba11d
Support import column vs import-as column
2018-03-21 01:02:44 +01:00
Lennart Spitzner
1330aeb6b4
Fix ticked type operator losing tick ( fixes #125 )
2018-03-13 23:51:22 +01:00
Lennart Spitzner
a1c832e85c
Merge pull request #121 from AlexeyRaga/PR-expose-read-configs
...
# Conflicts:
# stack.yaml
2018-03-13 22:45:18 +01:00
Lennart Spitzner
c0ea20455c
Fixup haddock typos
2018-03-13 22:38:27 +01:00
Lennart Spitzner
15d2250c0b
Change _lconfig_importColumn default: 60 -> 50
2018-03-12 17:21:28 +01:00
Lennart Spitzner
833ac95fd7
Add two config options to control preamble layouting
2018-03-12 17:11:25 +01:00
Lennart Spitzner
9531edb2a7
Improve module layouting in two aspects
...
- IEThingWith in export list can now be single-line
- Now respect offset of the "module" keyword
(retain empty lines after pragmas, for example)
2018-03-12 16:29:47 +01:00
Lennart Spitzner
20f9c009ee
Stop hanging indent for IEThingWith
...
plus minor refactors/cleanups
this is more in line with IndentPolicyLeft and imo also looks
nicer in general
2018-03-11 22:49:20 +01:00
Lennart Spitzner
af7f9017b8
Fix Alt-transformation bug with BDFEnsureIndents
...
multiple BDFEnsureIndent nodes were mistreated previously
2018-03-11 22:07:12 +01:00
Lennart Spitzner
41a60ce60f
Merge branch 'master' into import
2018-03-11 17:43:16 +01:00
alexeyraga
83b39de3d4
Expose readConfigs
2018-03-07 21:56:52 +11:00
Lennart Spitzner
19e31fdaf2
Improve layouting of RecordUpd, Fix minor issue for HsLet
2018-02-19 21:33:43 +01:00
Lennart Spitzner
c124336738
Fix NOINLINE pragma layouting
2018-02-19 17:17:39 +01:00
Lennart Spitzner
4b53072ccd
Correct some commandline help output
2018-02-14 17:18:15 +01:00
Lennart Spitzner
81928ea597
Switch to ghc-exactprint-0.5.6.0, Remove code duplication
2018-02-14 01:14:24 +01:00
Lennart Spitzner
55b1c71bf3
Fix a layouting mistake that went unnoticed so far
2018-02-14 01:00:01 +01:00
Lennart Spitzner
91de1ca08c
Fix bang deletion on ghc-8.2, Add testcase ( fixes #116 )
2018-02-13 23:48:00 +01:00
Lennart Spitzner
077b93db01
Minor refactor
2018-02-09 16:50:57 +01:00
Evan Rutledge Borden
eb8f0de6c3
Remove redundant import.
2018-02-09 16:43:59 +01:00
Evan Rutledge Borden
019d47bf7e
Change infix patterns to include spaces
...
This commit changes infix patterns to utilize `lrdrNameToTextAnn`. This
function allows the logic to avoid introspecting on the constructor
name.
Additionally this adds spaces to all infix operator pattern matches.
Previously infix symbols did not include spaces:
```
foo (x:xs) = _
```
Now they include a space
```
foo (x : xs) = _
```
2018-02-09 16:43:44 +01:00
Evan Rutledge Borden
18b3cfaf88
Fix infix constructor pattern matching for normal constructors
...
Brittany was previously only support symbol based infix constructors. It
is common in some libraries (for example Esqueleto) to pattern match on
normal constructors as infix. Brittany was failing in this case by not
wrapping the constructor name in back ticks/spaces. Backticks and spaces
have been added in the case where the constructor contains any alpha
characters.
2018-02-09 16:43:29 +01:00
Lennart Spitzner
25ff576dc3
Merge pull request #97 from eborden/let-in-on-single-lines
...
Format let and in on a single line if they fit
2018-01-13 21:39:11 +01:00
Lennart Spitzner
399e2f4f43
Minor cleanups
2018-01-13 18:41:51 +01:00
Evan Rutledge Borden
cab1297585
Change function name to if/else
2017-12-31 00:11:10 -05:00
Evan Rutledge Borden
f1b49b082f
Format let and in on a single line if they fit
...
The following is wasteful of vertical space:
```
_ =
let
longIdentifierForShortValue = 1
in
longIdentifierForShortValue + longIdentifierForShortValue
```
We should format it on two lines if possible.
```
_ =
let longIdentifierForShortValue = 1
in longIdentifierForShortValue + longIdentifierForShortValue
```
This commit also allows for a mix of variations:
```
_ =
let
longIdentifierForShortValue = 1
in longIdentifierForShortValue + longIdentifierForShortValue
_ =
let longIdentifierForShortValue = 1
in
longIdentifierForShortValue + longIdentifierForShortValue
```
2017-12-31 00:04:53 -05:00
Lennart Spitzner
37e355fea5
Support hanging type signature config option
2017-12-28 21:38:31 +01:00
Lennart Spitzner
43abab2dd2
Remove space after opening parenthesis ( fixes #87 )
2017-12-28 20:46:03 +01:00
Lennart Spitzner
0f3ee76944
Fix shebang handling with stdin input
...
Fixes #92
probably should update upstream (ghc-exactprint)
2017-12-27 23:26:18 +01:00
sniperrifle2004
98c93f0d63
Move expanded binding list to standard indent level for compact layout
2017-12-22 16:35:39 +01:00
sniperrifle2004
ad34a8b9b9
Only expand empty binding list with comments
2017-12-22 10:18:09 +01:00
sniperrifle2004
3708838b6a
Also handle comments inside ThingWith
2017-12-22 06:58:39 +01:00
sniperrifle2004
21c080572b
Add compact version of import layout
...
Also let layoutLLIEs deal with comments
2017-12-21 23:51:27 +01:00
Lennart Spitzner
f920f4714d
Fix maximum on empty list, fixes #88
2017-12-21 21:45:29 +01:00
Lennart Spitzner
82a5ffb3b3
Refactor a bit more
...
- remove unnecessary docWrapNodeRest
- make sure that sharing is correct and non-redundant
2017-12-21 17:56:54 +01:00
Lennart Spitzner
33f23a65ec
Refactor and Add missing docSharedWrapper
2017-12-21 15:44:58 +01:00
Lennart Spitzner
f651d02898
Merge branch 'dev' into import
2017-12-19 22:27:37 +01:00
Lennart Spitzner
ce7ec0b467
Fix warning
2017-12-19 17:55:31 +01:00
sniperrifle2004
162b6e6bfd
Also fix export comments
...
Also refactored a little to improve reuse of the docWrapNode logic
2017-12-19 16:33:13 +01:00
sniperrifle2004
a59df1f391
Fix comments!! 🎉
2017-12-19 14:28:22 +01:00
sniperrifle2004
7c51a181c8
Fix operators for ThingWith
2017-12-19 01:17:19 +01:00
sniperrifle2004
eac17b1bf2
Also render comments on the binding list
2017-12-19 01:11:25 +01:00
Lennart Spitzner
8c3a9bec25
Fix operators in import list
2017-12-18 18:56:50 +01:00
sniperrifle2004
c3b6e17261
Improve layout for imports
2017-12-18 13:17:24 +01:00
Lennart Spitzner
204f0aff08
import+module: Refactor and Simplify slightly
2017-12-17 21:14:46 +01:00
Lennart Spitzner
d8097f2862
Add mask_ to prevent "ghc panic" when using timeout on brittany
2017-12-17 15:45:08 +01:00
sniperrifle2004
e140cd01e0
Add directives for ghc > 8.2
2017-12-17 14:06:41 +01:00
sniperrifle2004
ee9abff9e8
Add import and module support
2017-12-17 12:51:04 +01:00
Lennart Spitzner
9700fb2a50
Merge pull request #82 from matthew-piziak/tuple-section-support
...
Tuple section support (fixes #41 )
2017-12-15 00:49:57 +01:00
Matthew Piziak
b731cd15e7
capture starting layout
2017-12-14 16:17:39 -05:00
Lennart Spitzner
0036dbf410
Add some documentation for `layoutPat`
2017-12-11 17:13:33 +01:00
Lennart Spitzner
39c48b33f1
Fix error in Annotation filtering ( fixes #70 )
2017-12-08 19:57:16 +01:00
Lennart Spitzner
127299b442
Merge branch 'dev' into indentpolicyleft
2017-11-30 23:47:18 +01:00
Lennart Spitzner
882a3b1a7a
Allow single-line after let with IndentPolicyLeft
2017-11-30 23:20:35 +01:00
Lennart Spitzner
8a401d291e
Workaround for #68 : trim exactprinted text for unknown nodes
2017-11-28 18:23:05 +01:00
Lennart Spitzner
6a97379b33
Add whitespace around operator in section, Fixes #67
2017-11-28 17:56:28 +01:00
Lennart Spitzner
d9155e240d
RecursiveDo: Add second layout, Respect IndentPolicyLeft
2017-11-27 23:13:13 +01:00
Lennart Spitzner
466ff237ff
Add some comments/examples in layoutStmt
2017-11-27 23:05:47 +01:00
Lennart Spitzner
9e8571b848
Remove an unnecessary node in BriDoc construction; Add TODO
2017-11-27 23:01:32 +01:00
Evan Rutledge Borden
e9a2de7a85
Filter binders with docSetBaseAndIndent.
2017-11-27 18:12:19 +01:00
Evan Rutledge Borden
de0851f975
Use docAltFilter for consistency.
2017-11-27 18:12:19 +01:00
Evan Rutledge Borden
35f33c131c
Remove duplication in 'let' expression layout.
2017-11-27 18:12:19 +01:00
Evan Rutledge Borden
44e95940c0
Change record update syntax for left indent policy
2017-11-27 18:12:19 +01:00
Evan Rutledge Borden
d1e1984206
Update guard formatting for IndentPolicyLeft
2017-11-27 18:12:19 +01:00
Evan Rutledge Borden
a13a137f68
Add left indent support for statements
...
This aligns left indent style `let` statements with their expression
form.
2017-11-27 18:12:19 +01:00
Evan Rutledge Borden
de5f0401f3
Add consistency between contsrained and unconstrained forall format
...
Constrained forall formats aligned the `.` to the left. Constrained
formats aligned the `.` to the right. This change adds consistency
between both formats.
2017-11-27 18:12:19 +01:00
Evan Rutledge Borden
ce41178df5
Remove context sensitive let indentation when IndentPolicyLeft
...
Let expressions with multiple bindings automattically indent and pull
left
```
let
a = b
c = d
in foo bar baz
```
```
let
a = b
c = d
in
foo bar baz
```
```
let
a = b
c = d
in foo
bar
baz
```
```
let
a = b
c = d
in
foo
bar
baz
```
2017-11-27 18:12:19 +01:00
Evan Rutledge Borden
bdf8769913
Remove 3 space special case from HsIf when IndentPolicyLeft
...
```
if foo
bar
then
baz
```
becomes
```
if foo
bar
then
baz
```
2017-11-27 18:12:19 +01:00
Lennart Spitzner
88cbaf813a
Implement `IndentPolicyLeft` for one HsApp case
2017-11-27 18:12:19 +01:00
Lennart Spitzner
4568bd3553
Prepare implementation for `IndentPolicyLeft`
2017-11-27 18:12:19 +01:00
Lennart Spitzner
c709513209
Remove dependency on either package
...
Following the deprecation and removal of the EitherT transformer
2017-11-27 18:11:49 +01:00
Lennart Spitzner
26f8cdfb65
Support RecursiveDo/`rec` keyword
2017-10-24 00:25:59 +02:00
Lennart Spitzner
ddd7c6b439
Fix some rare issue and add some comments
...
(it is so rare i cannot reproduce anymore right now,
because the code that caused it has changed since..)
2017-10-24 00:00:34 +02:00
Lennart Spitzner
b1c6be7acd
Fix parentheses around kind signatures, fixes #64
2017-10-15 00:23:14 +02:00
Lennart Spitzner
f86665a251
Fix promoted HsTyVars on ghc-8.2.1
...
This fix does not work on ghc-8.0, because I do not understand
the 8.0 API in this instance. Could be resolved by looking
at annotations, but that really should not be necessary.
2017-10-14 23:21:13 +02:00
Lennart Spitzner
ccf2eb092f
Support RecordWildCards, Add one-liner layouting for records
...
fixes #52
2017-10-01 17:24:13 +02:00
Lennart Spitzner
a348ae7fbc
Switch to XDG path for config; Search conf in parents
...
- switch to XDG path should be backwards-compatible:
- new config will be written to XDG path
- but existing config in ~/.brittany will be respected
- looks for "brittany.yaml" not only in cwd, but in parents too.
uses the first file found.
fixes #45 , fixes #55
2017-09-29 21:42:39 +02:00
Lennart Spitzner
d1606932f8
Minor cleanup / performance improvement
2017-09-20 23:35:45 +02:00
Lennart Spitzner
867016c198
Fix quadratic behaviour ( fixes #34 )
...
Split up annotations by top-level elements in one
go, instead of doing the filtering per top-level
element (which necessarily makes things quadratic,
or rather O(n*m) with n top-level elements and m
size of annotation map). The fixed version should
be O(log n * m), and log n is negligible.
2017-09-20 23:35:45 +02:00
Lennart Spitzner
9703ebead5
Fix #53
...
Previously, if the input did not end with a newline
character and config had 'ppconf_hackAroundIncludes = True'
then due to using unlines/lines the output contained an
additional newline.
2017-09-10 16:37:35 +02:00
Lennart Spitzner
ca13a1897f
Fix type application layouting ( fixes #48 )
...
- one-line externals are not detected as multiline in backend
- layouting of EAsPat (when TypeApplications is disabled)
- layouting of HsTyLit (TypeApplications with literals)
2017-08-20 14:09:03 +02:00
Lennart Spitzner
fba8ad1a99
Fix negative literals in patterns ( fixes #49 )
2017-08-20 00:34:13 +02:00
Lennart Spitzner
1288c37204
Disable specific optim. in Config/Types/Instances
2017-08-19 14:56:46 +02:00
Lennart Spitzner
aba7d13f67
Fix stupid haddock needs
2017-08-16 00:14:56 +02:00
Lennart Spitzner
6f4eec245e
Split up Config/Types.hs
...
for the compilation of that module, GHC max residency
was an astounding 600MB for Config/Types.hs;
for Config/Types/Instances.hs it now "only" is 480MB.
(numbers according to "+RTS -s", the real usage
accoding to `time` is about 20% higher even.)
2017-08-15 20:37:46 +02:00
Lennart Spitzner
3ac8cccb0f
Refactor prelude.inc/Prelude to reduce imports
2017-08-12 23:51:07 +02:00
Lennart Spitzner
ebf84a03e9
Merge remote-tracking branch 'origin/master'
2017-08-12 15:29:06 +02:00
Erik Schnetter
0774d0e413
Correct typographical errors in comments
2017-08-11 21:37:29 -04:00
Lennart Spitzner
655074d1c0
Fix comment insertion error introduced in 91b9a240
2017-08-10 13:09:39 +02:00
Lennart Spitzner
91b9a240f1
Fix comment-before-BDCols issue; Relax alignmentBreakOnMultiline
2017-08-07 00:35:09 +02:00
Lennart Spitzner
41beeb9723
Remove/Cleanup unused/deprecated MTEL stuff
2017-08-06 16:28:41 +02:00
Lennart Spitzner
b39997fcfa
Adapt for ghc-8.2
...
Could it be so simple?
2017-08-05 18:17:49 +02:00
Lennart Spitzner
ccb59ef803
Fix wherespecial with indent/=2 ( fixes #39 )
2017-08-05 16:09:46 +02:00
Lennart Spitzner
00ad6c71b9
Impl. layouting of TypeApplication, fixes #38
2017-07-28 18:03:21 +02:00
Alan Zimmerman
33eed86851
Fix haddock generation.
...
Otherwise the haddock process complains about malformed haddock comments
2017-07-07 10:40:55 +02:00
Lennart Spitzner
134f31e4d1
Add Semigroup instances for C*Config Identity
2017-07-05 00:08:21 +02:00
Lennart Spitzner
6268b8075a
Fix layouting bug for RecordUpd
2017-07-04 23:57:54 +02:00
Lennart Spitzner
5a82968a7b
Add sub-config-alternative default to lib interface
...
i.e. `forwardOptionsSyntaxExtsEnabled`
2017-07-04 23:26:13 +02:00
Lennart Spitzner
0251062100
Support mdo layouting (RecursiveDo)
2017-06-29 18:13:28 +02:00
Lennart Spitzner
cece70380c
Fix/Implement proper layouting of MultiWayIf
2017-06-28 23:35:02 +02:00
Lennart Spitzner
6d472315e3
Fix layouting special-case (getSpacing(s) internals)
2017-06-04 18:15:22 +02:00
Lennart Spitzner
5e3cc0a7c3
Fix OpApp layouting/indentation annoyance
2017-06-04 16:28:01 +02:00
Lennart Spitzner
16f5aa118d
Add flag to omit reformatting (ghc-exactprint only)
2017-06-03 21:01:24 +02:00
Lennart Spitzner
9f4cda9130
Add license (AGPLv3)
2017-06-03 18:23:03 +02:00
Lennart Spitzner
91429ccacc
Remove unordered-containers direct dependency
2017-06-03 18:23:03 +02:00
Lennart Spitzner
3784a0123b
Refactor exposed function (now parsePrintModule)
...
- Rename parsePrintModule -> parsePrintModuleTests
- Rename pureModuleTransform -> parsePrintModule
- Change argument type from (CConfig Option) to Config
- Expose CConfig type fully
2017-06-03 18:23:03 +02:00
Lennart Spitzner
dfec26e55b
Refactor/Rename LayoutError -> BrittanyError
2017-06-03 18:23:03 +02:00
Lennart Spitzner
1adf02dabe
Add instance Monoid (CConfig Option)
2017-06-03 18:23:03 +02:00
Lennart Spitzner
f350113f7f
Refactor all modules: +Internal; Add public Brittany module
2017-05-22 21:25:08 +02:00
Lennart Spitzner
5dbe0f2c9c
Add function pureModuleTransform
2017-05-22 21:06:02 +02:00
Lennart Spitzner
fd9427754e
Add "hackAroundIncludes" option (default false)
...
- Makes brittany work in stdin/stdout mode when
CPP usage is limited to #includes.
2017-05-22 15:49:18 +02:00
Lennart Spitzner
3957272c10
Improve backwards-compat for config (manual FromJson)
2017-05-22 15:45:14 +02:00
Lennart Spitzner
8f1e366f9c
Change config file structure; Add config version tag
2017-05-21 16:48:05 +02:00
Lennart Spitzner
4ee44388f7
Improve layouting for OpApp (special-case for dollar/HsVar)
2017-05-21 13:43:39 +02:00
Lennart Spitzner
b8396da1d6
Refactor Backend.hs (Move stuff to top-level)
2017-05-21 13:17:46 +02:00
Lennart Spitzner
8b7b1334e2
Fix forall type signature layouting
2017-05-18 14:18:10 +02:00
Lennart Spitzner
83ba7803e6
Fix layouting issues in lists/listcomprehension
2017-05-17 23:31:20 +02:00
Lennart Spitzner
56e53a9cbb
Apply brittany to `layoutBriDocM`
2017-05-17 21:41:07 +02:00
Lennart Spitzner
6448ee780a
Restrict aggressive horizontal alignment ( fixes #21 )
...
- Add config values:
_lconfig_alignmentLimit for roughly "max spaces inserted"
_lconfig_alignmentBreakOnMultiline for stopping
alignment after non-singleline-items
2017-05-17 21:34:49 +02:00
Lennart Spitzner
22300d9c62
Minor cleanups
2017-05-14 17:10:20 +02:00
Lennart Spitzner
41a86b2eab
Use czipwith package (replacing CZip), Refactor slightly
2017-05-14 17:04:58 +02:00
Lennart Spitzner
4770dbdb7c
Remove lens dependency (was not used)
2017-05-14 12:05:19 +02:00
Lennart Spitzner
c701e5d00b
Fix #26 : Fix comment glitch in patternbind layouting
...
Prevent single-line layout when it would not even be
a single line due to a comment.
This patch might be a bit over-eager in at least one
case (I think you'd get a two-line layout with a
multiway-if and a comment _after_ the where binding).
2017-05-02 17:10:04 +02:00
Lennart Spitzner
c3dc3b6074
And one more touch to ExplicitList
2017-05-02 16:32:43 +02:00
Lennart Spitzner
ca42178eff
Improve tuple layouting (also fixes #18 for tuples)
2017-05-02 16:21:13 +02:00
Lennart Spitzner
f6324da600
Fix ExplicitList comment insertion ( fixes #18 )
2017-05-02 14:20:58 +02:00
Lennart Spitzner
26ffb40fb4
Fixup for config file generation
...
- fixes a silent bug; behaviour seems not to be affected.
2017-04-16 13:55:49 +02:00
Lennart Spitzner
cbeab39b2d
Fix comment/eof space handling ( fixes #22 )
2017-04-15 14:50:55 +02:00
Lennart Spitzner
505ad99f35
Handle InlineSig construct (pragma), fixes #20
2017-04-12 21:47:59 +02:00
Lennart Spitzner
acbaba0782
Omit output syntax test for fix-point tests
2017-04-12 14:53:47 +02:00
Lennart Spitzner
14884be8df
Minor fixups in docs plus some minor Refactoring
2017-04-12 14:31:53 +02:00
Lennart Spitzner
2dd6fe83f5
Add documentation and examples; Add debugging flag; Minor refactors
2017-03-30 22:47:00 +02:00
Lennart Spitzner
2b30d83fe8
Fix CPP/macro usage for MacOS; Fix minor stuff in .cabal
2017-03-27 16:18:14 +02:00
Lennart Spitzner
a7e4bdc168
Fix #16 ; Improve layouting in two cases; Add comments
...
- the #16 fix is a one-liner:
Throw `nub` at spacings before pruning.
- Expr/OpApp layouting: Force single-line for children in
the params-in-multiple-lines-right-of-the-function case.
- Expr/HsIf layouting: Insert a SetBaseY to prevent
"then"/"else" being placed left of "if".
2017-03-16 23:02:11 +01:00
Lennart Spitzner
109163fc4d
Remove traceShow statement
...
fixes #15
2017-03-08 14:55:02 +01:00
Lennart Spitzner
7dc6c525eb
Fix minor layouting issue with long guards
...
(see test multiple-clauses-4)
2017-03-07 21:44:28 +01:00
Lennart Spitzner
00c7384d20
Fix config printing (config file generation)
2017-03-07 21:14:41 +01:00
Lennart Spitzner
cea81d5369
Add indentation to the paragraphs inserted in patterns
...
Ugly, but fixes #6 . Ugly still better than non-valid-haskell result.
2017-03-06 16:56:38 +01:00
Lennart Spitzner
8d163eb099
Improve layouting for equations with multiple clauses
...
e.g.
func x | x = simple expression
| otherwise = 0
This fixes part of #7
2017-03-06 16:03:47 +01:00