unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
* rfc: (add-hook 'before-save-hook 'delete-trailing-whitespace)
@ 2010-01-13  9:06 Thien-Thi Nguyen
  2010-01-13 10:53 ` Ludovic Courtès
                   ` (2 more replies)
  0 siblings, 3 replies; 13+ messages in thread
From: Thien-Thi Nguyen @ 2010-01-13  9:06 UTC (permalink / raw)
  To: guile-devel

The above form lives in my Emacs init flow, causing trailing whitespace to be
deleted on `save-buffer' (C-x C-s).  For many projects (but not Guile) this
DTRT, because trailing whitespace is not tolerated.  Jim Meyering gives a
nice rationale in <http://old.nabble.com/whitespace-cleanup-td6828228.html>.

I propose Guile also not tolerate trailing whitespace.  What do people think?

thi




^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: rfc: (add-hook 'before-save-hook 'delete-trailing-whitespace)
  2010-01-13  9:06 rfc: (add-hook 'before-save-hook 'delete-trailing-whitespace) Thien-Thi Nguyen
@ 2010-01-13 10:53 ` Ludovic Courtès
  2010-01-13 14:22   ` Thien-Thi Nguyen
  2010-01-21 20:31   ` Neil Jerram
  2010-01-13 20:02 ` Andy Wingo
  2010-01-21 20:46 ` Neil Jerram
  2 siblings, 2 replies; 13+ messages in thread
From: Ludovic Courtès @ 2010-01-13 10:53 UTC (permalink / raw)
  To: guile-devel

Hi,

Thien-Thi Nguyen <ttn@gnuvola.org> writes:

> The above form lives in my Emacs init flow, causing trailing whitespace to be
> deleted on `save-buffer' (C-x C-s).  For many projects (but not Guile) this
> DTRT, because trailing whitespace is not tolerated.  Jim Meyering gives a
> nice rationale in <http://old.nabble.com/whitespace-cleanup-td6828228.html>.
>
> I propose Guile also not tolerate trailing whitespace.  What do people think?

I agree, but adding such a hook would cause many gratuitous diffs, which
then blur VCS history (using ‘git blame’ becomes almost useless).

Instead, I’d suggest using ‘show-trailing-whitespace’.  Unfortunately,
that can’t be a per-file or per-directory local variable [0] so we can
just kindly ask people to add it to their ‘.emacs’.  :-)

What do you think?

Thanks,
Ludo’.

[0] http://debbugs.gnu.org/db/53/5312.html





^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: rfc: (add-hook 'before-save-hook 'delete-trailing-whitespace)
  2010-01-13 10:53 ` Ludovic Courtès
@ 2010-01-13 14:22   ` Thien-Thi Nguyen
  2010-01-21 20:31   ` Neil Jerram
  1 sibling, 0 replies; 13+ messages in thread
From: Thien-Thi Nguyen @ 2010-01-13 14:22 UTC (permalink / raw)
  To: guile-devel

() ludo@gnu.org (Ludovic Courtès)
() Wed, 13 Jan 2010 11:53:01 +0100

   I agree, but adding such a hook would cause many gratuitous
   diffs, which then blur VCS history (using ‘git blame’ becomes
   almost useless).

Usually, once a project decides to use some whitespace policy,
there is a one-time change-only-whitespace commit after which
programmers are expected to adhere to the new policy (using
whatever tools they choose).  This way, the pain from gratuitous
diffs are minimized.

Another way to minimize pain is to instruct the diff program to
ignore whitespace (this means in practice `--ignore-space-change'
(-b) or `--ignore-space-at-eol' for "git diff").

Having said that, i see (count of affected lines by file below)
that even a one-time change will touch a lot of lines.  Hmmm.

   Instead, I’d suggest using ‘show-trailing-whitespace’.
   Unfortunately, that can’t be a per-file or per-directory local
   variable [0] so we can just kindly ask people to add it to
   their ‘.emacs’.  :-)

   What do you think?

I'd rather a clean break than relying on the chance that the
source will be opportunistically cleaned up going forward.

thi


____________________________________________________
$ git grep -c -H -e \[\ \	\]\$ \
  | sed '/:0$/d;s/\(.*\):\(.*\)$/\2	\1/' \
  | sort -nr
