Differences between revisions 1 and 3 (spanning 2 versions)
Revision 1 as of 2019-10-04 20:12:59
Size: 1320
Comment:
Revision 3 as of 2019-10-04 20:36:14
Size: 2615
Comment:
Deletions are marked like this. Additions are marked like this.
Line 30: Line 30:
| idea | fix | format source | proposal |
| command line | fix.TOOL:command ({rootpath} as the file name) | |
|| idea || fix || format source || proposal ||
|| command line || fix.TOOL:command ({rootpath}) || format-source.TOOL ($HG_FILENAME)|| ||
|| line range flag || fix.TOOL:linerange ({first}:{last}) || ø || ||
|| || fix.TOOL:skipclean=BOOL || ø || ||
|| pattern to format || fix.TOOL:pattern || in `.hg-format-source` || ||
|| tool priority || fix.TOOL:priority || ø || ||
|| metadata (strange) || fix.TOOL:metadata=BOOL || ø || ||
|| mode || ø || format-source.TOOL:mode={pipe/file} || ||
|| (input mode) || ø || format-source.TOOL:mode.input={pipe/file} || ||
|| (output mode) || ø || format-source.TOOL:mode.output={pipe/file} || ||
|| tool version || ø || format-source.TOOL:version-command || ||
|| version format || ø || format-source.TOOL:version-regex || ||
|| path of default config files || ø || format-source.TOOL:configpaths=[] || ||
Line 33: Line 44:
(format-sources also have a global `run-mode` config)
Line 36: Line 48:
Regarding command:

  * `hg fix -w [--whole]` == `hg format-source --current`
  * `hg fix --rev REV [--whole]` rewrite changesets (involved flag `-rev`, `--base` `--all`)
  * `hg format-source TOOL PATTERN [--extra-config-file]` create a new changeset (involved `-m`, `-u`, `-d`, `-l`
Line 38: Line 56:
 * (./) various
 * (./) step
 * {X} That
 * {X} need
 * {X} to
 * {X} be
 * {X} performed
 * decide on config
 * decide on UI
 * decide on "in repo" format
 * write a common library
 * write final commands
 * put this in core ?
 * ...
 * profit
Line 48: Line 67:
 * pointer
 * to
 * related
 * page
 * AutomaticFormattingPlan
 * https://bitbucket.org/octobus/format-source/src/default/
 * https://octobus.net/blog/2018-12-03-mercurial-format-source-0.2.0.html

Note:

This page is primarily intended for developers of Mercurial.

Unifying Fix and FormatSource Extensions

Status: Project

Main proponents: DannyHooper and Pierre-YvesDavid

Source formatting is great and a trending topic. There are multiples associated issues. The fix extensions deal with a subset of these issue and the format-source extensions deal with another subset (with some overlap).

We should have a single extension dealing with all issues.

1. Goal

There is three main issue with source formatting:

  • Applying formatting in your working copy
  • Applying formatting on content of existing draft changesets
  • Applying formatting change during merge // minimizing conflict that are purely formatting.

fix deal with the first 2; Format source deal with the first and the last. We want an unified approache using common code, common config and common UX/UI.

2. Detailed description

2.1. config

idea

fix

format source

proposal

command line

fix.TOOL:command ({rootpath})

format-source.TOOL ($HG_FILENAME)

line range flag

fix.TOOL:linerange ({first}:{last})

ø

fix.TOOL:skipclean=BOOL

ø

pattern to format

fix.TOOL:pattern

in .hg-format-source

tool priority

fix.TOOL:priority

ø

metadata (strange)

fix.TOOL:metadata=BOOL

ø

mode

ø

format-source.TOOL:mode={pipe/file}

(input mode)

ø

format-source.TOOL:mode.input={pipe/file}

(output mode)

ø

format-source.TOOL:mode.output={pipe/file}

tool version

ø

format-source.TOOL:version-command

version format

ø

format-source.TOOL:version-regex

path of default config files

ø

format-source.TOOL:configpaths=[]

(format-sources also have a global run-mode config)

2.2. user interface

Regarding command:

  • hg fix -w [--whole] == hg format-source --current

  • hg fix --rev REV  [--whole] rewrite changesets (involved flag -rev, --base --all)

  • hg format-source TOOL PATTERN [--extra-config-file] create a new changeset (involved -m, -u, -d, -l

3. Roadmap

  • decide on config
  • decide on UI
  • decide on "in repo" format
  • write a common library
  • write final commands
  • put this in core ?
  • ...
  • profit

4. See Also


CategoryDeveloper CategoryNewFeatures

FormatFixSourcePlan (last edited 2020-05-11 20:06:51 by timeless)