#pragma section-numbers 2 <> = 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. == 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` deals with the first 2; Format source deals with the first and the last. We want a unified approache using common code, common config and common UX/UI. == Detailed description == === 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) In addition, format-source comes with default definition for common tools. === 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` == Roadmap == * decide on config * decide on UI * decide on "in repo" format * write a common library * write final commands * put this in core ? * ... * profit == See Also == * AutomaticFormattingPlan * https://bitbucket.org/octobus/format-source/src/default/ * https://octobus.net/blog/2018-12-03-mercurial-format-source-0.2.0.html ---- CategoryDeveloper CategoryNewFeatures