1395	gc-benchmarks/larceny/twobit-input-short.sch
1395	gc-benchmarks/larceny/nucleic2.sch
861	gc-benchmarks/larceny/twobit.sch
861	gc-benchmarks/larceny/twobit-input-long.sch
628	gc-benchmarks/larceny/twobit-smaller.sch
309	libguile/ChangeLog-1996-1999
278	doc/r5rs/r5rs.texi
201	module/language/ecmascript/parse-lalr.scm
129	module/sxml/upstream/SSAX.scm
113	test-suite/tests/numbers.test
106	libguile/numbers.c
83	doc/ref/srfi-modules.texi
81	libguile/filesys.c
78	test-suite/tests/srfi-1.test
59	doc/texinfo.tex
57	test-suite/tests/sxml.xpath.test
57	module/sxml/upstream/SXPath-old.scm
51	libguile/ports.c
50	gc-benchmarks/larceny/sboyer.sch
48	test-suite/tests/srfi-14.test
48	gc-benchmarks/larceny/nboyer.sch
43	module/srfi/srfi-18.scm
43	module/ice-9/format.scm
41	module/oop/goops.scm
41	libguile/posix.c
40	libguile/print.c
39	libguile/deprecated.c
39	doc/ref/api-modules.texi
34	libguile/strings.c
33	module/language/tree-il.scm
33	doc/ref/goops-tutorial.texi
32	test-suite/tests/srfi-18.test
32	libguile/win32-socket.c
32	NEWS
31	gc-benchmarks/larceny/dynamic.sch
29	doc/oldfmt.c
28	benchmark-suite/benchmarks/srfi-13.bm
27	module/ice-9/boot-9.scm
27	libguile/struct.c
26	module/language/tree-il/analyze.scm
26	libguile/arrays.c
26	guile-readline/readline.c
25	test-suite/tests/list.test
25	libguile/srfi-4.h
25	libguile/srfi-13.c
25	doc/ref/ChangeLog-guile-doc-ref
24	test-suite/tests/syntax.test
24	module/ice-9/calling.scm
24	libguile/hashtab.c
24	libguile/gsubr.c
24	doc/ref/api-data.texi
23	libguile/vm-i-system.c
23	libguile/load.c
22	test-suite/tests/r5rs_pitfall.test
22	gc-benchmarks/larceny/gcbench.sch
22	doc/ref/vm.texi
22	doc/ref/data-rep.texi
21	module/language/tree-il/compile-glil.scm
20	libguile/unidata_to_charset.pl
20	libguile/read.c
20	libguile/guile-snarf.awk.in
20	libguile/eval.c
20	libguile/bitvectors.c
20	gc-benchmarks/gcbench.scm
20	doc/sources/env.texi
19	test-suite/tests/popen.test
19	module/texinfo/string-utils.scm
19	module/ice-9/ChangeLog-2008
19	libguile/random.c
19	libguile/i18n.c
19	libguile/ChangeLog-scm
19	ChangeLog-2008
18	test-suite/tests/hash.test
17	test-suite/tests/sxml.transform.test
17	module/oop/goops/describe.scm
17	module/ice-9/safe-r5rs.scm
17	libguile/socket.c
16	test-suite/tests/posix.test
16	module/texinfo.scm
16	module/ice-9/eval.scm
16	libguile/list.c
16	libguile/array-map.c
15	test-suite/tests/strings.test
15	module/ice-9/psyntax.scm
15	libguile/strports.c
15	libguile/script.c
15	libguile/ioext.c
15	doc/ref/hierarchy.eps
15	doc/mbapi.texi
15	doc/maint/guile.texi
14	libguile/stacks.c
14	libguile/programs.c
14	libguile/net_db.c
14	libguile/memoize.c
14	libguile/fports.c
14	doc/sources/old-intro.texi
14	doc/ref/scheme.pdf
14	doc/ref/gds.pdf
14	doc/ref/api-compound.texi
13	test-suite/tests/texinfo.test
13	test-suite/tests/texinfo.serialize.test
13	test-suite/tests/srfi-4.test
13	test-suite/tests/encoding-iso88597.test
13	test-suite/tests/alist.test
13	libguile/vectors.c
13	libguile/symbols.c
13	libguile/hash.c
13	libguile/generalized-arrays.c
13	libguile/chars.c
13	libguile/ChangeLog-2000
13	configure.ac
12	test-suite/tests/regexp.test
12	test-suite/tests/poe.test
12	module/sxml/xpath.scm
12	module/language/tree-il/primitives.scm
12	module/ice-9/r4rs.scm
12	libguile/sort.c
12	gc-benchmarks/larceny/perm.sch
11	test-suite/tests/texinfo.docbook.test
11	test-suite/tests/sxml.fold.test
11	test-suite/standalone/test-conversion.c
11	module/sxml/upstream/input-parse.scm
11	module/sxml/transform.scm
11	module/statprof.scm
11	module/language/glil/compile-assembly.scm
11	libguile/throw.c
11	libguile/smob.c
11	libguile/hooks.c
11	libguile/dynl.c
11	libguile/backtrace.c
11	doc/ref/hierarchy.pdf
10	test-suite/tests/sxml.ssax.test
10	test-suite/tests/srfi-6.test
10	test-suite/tests/ports.test
10	srfi/srfi-1.c
10	srfi/ChangeLog-2008
10	module/texinfo/reflection.scm
10	module/ice-9/null.scm
10	libguile/vports.c
10	libguile/fluids.c
10	libguile/continuations.c
9	test-suite/tests/common-list.test
9	module/sxml/simple.scm
9	module/sxml/apply-templates.scm
9	libguile/weaks.c
9	libguile/vm.c
9	doc/sources/scheme-concepts.texi
9	doc/ref/posix.texi
9	doc/ref/libguile-smobs.texi
8	test-suite/tests/encoding-escapes.test
8	module/texinfo/html.scm
8	module/system/vm/debug.scm
8	module/language/ecmascript/compile-tree-il.scm
8	module/ice-9/popen.scm
8	module/ice-9/networking.scm
8	libguile/win32-dirent.c
8	doc/ref/compiler.texi
7	test-suite/tests/weaks.test
7	test-suite/tests/srfi-13.test
7	test-suite/tests/r4rs.test
7	test-suite/tests/encoding-utf8.test
7	test-suite/tests/chars.test
7	module/texinfo/docbook.scm
7	module/oop/goops/util.scm
7	module/ice-9/test.scm
7	module/ice-9/poe.scm
7	module/ice-9/lineio.scm
7	libguile/win32-uname.c
7	libguile/srfi-14.c
7	libguile/procs.c
7	libguile/ports.h
7	libguile/macros.c
7	libguile/guile-snarf.in
7	libguile/gen-scmconfig.c
7	libguile/gc.c
7	libguile/c-tokenize.lex
7	libguile/bytevectors.c
7	doc/ref/scheme-ideas.texi
7	doc/ref/api.txt
6	test-suite/tests/tree-il.test
6	test-suite/tests/symbols.test
6	test-suite/tests/srcprop.test
6	test-suite/tests/hooks.test
6	test-suite/tests/asm-to-bytecode.test
6	module/texinfo/plain-text.scm
6	module/system/vm/inspect.scm
6	module/system/repl/repl.scm
6	module/sxml/upstream/SXML-tree-trans.scm
6	module/sxml/ssax.scm
6	module/oop/goops/composite-slot.scm
6	module/language/tree-il/inline.scm
6	module/ice-9/string-fun.scm
6	module/ice-9/rdelim.scm
6	libguile/version.c
6	libguile/variable.c
6	libguile/uniform.c
6	libguile/simpos.c
6	libguile/rdelim.c
6	libguile/promises.c
6	libguile/init.c
6	libguile/goops.c
6	libguile/debug.c
6	libguile/async.c
6	libguile/ChangeLog-threads
6	guile-readline/ice-9/readline.scm
6	examples/box-dynamic/box.c
6	doc/guile.1
5	test-suite/tests/vectors.test
5	test-suite/tests/texinfo.string-utils.test
5	test-suite/tests/srfi-9.test
5	test-suite/tests/records.test
5	test-suite/tests/encoding-iso88591.test
5	test-suite/tests/elisp.test
5	test-suite/tests/dynamic-scope.test
5	test-suite/tests/continuations.test
5	test-suite/tests/c-api/strings.c
5	module/texinfo/indexing.scm
5	module/sxml/fold.scm
5	module/oop/goops/active-slot.scm
5	module/language/ecmascript/base.scm
5	module/language/brainfuck/compile-tree-il.scm
5	module/ice-9/r5rs.scm
5	module/ice-9/pretty-print.scm
5	module/ice-9/hcons.scm
5	libguile/srcprop.c
5	libguile/scmsigs.c
5	libguile/root.c
5	libguile/error.c
5	libguile/dynwind.c
5	libguile/discouraged.c
5	libguile/deprecated.h
5	gc-benchmarks/larceny/graphs.sch
5	examples/box/box.c
5	examples/box-module/box.c
5	examples/box-dynamic-module/box.c
5	doc/ref/api-control.texi
4	test-suite/tests/unif.test
4	test-suite/tests/time.test
4	test-suite/tests/srfi-34.test
4	test-suite/tests/signals.test
4	test-suite/tests/q.test
4	test-suite/tests/pairs.test
4	test-suite/tests/optargs.test
4	test-suite/tests/multilingual.nottest
4	test-suite/tests/load.test
4	test-suite/tests/goops.test
4	test-suite/tests/format.test
4	test-suite/tests/filesys.test
4	test-suite/tests/eval.test
4	test-suite/tests/elisp-compiler.test
4	test-suite/tests/c-api.test
4	test-suite/tests/brainfuck.test
4	test-suite/tests/arbiters.test
4	module/texinfo/serialize.scm
4	module/system/repl/command.scm
4	module/sxml/ssax/input-parse.scm
4	module/oop/goops/stklos.scm
4	module/oop/goops/simple.scm
4	module/oop/goops/save.scm
4	module/oop/goops/internal.scm
4	module/oop/goops/compile.scm
4	module/oop/goops/accessors.scm
4	module/oop/ChangeLog-2008
4	module/language/ecmascript/tokenize.scm
4	module/language/ecmascript/parse.scm
4	module/language/ecmascript/impl.scm
4	module/language/assembly/disassemble.scm
4	module/ice-9/weak-vector.scm
4	module/ice-9/syncase.scm
4	module/ice-9/stack-catch.scm
4	module/ice-9/session.scm
4	module/ice-9/safe.scm
4	module/ice-9/rw.scm
4	module/ice-9/posix.scm
4	module/ice-9/mapping.scm
4	module/ice-9/ls.scm
4	module/ice-9/history.scm
4	module/ice-9/emacs.scm
4	module/ice-9/documentation.scm
4	module/ice-9/buffered-input.scm
4	module/ice-9/arrays.scm
4	meta/guile-tools.in
4	meta/guile-config.in
4	libguile/stime.c
4	libguile/srfi-4.c
4	libguile/guile-func-name-check.in
4	libguile/guardians.c
4	libguile/frames.c
4	libguile/boolean.c
4	libguile/arbiters.c
4	libguile/alist.c
4	guile-readline/ChangeLog-2008
4	emacs/gds-scheme.el
4	doc/use-cases.txt
4	doc/sources/unix.texi
4	doc/sources/libguile-tools.texi
4	doc/ref/scheme-debugging.texi
4	doc/ref/preface.texi
4	doc/ref/intro.texi
4	doc/ref/history.texi
4	doc/ref/api-evaluation.texi
4	doc/example-smob/myguile.c
4	doc/example-smob/image-type.c
3	test-suite/tests/version.test
3	test-suite/tests/syncase.test
3	test-suite/tests/structs.test
3	test-suite/tests/streams.test
3	test-suite/tests/statprof.test
3	test-suite/tests/srfi-98.test
3	test-suite/tests/srfi-39.test
3	test-suite/tests/srfi-26.test
3	test-suite/tests/srfi-17.test
3	test-suite/tests/srfi-10.test
3	test-suite/tests/sort.test
3	test-suite/tests/ramap.test
3	test-suite/tests/options.test
3	test-suite/tests/interp.test
3	test-suite/tests/i18n.test
3	test-suite/tests/guardians.test
3	test-suite/tests/gc.test
3	test-suite/tests/compiler.test
3	module/system/base/syntax.scm
3	module/system/base/language.scm
3	module/srfi/srfi-98.scm
3	module/srfi/srfi-11.scm
3	module/srfi/srfi-1.scm
3	module/oop/goops/dispatch.scm
3	module/language/tree-il/optimize.scm
3	module/language/tree-il/fix-letrec.scm
3	module/language/objcode/spec.scm
3	module/language/glil.scm
3	module/language/elisp/compile-tree-il.scm
3	module/language/assembly/decompile-bytecode.scm
3	module/language/assembly/compile-bytecode.scm
3	module/language/assembly.scm
3	module/ice-9/streams.scm
3	module/ice-9/serialize.scm
3	module/ice-9/optargs.scm
3	module/ice-9/occam-channel.scm
3	module/ice-9/gds-server.scm
3	module/ice-9/debugger/command-loop.scm
3	module/ice-9/debug.scm
3	module/ice-9/and-let-star.scm
3	meta/Makefile.am
3	libguile/vm-engine.c
3	libguile/strings.h
3	libguile/stackchk.c
3	libguile/rw.c
3	libguile/procprop.c
3	libguile/private-options.h
3	libguile/pairs.c
3	libguile/options.c
3	libguile/objcodes.c
3	libguile/modules.c
3	libguile/guile-snarf-docs.in
3	libguile/gsubr.h
3	libguile/generalized-vectors.c
3	libguile/frames.h
3	libguile/foreign.c
3	libguile/feature.c
3	libguile/eq.c
3	libguile/conv-integer.i.c
3	libguile/continuations.h
3	libguile/array-handle.h
3	libguile/array-handle.c
3	libguile/Makefile.am
3	guile-readline/readline.h
3	gc-benchmarks/larceny/softscheme.sch
3	gc-benchmarks/larceny/gcold.scm
3	examples/box-dynamic-module/README
3	emacs/patch.el
3	emacs/guile-scheme.el
3	emacs/guile-c.el
3	emacs/gds.el
3	emacs/ChangeLog-2008
3	doc/sources/libguile-overview.texi
3	doc/ref/scheme-using.texi
3	doc/ref/api-memory.texi
3	doc/ref/api-debug.texi
3	benchmark-suite/lib.scm
2	testsuite/the-bug.txt
2	test-suite/tests/threads.test
2	test-suite/tests/srfi-88.test
2	test-suite/tests/srfi-69.test
2	test-suite/tests/srfi-60.test
2	test-suite/tests/srfi-37.test
2	test-suite/tests/srfi-35.test
2	test-suite/tests/srfi-31.test
2	test-suite/tests/srfi-19.test
2	test-suite/tests/srfi-11.test
2	test-suite/tests/socket.test
2	test-suite/tests/receive.test
2	test-suite/tests/r6rs-ports.test
2	test-suite/tests/procprop.test
2	test-suite/tests/modules.test
2	test-suite/tests/keywords.test
2	test-suite/tests/import.test
2	test-suite/tests/getopt-long.test
2	test-suite/tests/ftw.test
2	test-suite/tests/fractions.test
2	test-suite/tests/exceptions.test
2	test-suite/tests/elisp-reader.test
2	test-suite/tests/bytevectors.test
2	test-suite/tests/bit-operations.test
2	test-suite/tests/and-let-star.test
2	test-suite/standalone/test-system-cmds
2	module/system/vm/trace.scm
2	module/system/vm/program.scm
2	module/srfi/srfi-9.scm
2	module/srfi/srfi-8.scm
2	module/srfi/srfi-69.scm
2	module/srfi/srfi-60.scm
2	module/srfi/srfi-6.scm
2	module/srfi/srfi-4/gnu.scm
2	module/srfi/srfi-4.scm
2	module/srfi/srfi-34.scm
2	module/srfi/srfi-31.scm
2	module/srfi/srfi-26.scm
2	module/srfi/srfi-2.scm
2	module/srfi/srfi-19.scm
2	module/srfi/srfi-17.scm
2	module/srfi/srfi-16.scm
2	module/srfi/srfi-14.scm
2	module/srfi/srfi-13.scm
2	module/srfi/srfi-10.scm
2	module/language/value/spec.scm
2	module/language/tree-il/spec.scm
2	module/language/scheme/spec.scm
2	module/language/scheme/decompile-tree-il.scm
2	module/language/scheme/compile-tree-il.scm
2	module/language/objcode.scm
2	module/language/glil/spec.scm
2	module/language/glil/decompile-assembly.scm
2	module/language/elisp/spec.scm
2	module/language/ecmascript/spec.scm
2	module/language/ecmascript/function.scm
2	module/language/ecmascript/array.scm
2	module/language/bytecode/spec.scm
2	module/language/brainfuck/spec.scm
2	module/language/brainfuck/parse.scm
2	module/language/brainfuck/compile-scheme.scm
2	module/language/assembly/spec.scm
2	module/ice-9/time.scm
2	module/ice-9/threads.scm
2	module/ice-9/slib.scm
2	module/ice-9/runq.scm
2	module/ice-9/regex.scm
2	module/ice-9/receive.scm
2	module/ice-9/q.scm
2	module/ice-9/match.scm
2	module/ice-9/list.scm
2	module/ice-9/getopt-long.scm
2	module/ice-9/gap-buffer.scm
2	module/ice-9/ftw.scm
2	module/ice-9/expect.scm
2	module/ice-9/deprecated.scm
2	module/ice-9/debugging/trc.scm
2	module/ice-9/debugging/traps.scm
2	module/ice-9/debugging/trace.scm
2	module/ice-9/debugging/steps.scm
2	module/ice-9/debugging/breakpoints.scm
2	module/ice-9/debugger/trc.scm
2	module/ice-9/debugger/state.scm
2	module/ice-9/debugger/commands.scm
2	module/ice-9/debugger.scm
2	module/ice-9/common-list.scm
2	module/ice-9/channel.scm
2	meta/guile.m4
2	m4/labels-as-values.m4
2	libguile/vm-i-scheme.c
2	libguile/vm-engine.h
2	libguile/uniform.h
2	libguile/trees.c
2	libguile/tags.h
2	libguile/strerror.c
2	libguile/srfi-14.h
2	libguile/private-gc.h
2	libguile/print.h
2	libguile/objprop.c
2	libguile/mallocs.c
2	libguile/keywords.c
2	libguile/guile-doc-snarf.in
2	libguile/gettext.c
2	libguile/gdbint.c
2	libguile/evalext.c
2	libguile/deprecation.c
2	libguile/conv-uinteger.i.c
2	libguile/boolean.h
2	examples/box-dynamic/README
2	emacs/update-changelog.el
2	emacs/ppexpand.el
2	emacs/multistring.el
2	emacs/guile.el
2	emacs/guile-emacs.scm
2	emacs/gud-guile.el
2	emacs/gds-server.el
2	doc/sources/format.texi
2	doc/ref/expect.texi
2	doc/ref/autoconf.texi
2	doc/groupings.alist
1	testsuite/t-values.scm
1	testsuite/t-catch.scm
1	test-suite/standalone/test-unwind.c
1	test-suite/standalone/test-bad-identifiers
1	test-suite/standalone/Makefile.am
1	test-suite/lib.scm
1	test-suite/ChangeLog-2008
1	srfi/srfi-60.c
1	srfi/srfi-4.h
1	srfi/srfi-14.h
1	module/system/vm/frame.scm
1	module/system/base/compile.scm
1	module/srfi/Makefile.am
1	module/language/elisp/runtime/macro-slot.scm
1	module/language/elisp/lexer.scm
1	module/Makefile.am
1	libguile/vm.h
1	libguile/vm-i-loader.c
1	libguile/vm-expand.h
1	libguile/vectors.h
1	libguile/variable.h
1	libguile/values.c
1	libguile/strorder.c
1	libguile/srfi-13.h
1	libguile/regex-posix.c
1	libguile/quicksort.i.c
1	libguile/pthread-threads.h
1	libguile/properties.c
1	libguile/programs.h
1	libguile/numbers.h
1	libguile/null-threads.h
1	libguile/null-threads.c
1	libguile/mkstemp.c
1	libguile/lang.c
1	libguile/instructions.h
1	libguile/instructions.c
1	libguile/hooks.h
1	libguile/guile.c
1	libguile/gdb_interface.h
1	libguile/gc.h
1	libguile/gc-malloc.c
1	libguile/foreign.h
1	libguile/fluids.h
1	libguile/extensions.c
1	libguile/eval.h
1	libguile/discouraged.h
1	libguile/debug-malloc.c
1	libguile/chars.h
1	libguile/bitvectors.h
1	libguile/ChangeLog-2008
1	libguile.h
1	gc-benchmarks/larceny/run-benchmark.chez
1	gc-benchmarks/larceny/earley.sch
1	examples/scripts/simple-hello.scm
1	examples/modules/main
1	examples/modules/README
1	examples/compat/compat.h
1	examples/README
1	examples/Makefile.am
1	examples/ChangeLog-2008
1	emacs/gds-test.el
1	emacs/Makefile.am
1	doc/use-cases.fig
1	doc/tutorial/Makefile.am
1	doc/sources/unix-other.texi
1	doc/sources/jimb-org.texi
1	doc/ref/standard-library.am
1	doc/ref/mod-getopt-long.texi
1	doc/ref/misc-modules.texi
1	doc/ref/hierarchy.png
1	doc/ref/guile.texi
1	doc/ref/goops.texi
1	doc/ref/api-procedures.texi
1	doc/r5rs/Makefile.am
1	doc/example-smob/ChangeLog-2008
1	doc/ChangeLog-guile-doc
1	benchmark-suite/benchmarks/chars.bm
1	benchmark-suite/ChangeLog-2008
1	README.guile-vm
1	HACKING




