Commit 2e41b805bdf4a6a89bc103f9aeb98ab513193754

Authored by Jay Berkenbilt
1 parent 77e88949

Update TODO with additional notes

Showing 1 changed file with 38 additions and 19 deletions
... ... @@ -41,37 +41,56 @@ Soon: Break ground on "Document-level work"
41 41 Code Formatting
42 42 ===============
43 43  
44   -Use clang-format-15.
45   -
46   -* Put a .clang-format at the top of the repository -- see below for content.
47   -* Reformat all files:
48   -
49   - for i in **/*.cc **/*.c **/*.h **/*.hh; do
50   - clang-format < $i >| $i.new && mv $i.new $i
51   - done
52   -
53   -* Carefully inspect the diff. There are some places where a comment to
54   - force a line break might be in order. Document use of // line-break
  44 +Document about code formatting:
55 45  
  46 +* Use clang-format-15.
56 47 * Update README-maintainer about formatting. Mention
57 48  
58 49 // clang-format off
59 50 // clang-format on
60 51  
61   - as well as the use of a comment to force a line break.
  52 + as well as the use of a comment to force a line break. Convention:
  53 + // line-break
  54 +
  55 +* .dir-locals.el -- most of the time, emacs's formatting agrees with
  56 + clang-format. When they differ, clang-format is authoritative.
  57 + Significant differences:
  58 + * clang-format-15 bug that when
  59 +
  60 + type function(args)
62 61  
63   -https://clang.llvm.org/docs/ClangFormatStyleOptions.html
  62 + is longer than 80 characters, the continuation line rule takes
  63 + precedence over the break after type rule and the function ends
  64 + getting intended. (Find an example and report.)
  65 + * Emacs doesn't indent breaking strings concatenated with + over
  66 + lines but clang-format does. It's clearer with clang-format. To
  67 + get emacs and clang-format to agree, parenthesize the expression
  68 + that builds the concatenated string.
  69 + * With
64 70  
65   -Remaining work:
  71 + long_function(long_function(
  72 + args)
66 73  
67   -* Document .dir-locals.el and how it's close but not perfect
  74 + clang-format anchors relative to the first function, and emacs
  75 + anchors relative to the second function. Use
  76 +
  77 + long_function(
  78 + // line-break
  79 + long_function(
  80 + args)
  81 +
  82 + to resolve.
68 83 * Consider blame.ignoreRevsFile if it seems to help
69   -* Add a `make format` similar to `make spell` (or whatever this ends
70   - up being with cmake)
  84 +* Add a script to format the code.
  85 +
  86 + for i in **/*.cc **/*.c **/*.h **/*.hh; do
  87 + clang-format < $i >| $i.new && mv $i.new $i
  88 + done
  89 +
71 90 * Consider a github action to check formatting. I don't want
72 91 formatting failures to prevent all the tests from being run.
73   - Alternatively, add running `make format` as a release preparation
74   - check like `make spell`.
  92 + Alternatively, add running the format script as a release
  93 + preparation check like running the spell checker.
75 94  
76 95 cmake
77 96 =====
... ...