^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: rfc: (add-hook 'before-save-hook 'delete-trailing-whitespace)
  2010-01-13  9:06 rfc: (add-hook 'before-save-hook 'delete-trailing-whitespace) Thien-Thi Nguyen
  2010-01-13 10:53 ` Ludovic Courtès
@ 2010-01-13 20:02 ` Andy Wingo
  2010-01-13 20:45   ` Thien-Thi Nguyen
  2010-01-21 20:46 ` Neil Jerram
  2 siblings, 1 reply; 13+ messages in thread
From: Andy Wingo @ 2010-01-13 20:02 UTC (permalink / raw)
  To: Thien-Thi Nguyen; +Cc: guile-devel

On Wed 13 Jan 2010 10:06, Thien-Thi Nguyen <ttn@gnuvola.org> writes:

> I propose Guile also not tolerate trailing whitespace.  What do people
> think?

To change all that code is a bit of a pain, for not very much gain. I
personally don't care about the topic.

I would be happier if my use of Emacs didn't leave me often with
trailing whitespace. But such as it is, I don't want to play manual
garbage collector for stray spaces, which have no detriment on code.

Andy
-- 
http://wingolog.org/




^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: rfc: (add-hook 'before-save-hook 'delete-trailing-whitespace)
  2010-01-13 20:02 ` Andy Wingo
@ 2010-01-13 20:45   ` Thien-Thi Nguyen
  2010-01-14  0:10     ` Ludovic Courtès
  0 siblings, 1 reply; 13+ messages in thread
From: Thien-Thi Nguyen @ 2010-01-13 20:45 UTC (permalink / raw)
  To: guile-devel

() Andy Wingo <wingo@pobox.com>
() Wed, 13 Jan 2010 21:02:03 +0100

   I would be happier if my use of Emacs didn't leave me often with
   trailing whitespace.

See subject line.

   But such as it is, I don't want to play manual garbage
   collector for stray spaces, which have no detriment on code.

Well, if there's concensus, i'm happy to do the janitorial duties.

thi




^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: rfc: (add-hook 'before-save-hook 'delete-trailing-whitespace)
  2010-01-13 20:45   ` Thien-Thi Nguyen
@ 2010-01-14  0:10     ` Ludovic Courtès
  0 siblings, 0 replies; 13+ messages in thread
From: Ludovic Courtès @ 2010-01-14  0:10 UTC (permalink / raw)
  To: guile-devel

Hi,

Thien-Thi Nguyen <ttn@gnuvola.org> writes:

> Well, if there's concensus, i'm happy to do the janitorial duties.

IMO the cons (blurring VCS history) outweighs the pros.

But please (setq show-trailing-whitespace t).

Thanks,
Ludo’.





^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: rfc: (add-hook 'before-save-hook 'delete-trailing-whitespace)
  2010-01-13 10:53 ` Ludovic Courtès
  2010-01-13 14:22   ` Thien-Thi Nguyen
@ 2010-01-21 20:31   ` Neil Jerram
  2010-01-21 20:44     ` Ludovic Courtès
  1 sibling, 1 reply; 13+ messages in thread
From: Neil Jerram @ 2010-01-21 20:31 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guile-devel

ludo@gnu.org (Ludovic Courtès) writes:

> (using ‘git blame’ becomes almost useless).

Wouldn't `git blame -w' solve that problem?

    Neil





^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: rfc: (add-hook 'before-save-hook 'delete-trailing-whitespace)
  2010-01-21 20:31   ` Neil Jerram
@ 2010-01-21 20:44     ` Ludovic Courtès
  0 siblings, 0 replies; 13+ messages in thread
From: Ludovic Courtès @ 2010-01-21 20:44 UTC (permalink / raw)
  To: Neil Jerram; +Cc: guile-devel

Hi,

Neil Jerram <neil@ossau.uklinux.net> writes:

> ludo@gnu.org (Ludovic Courtès) writes:
>
>> (using ‘git blame’ becomes almost useless).
>
> Wouldn't `git blame -w' solve that problem?

Hmm, possibly, yes (I didn’t know this option).

Thanks,
Ludo’.




^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: rfc: (add-hook 'before-save-hook 'delete-trailing-whitespace)
  2010-01-13  9:06 rfc: (add-hook 'before-save-hook 'delete-trailing-whitespace) Thien-Thi Nguyen
  2010-01-13 10:53 ` Ludovic Courtès
  2010-01-13 20:02 ` Andy Wingo
@ 2010-01-21 20:46 ` Neil Jerram
  2010-01-23  0:38   ` Thien-Thi Nguyen
  2 siblings, 1 reply; 13+ messages in thread
From: Neil Jerram @ 2010-01-21 20:46 UTC (permalink / raw)
  To: Thien-Thi Nguyen; +Cc: guile-devel

Thien-Thi Nguyen <ttn@gnuvola.org> writes:

> The above form lives in my Emacs init flow, causing trailing whitespace to be
> deleted on `save-buffer' (C-x C-s).  For many projects (but not Guile) this
> DTRT, because trailing whitespace is not tolerated.  Jim Meyering gives a
> nice rationale in <http://old.nabble.com/whitespace-cleanup-td6828228.html>.

I'm afraid those rationales don't persuade me:

>>  - trailing blanks can change the semantics of your code

That's what tests are for.

>>  - these differences can lead to unnecessary merge conflicts

Hasn't been a problem in practice AFAIK.  I've been doing a lot of
merging at work recently, with a lot of real merge conflicts.  The few
that are caused by whitespace are easy to spot, and give me a pleasant
interlude between the ones that are really difficult.

>>  - some people use editors that automatically convert / +\t/
>>      sequences to just TABs (this is relevant not just for leading
>>      indentation, but also for e.g., regular expressions, where
>>      it's easy to write a e.g. "[ ]" (space-TAB) as part of a
>>      grep or sed pattern.  Of course, if you're using a modern
>>      enough tool, you can avoid the problem by using "\t".  This
>>      is why it is better to write the above as "[ ]" (TAB-space).

I can't see why this has to do with _trailing_ whitespace, and it seems
obvious to me that those editors are just broken.

>>  - some packages (coreutils :-) have a "make distcheck" rule that will
>>      fail if it finds any such offending sequence in its sources.

We don't have that.

> I propose Guile also not tolerate trailing whitespace.  What do people think?

If you are concerned that your hook is going to generate diffs that
other developers might think are spurious - I'd say don't worry about
that.  I personally won't object to that, and I don't think Andy or Ludo
would either.

If you anticipate some other practical problem, can you say more about
what it is?

Thanks,
        Neil




^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: rfc: (add-hook 'before-save-hook 'delete-trailing-whitespace)
  2010-01-21 20:46 ` Neil Jerram
@ 2010-01-23  0:38   ` Thien-Thi Nguyen
  2010-01-23 16:10     ` Ludovic Courtès
  0 siblings, 1 reply; 13+ messages in thread
From: Thien-Thi Nguyen @ 2010-01-23  0:38 UTC (permalink / raw)
  To: guile-devel

() Neil Jerram <neil@ossau.uklinux.net>
() Thu, 21 Jan 2010 20:46:26 +0000

   > Jim Meyering gives a nice rationale in
   > <http://old.nabble.com/whitespace-cleanup-td6828228.html>.

   I'm afraid those rationales don't persuade me: [...]

Well, i respect the work Jim Meyering does and read his rationale
w/ a more general mindset.  I agree Guile is not GNU coreutils,
and have elided the "does not apply" parts, w/ the exception of:

   > [merge conflicts]

   Hasn't been a problem in practice AFAIK.  I've been doing a lot
   of merging at work recently, with a lot of real merge
   conflicts.  The few that are caused by whitespace are easy to
   spot, and give me a pleasant interlude between the ones that
   are really difficult.

If there is a whitespace policy, we can eliminate those conflicts
(by rejecting non-compliant patches).  This is good!

   If you are concerned that your hook is going to generate diffs
   that other developers might think are spurious - I'd say don't
   worry about that.  I personally won't object to that, and I
   don't think Andy or Ludo would either.

I would rather clarify the policy (either way) and then adopt it,
than go w/o policy.  If the policy (either way) is clear, i know
how to avoid introducing spurious diffs and being inconvenienced
by them from others, and can help others do the same.

   If you anticipate some other practical problem, can you say
   more about what it is?

The practical problem is that w/o policy spurious diffs come and
go, instead of being addressed once (one-shot big-commit if policy
is "deny", a blurb in HACKING to justly orient newbies if "allow").
This is "practical" in the sense of "what people will do in
practice".  It is a "problem" in the sense of "i hate burning my
geezer brain-cells on administrivia over and over and over...".

Revised proposal: Let's decide one way or the other, record the
decision (including link to this thread), and bask in the time and
effort saved by our forward thinking when the issue resurfaces w/
new programmers.

thi




^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: rfc: (add-hook 'before-save-hook 'delete-trailing-whitespace)
  2010-01-23  0:38   ` Thien-Thi Nguyen
@ 2010-01-23 16:10     ` Ludovic Courtès
  2010-02-09 13:30       ` Thien-Thi Nguyen
  0 siblings, 1 reply; 13+ messages in thread
From: Ludovic Courtès @ 2010-01-23 16:10 UTC (permalink / raw)
  To: guile-devel

Hi,

Thien-Thi Nguyen <ttn@gnuvola.org> writes:

> Revised proposal: Let's decide one way or the other,

To me it’s clear: status quo, i.e., no ‘whitespace-cleanup’ or similar
all around, but encourage people not to leave trailing whitespace.

Thanks,
Ludo’.





^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: rfc: (add-hook 'before-save-hook 'delete-trailing-whitespace)
  2010-01-23 16:10     ` Ludovic Courtès
@ 2010-02-09 13:30       ` Thien-Thi Nguyen
  2010-02-14 14:20         ` Ludovic Courtès
  0 siblings, 1 reply; 13+ messages in thread
From: Thien-Thi Nguyen @ 2010-02-09 13:30 UTC (permalink / raw)
  To: guile-devel

[-- Attachment #1: Type: text/plain, Size: 320 bytes --]

() ludo@gnu.org (Ludovic Courtès)
() Sat, 23 Jan 2010 17:10:50 +0100

   To me it’s clear: status quo, i.e., no ‘whitespace-cleanup’
   or similar all around, but encourage people not to leave
   trailing whitespace.

OK, thanks for the clarification.
Please find attached a patch to HACKING.

thi



[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Document-trailing-whitespace-policy.patch --]
[-- Type: text/x-diff, Size: 1377 bytes --]

From 893dfb5d11e6d2ae6ff56492741711ec368257a4 Mon Sep 17 00:00:00 2001
From: Thien-Thi Nguyen <ttn@gnuvola.org>
Date: Tue, 9 Feb 2010 14:29:36 +0100
Subject: [PATCH] Document trailing whitespace policy.

* HACKING (Coding standards): Delete trailing whitespace.
Add blurb documenting trailing whitespace policy.

Signed-off-by: Thien-Thi Nguyen <ttn@gnuvola.org>
---
 HACKING |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/HACKING b/HACKING
index ffe04a8..7463fe5 100644
--- a/HACKING
+++ b/HACKING
@@ -230,7 +230,7 @@ When deprecating a definition, always follow this procedure:
 
 - Write commit messages for functions written in C using the
 functions' C names, and write entries for functions written in Scheme
-using the functions' Scheme names.  For example, 
+using the functions' Scheme names.  For example,
 
   * foo.c: Moved scm_procedure_documentation from eval.c.
 
@@ -278,6 +278,9 @@ the list of years in the copyright notice at the top of the file.
 - When you get bug reports or patches from people, be sure to list
 them in THANKS.
 
+- Do not introduce trailing whitespace (and feel free to clean it up
+opportunistically, that is, if doing so is part of some other change).
+The goal is to reduce (and over time, eliminate) spurious diffs.
 
 Naming conventions =================================================
 
-- 
1.6.3.2


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: rfc: (add-hook 'before-save-hook 'delete-trailing-whitespace)
  2010-02-09 13:30       ` Thien-Thi Nguyen
@ 2010-02-14 14:20         ` Ludovic Courtès
  0 siblings, 0 replies; 13+ messages in thread
From: Ludovic Courtès @ 2010-02-14 14:20 UTC (permalink / raw)
  To: guile-devel

Hi,

Thien-Thi Nguyen <ttn@gnuvola.org> writes:

> () ludo@gnu.org (Ludovic Courtès)
> () Sat, 23 Jan 2010 17:10:50 +0100
>
>    To me it’s clear: status quo, i.e., no ‘whitespace-cleanup’
>    or similar all around, but encourage people not to leave
>    trailing whitespace.
>
> OK, thanks for the clarification.
> Please find attached a patch to HACKING.

Committed, thanks.

Ludo’.





^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2010-02-14 14:20 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-01-13  9:06 rfc: (add-hook 'before-save-hook 'delete-trailing-whitespace) Thien-Thi Nguyen
2010-01-13 10:53 ` Ludovic Courtès
2010-01-13 14:22   ` Thien-Thi Nguyen
2010-01-21 20:31   ` Neil Jerram
2010-01-21 20:44     ` Ludovic Courtès
2010-01-13 20:02 ` Andy Wingo
2010-01-13 20:45   ` Thien-Thi Nguyen
2010-01-14  0:10     ` Ludovic Courtès
2010-01-21 20:46 ` Neil Jerram
2010-01-23  0:38   ` Thien-Thi Nguyen
2010-01-23 16:10     ` Ludovic Courtès
2010-02-09 13:30       ` Thien-Thi Nguyen
2010-02-14 14:20         ` Ludovic Courtès

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).