Full Code of dandavison/delta for AI

main 2e1f08c59364 cached
201 files
4.1 MB
1.1M tokens
1308 symbols
1 requests
Download .txt
Showing preview only (4,343K chars total). Download the full file or copy to clipboard to get everything.
Repository: dandavison/delta
Branch: main
Commit: 2e1f08c59364
Files: 201
Total size: 4.1 MB

Directory structure:
gitextract_xay1pb2d/

├── .cargo/
│   └── audit.toml
├── .gitattributes
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug.md
│   │   └── feature.md
│   ├── dependabot.yml
│   └── workflows/
│       ├── audit.yml
│       ├── cd.yml
│       ├── ci.yml
│       └── manual.yml
├── .gitignore
├── ARCHITECTURE.md
├── CONTRIBUTING.md
├── Cargo.toml
├── LICENSE
├── Makefile
├── README.md
├── etc/
│   ├── bin/
│   │   ├── ansifilter
│   │   ├── check-show-config-options
│   │   ├── diagnostics
│   │   └── list-options
│   ├── ci/
│   │   ├── .gitattributes
│   │   └── before_deploy.sh
│   ├── completion/
│   │   ├── completion.bash
│   │   ├── completion.fish
│   │   └── completion.zsh
│   ├── docker/
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── delta-ubuntu
│   │   └── ubuntu.Dockerfile
│   ├── examples/
│   │   ├── 119-within-line-edits
│   │   ├── 121-unrecognized-content-before-diff-1
│   │   ├── 121-unrecognized-content-before-diff-2
│   │   ├── 125-merge-conflict-1.diff
│   │   ├── 125-merge-conflict-2.diff
│   │   ├── 127-paths-with-spaces--added
│   │   ├── 127-paths-with-spaces--renamed
│   │   ├── 128-empty-file
│   │   ├── 139-file-with-space-delimited-dash.diff
│   │   ├── 140-within-line-edits
│   │   ├── 140-within-line-edits-counter-example
│   │   ├── 189-merge-conflict.1.diff
│   │   ├── 189-merge-conflict.2.diff
│   │   ├── 189-merge-conflict.3.diff
│   │   ├── 189-merge-conflict.4.diff
│   │   ├── 189-merge-conflict.5.diff
│   │   ├── 205-highlight-bug-1.diff
│   │   ├── 205-highlight-bug-2.diff
│   │   ├── 205-highlight-bug.diff
│   │   ├── 308-side-by-side-tabs.diff
│   │   ├── 345-keep-plus-minus-markers.diff
│   │   ├── 345-keep-plus-minus-markers.gitconfig
│   │   ├── 388-whitespace_error_keep_plus_minus_marker
│   │   ├── 55-unicode-width.diff
│   │   ├── 56-unified-directory-diff
│   │   ├── 60-submodule
│   │   ├── 662-submodules
│   │   ├── 72-color-moved-2.diff
│   │   ├── 72-color-moved-3.diff
│   │   ├── 72-color-moved-4.diff
│   │   ├── 72-color-moved.diff
│   │   ├── 802-color-moved.diff
│   │   ├── 813-cthulhu.diff
│   │   ├── 822-hunk-header-within-merge-conflict.diff
│   │   ├── 93-binary
│   │   └── styles.py
│   ├── performance/
│   │   ├── README.md
│   │   ├── all-benchmarks.json
│   │   ├── chronologer.yaml
│   │   ├── data/
│   │   │   ├── hyperfine-output.json
│   │   │   └── hyperfine-processed-output.json
│   │   └── index.html
│   └── release.Makefile
├── manual/
│   ├── .gitignore
│   ├── Makefile
│   ├── book.toml
│   └── src/
│       ├── SUMMARY.md
│       ├── build-delta-from-source.md
│       ├── choosing-colors-styles.md
│       ├── color-moved-support.md
│       ├── comparisons-with-other-tools.md
│       ├── configuration.md
│       ├── custom-themes.md
│       ├── delta-configs-used-in-screenshots.md
│       ├── diff-highlight-and-diff-so-fancy-emulation.md
│       ├── environment-variables.md
│       ├── features-named-groups-of-settings.md
│       ├── features.md
│       ├── full---help-output.md
│       ├── get-started.md
│       ├── git-blame.md
│       ├── grep.md
│       ├── how-delta-works.md
│       ├── hyperlinks.md
│       ├── installation.md
│       ├── introduction.md
│       ├── line-numbers.md
│       ├── merge-conflicts.md
│       ├── navigation-keybindings-for-large-diffs.md
│       ├── related-projects.md
│       ├── side-by-side-view.md
│       ├── supported-languages-and-themes.md
│       ├── tips-and-tricks/
│       │   ├── 24-bit-color-truecolor.md
│       │   ├── export-to-html.md
│       │   ├── mouse-scrolling.md
│       │   ├── shell-completion.md
│       │   ├── tips-and-tricks.md
│       │   ├── toggling-delta-features.md
│       │   ├── using-delta-on-windows.md
│       │   ├── using-delta-with-gnu-screen.md
│       │   ├── using-delta-with-magit.md
│       │   ├── using-delta-with-tmux.md
│       │   └── using-delta-with-vscode.md
│       ├── tips-and-tricks.md
│       └── usage.md
├── src/
│   ├── align.rs
│   ├── ansi/
│   │   ├── console_tests.rs
│   │   ├── iterator.rs
│   │   └── mod.rs
│   ├── cli.rs
│   ├── color.rs
│   ├── colors.rs
│   ├── config.rs
│   ├── delta.rs
│   ├── edits.rs
│   ├── env.rs
│   ├── features/
│   │   ├── color_only.rs
│   │   ├── diff_highlight.rs
│   │   ├── diff_so_fancy.rs
│   │   ├── hyperlinks.rs
│   │   ├── line_numbers.rs
│   │   ├── mod.rs
│   │   ├── navigate.rs
│   │   ├── raw.rs
│   │   └── side_by_side.rs
│   ├── format.rs
│   ├── git_config/
│   │   ├── mod.rs
│   │   └── remote.rs
│   ├── handlers/
│   │   ├── blame.rs
│   │   ├── commit_meta.rs
│   │   ├── diff_header.rs
│   │   ├── diff_header_diff.rs
│   │   ├── diff_header_misc.rs
│   │   ├── diff_stat.rs
│   │   ├── draw.rs
│   │   ├── git_show_file.rs
│   │   ├── grep.rs
│   │   ├── hunk.rs
│   │   ├── hunk_header.rs
│   │   ├── merge_conflict.rs
│   │   ├── mod.rs
│   │   ├── ripgrep_json.rs
│   │   └── submodule.rs
│   ├── main.rs
│   ├── minusplus.rs
│   ├── options/
│   │   ├── get.rs
│   │   ├── mod.rs
│   │   ├── option_value.rs
│   │   ├── set.rs
│   │   └── theme.rs
│   ├── paint.rs
│   ├── parse_style.rs
│   ├── parse_styles.rs
│   ├── style.rs
│   ├── subcommands/
│   │   ├── diff.rs
│   │   ├── external.rs
│   │   ├── generate_completion.rs
│   │   ├── list_syntax_themes.rs
│   │   ├── mod.rs
│   │   ├── parse_ansi.rs
│   │   ├── sample_diff.rs
│   │   ├── show_colors.rs
│   │   ├── show_config.rs
│   │   ├── show_syntax_themes.rs
│   │   └── show_themes.rs
│   ├── tests/
│   │   ├── ansi_test_utils.rs
│   │   ├── integration_test_utils.rs
│   │   ├── mod.rs
│   │   ├── test_example_diffs.rs
│   │   └── test_utils.rs
│   ├── utils/
│   │   ├── bat/
│   │   │   ├── LICENSE
│   │   │   ├── assets.rs
│   │   │   ├── dirs.rs
│   │   │   ├── less.rs
│   │   │   ├── mod.rs
│   │   │   ├── output.rs
│   │   │   └── terminal.rs
│   │   ├── git.rs
│   │   ├── helpwrap.rs
│   │   ├── mod.rs
│   │   ├── path.rs
│   │   ├── process.rs
│   │   ├── regex_replacement.rs
│   │   ├── round_char_boundary.rs
│   │   ├── syntect.rs
│   │   ├── tabs.rs
│   │   └── workarounds.rs
│   └── wrapping.rs
├── tests/
│   ├── test_deprecated_options
│   ├── test_navigate_less_history_file
│   └── test_raw_output_matches_git_on_full_repo_history
└── themes.gitconfig

================================================
FILE CONTENTS
================================================

================================================
FILE: .cargo/audit.toml
================================================
# See https://github.com/rustsec/rustsec/blob/main/cargo-audit/audit.toml.example

[advisories]
ignore = ["RUSTSEC-2020-0159", "RUSTSEC-2020-0071"]


================================================
FILE: .gitattributes
================================================
*.Makefile linguist-language=Makefile
etc/performance/* linguist-vendored
*.rs whitespace=tab-in-indent,trailing-space,-space-before-tab eol=lf


================================================
FILE: .github/ISSUE_TEMPLATE/bug.md
================================================
---
name: Bug
about: Create a bug report
title: "\U0001F41B "
labels: ''
assignees: ''

---

- [ ] Please include the raw text output from git, so that we can reproduce the problem.
      (You can use `git --no-pager` to produce the raw text output.)
- [ ] A screenshot of Delta's output is often helpful also.

Thanks for filing a Delta bug report!


================================================
FILE: .github/ISSUE_TEMPLATE/feature.md
================================================
---
name: Feature
about: Propose an improvement
title: "\U0001F680 "
labels: ''
assignees: ''

---

Hi, thanks for contributing to Delta, please go ahead and describe your proposal!


================================================
FILE: .github/dependabot.yml
================================================
version: 2
updates:
- package-ecosystem: cargo
  directory: "/"
  schedule:
    interval: daily
  open-pull-requests-limit: 10
  ignore:
  - dependency-name: regex
    versions:
    - 1.4.4
- package-ecosystem: "github-actions"
  directory: "/"
  schedule:
    interval: "daily"


================================================
FILE: .github/workflows/audit.yml
================================================
name: Security audit

on:
  schedule:
    # Runs at 00:00 UTC everyday
    - cron: '0 0 * * *'
  push:
    paths:
      - '**/Cargo.toml'
      - '**/Cargo.lock'
      - '**/audit.toml'

jobs:
  audit:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
      - uses: actions-rs/audit-check@v1
        with:
          token: ${{ secrets.GITHUB_TOKEN }}



================================================
FILE: .github/workflows/cd.yml
================================================
name: Continuous Deployment

on:
  push:
    tags:
      - '[0-9]+.[0-9]+.[0-9]+'

jobs:
  publish:
    name: Publishing for ${{ matrix.job.os }}
    runs-on: ${{ matrix.job.os }}
    strategy:
      matrix:
        job:
          - os: macos-latest
            target: aarch64-apple-darwin
            use-cross: false
          - os: windows-latest
            target: x86_64-pc-windows-msvc
            use-cross: false
          - os: ubuntu-20.04
            target: x86_64-unknown-linux-gnu
            use-cross: false
          - os: ubuntu-latest
            target: x86_64-unknown-linux-musl
            use-cross: true
          - os: ubuntu-20.04
            target: i686-unknown-linux-gnu
            use-cross: true
          - os: ubuntu-20.04
            target: arm-unknown-linux-gnueabihf
            use-cross: true
          - os: ubuntu-20.04
            target: aarch64-unknown-linux-gnu
            use-cross: true

    steps:
      - name: Installing Rust toolchain
        uses: dtolnay/rust-toolchain@stable
        with:
          targets: ${{ matrix.job.target }}
      - name: Checkout repository
        uses: actions/checkout@v3
      - name: Install cross
        if: matrix.job.use-cross
        uses: taiki-e/install-action@v2
        with:
          tool: cross
      - name: Cargo build
        env:
          MACOSX_DEPLOYMENT_TARGET: 10.7
        shell: bash
        run: |
          if [[ "${{ matrix.job.use-cross }}" == "true" ]]; then
            cross build --release --target ${{ matrix.job.target }}
          else
            cargo build --release --target ${{ matrix.job.target }}
          fi

      - name: Install required dependencies
        shell: bash
        run: |
          if [[ ${{ matrix.job.target }} == arm-unknown-linux-gnueabihf ]]; then
              sudo apt update
              sudo apt-get install -y binutils-arm-linux-gnueabihf
          fi
          if [[ ${{ matrix.job.target }} == aarch64-unknown-linux-gnu ]]; then
              sudo apt update
              sudo apt-get install -y binutils-aarch64-linux-gnu
          fi

      - name: Packaging final binary
        shell: bash
        env:
          TARGET: ${{ matrix.job.target }}
          PROJECT_NAME: delta
          PACKAGE_NAME: git-delta
          OS_NAME: ${{ matrix.job.os }}
        run: ./etc/ci/before_deploy.sh

      - name: Releasing assets
        uses: softprops/action-gh-release@v1
        with:
          files: |
            delta-*-${{ matrix.job.target }}.*
            git-delta*.deb
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

  publish-to-cargo:
    name: Publishing to Cargo
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: dtolnay/rust-toolchain@stable
      - run: cargo publish --token ${{ secrets.CARGO_API_KEY }} --allow-dirty

  publish-to-winget:
    name: Publish to WinGet
    runs-on: ubuntu-latest
    needs: publish
    steps:
      - uses: vedantmgoyal2009/winget-releaser@v2
        with:
          identifier: dandavison.delta
          version: ${{ github.ref_name }}
          installers-regex: '-pc-windows-msvc\.zip$'
          token: ${{ secrets.WINGET_TOKEN }}


================================================
FILE: .github/workflows/ci.yml
================================================
name: CI

on:
  push:
    branches:
      - master
  pull_request:

jobs:
  unit_tests:
    name: Unit tests
    runs-on: ${{ matrix.job.os }}
    strategy:
      matrix:
        job:
          - os: macos-latest
            target: aarch64-apple-darwin
            use-cross: false
          - os: windows-latest
            target: x86_64-pc-windows-msvc
            use-cross: false
          - os: ubuntu-latest
            target: x86_64-unknown-linux-gnu
            use-cross: false
          - os: ubuntu-latest
            target: x86_64-unknown-linux-musl
            use-cross: true
          - os: ubuntu-latest
            target: i686-unknown-linux-gnu
            use-cross: true
          - os: ubuntu-latest
            target: arm-unknown-linux-gnueabihf
            use-cross: true
          - os: ubuntu-latest
            target: aarch64-unknown-linux-gnu
            use-cross: true
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
      - name: Install Rust
        uses: dtolnay/rust-toolchain@stable
        with:
          targets: ${{ matrix.job.target }}
      - name: Install cross
        if: matrix.job.use-cross
        uses: taiki-e/install-action@v2
        with:
          tool: cross
      - name: Unit tests
        shell: bash
        run: |
          if [[ "${{ matrix.job.use-cross }}" == "true" ]]; then
            cross test --target ${{ matrix.job.target }} --verbose -- --nocapture
          else
            cargo test --target ${{ matrix.job.target }} --verbose -- --nocapture
          fi

  integration_tests:
    name: Integration tests
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [macos-latest, ubuntu-latest]
        include:
          - os: macos-latest
            target: aarch64-apple-darwin
          - os: ubuntu-latest
            target: x86_64-unknown-linux-gnu
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
      - name: Install Rust
        uses: dtolnay/rust-toolchain@stable
      - name: Build for release
        run: cargo build --target ${{ matrix.target }} --release
      - name: End to end tests
        run: |
          DELTA_BIN=target/${{ matrix.target }}/release/delta
          ./tests/test_raw_output_matches_git_on_full_repo_history $DELTA_BIN
          ./tests/test_deprecated_options $DELTA_BIN > /dev/null
      - name: Run executable
        run: cargo run --release --target ${{ matrix.target }} -- < /dev/null

  rustfmt:
    name: Rustfmt
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
      - name: Install Rust
        uses: dtolnay/rust-toolchain@stable
        with:
          components: rustfmt
      - name: Check formatting
        run: cargo fmt --all --check

  clippy:
    name: Clippy
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
      - name: Install Rust
        uses: dtolnay/rust-toolchain@stable
        with:
          components: clippy
      - name: Clippy Check
        run: cargo clippy -- -D warnings

  coverage:
    name: Code coverage
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
      - name: Install stable toolchain
        uses: dtolnay/rust-toolchain@stable
      - name: Install cargo-tarpaulin
        uses: taiki-e/install-action@v2
        with:
          tool: cargo-tarpaulin
      - name: Run cargo-tarpaulin
        run: cargo tarpaulin --ignore-tests --out Lcov --output-dir target/tarpaulin
      - name: Upload to Coveralls
        # upload only if push
        if: ${{ github.event_name == 'push' }}
        uses: coverallsapp/github-action@master
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          path-to-lcov: './target/tarpaulin/lcov.info'


================================================
FILE: .github/workflows/manual.yml
================================================
name: Deploy Manual

on:
  push:
    branches:
      - main
    paths:
      - "manual/**"
  workflow_dispatch:

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}

jobs:
  build:
    permissions:
      contents: read

    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: dtolnay/rust-toolchain@stable

      - run: cargo doc --no-deps

      - name: Setup mdBook
        uses: taiki-e/install-action@v2
        with:
          tool: mdbook@0.4.14

      - name: Build manual
        run: mdbook build
        working-directory: manual

      - name: Upload artifact
        uses: actions/upload-pages-artifact@v3
        with:
          path: manual/book

  deploy:
    needs: build

    permissions:
      pages: write
      id-token: write

    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}

    runs-on: ubuntu-latest
    steps:
      - name: Configure GitHub Pages
        uses: actions/configure-pages@v5
      - name: Deploy to GitHub Pages
        id: deployment
        uses: actions/deploy-pages@v4


================================================
FILE: .gitignore
================================================
.ignore
.make-sentinels
performance/all-benchmarks.json
performance/index.html
src/junk.rs
**/*.rs.bk
/target

# insta: unreviewed inline data, and separate snapshot files
*.pending-snap
**/snapshots/*.snap.new

# task automation
AGENTS.md
CLAUDE.md
.task/


================================================
FILE: ARCHITECTURE.md
================================================
The purpose of delta is to transform input received from git, diff, git blame, grep, etc to produce visually appealing output, including by syntax highlighting code.

### Initialization

Delta [reads](https://github.com/dandavison/delta/blob/1e1bd6b6b96a3515fd7c70d6b252a25eb9807dc7/src/main.rs#L83) user options from `[delta]` sections in [`.gitconfig`](https://git-scm.com/docs/git-config), and from the command line.

### Input

Delta [reads from stdin](https://github.com/dandavison/delta/blob/1e1bd6b6b96a3515fd7c70d6b252a25eb9807dc7/src/main.rs#L138), hence one can do e.g. `git diff | delta`.
Note that when git's stdout is sent to a pipe, (a) git does not emit [ANSI color escape sequences](https://en.wikipedia.org/wiki/ANSI_escape_code) unless `--color=always`, and (b) git does not start its own pager process.

Users typically configure git to use delta as its pager.
In that case, git sends its stdout to delta behind the scenes (_with_ ANSI color escape sequences), without the user needing to pipe it explicitly.

### Parsing the input

Delta [parses input](https://github.com/dandavison/delta/blob/1e1bd6b6b96a3515fd7c70d6b252a25eb9807dc7/src/delta.rs#L81) using a state machine in which
the states correspond to semantically distinct sections of the input (e.g. `HunkMinus` means that we are in a removed line in a diff hunk).
The core dispatching loop is [here](https://github.com/dandavison/delta/blob/1e1bd6b6b96a3515fd7c70d6b252a25eb9807dc7/src/delta.rs#L115-L129).

```rust
pub fn delta<I>(lines: ByteLines<I>, writer: &mut dyn Write, config: &Config) -> std::io::Result<()>
where
    I: BufRead,
{
    StateMachine::new(writer, config).consume(lines)
}

pub enum State {
    DiffHeader(DiffType),
    HunkHeader(DiffType, ParsedHunkHeader, String, String),
    HunkZero(DiffType, Option<String>),
    HunkMinus(DiffType, Option<String>),
    HunkPlus(DiffType, Option<String>),
    Unknown,
}


impl<'a> StateMachine<'a> {
    fn consume<I>(&mut self, mut lines: ByteLines<I>) -> std::io::Result<()>
    where
        I: BufRead,
    {
        while let Some(Ok(raw_line_bytes)) = lines.next() {
            self.ingest_line(raw_line_bytes);

            // Every method named handle_* must return std::io::Result<bool>.
            // The bool indicates whether the line has been handled by that
            // method (in which case no subsequent handlers are permitted to
            // handle it).
            let _ = self.handle_commit_meta_header_line()?
                || self.handle_diff_stat_line()?
                || self.handle_hunk_header_line()?
                || self.handle_hunk_line()?
                || self.emit_line_unchanged()?;
        }
        self.painter.paint_buffered_minus_and_plus_lines();
        Ok(())
    }
}
```

### Output

Delta [creates](https://github.com/dandavison/delta/blob/114ae670223520657208501a3245a3b4261c1093/src/main.rs#L125) a child pager process (`less`) and writes its output to the stdin of the pager process.
Delta's `navigate` feature is implemented by constructing an appropriate regex and passing it as an argument to `less`.

## Core utility data structures

- [`config::Config`](https://github.com/dandavison/delta/blob/5dc0d6ef7e37a565b06d794b50fcc763079f9ed7/src/config.rs#L59-L143)
  This is a struct with many fields corresponding to all user options and miscellaneous other useful things.
  It might be possible to store it globally, but currently the code passes references to it around the call stack.

- [`paint::Painter`](https://github.com/dandavison/delta/blob/1e1bd6b6b96a3515fd7c70d6b252a25eb9807dc7/src/paint.rs#L24-L36)
  This struct holds the syntax highlighter, and a writable output stream (connected to the stdin of the child `less` process).
  It also holds two line buffers: one to store all the removed ("minus") lines encountered in a single diff hunk, and one to hold the added ("plus") lines.

## Handling diff hunk lines

Here we will follow one code path in detail: [handling diff hunk lines](https://github.com/dandavison/delta/blob/1e1bd6b6b96a3515fd7c70d6b252a25eb9807dc7/src/handlers/hunk.rs#L27) (removed/unchanged/added).
This is the most important, and most complex, code path.

Recall that git diff output contains multiple diff "hunks".
A hunk is a sequence of diff lines describing the changes among some lines of code that are close together in the same file.
A git diff may have many hunks, from multiple files (and therefore multiple languages).
Within a hunk, there are sequences of consecutive removed and/or added lines ("subhunks"), separated by unchanged lines.
(The term "hunk" is standard; the term "subhunk" is specific to delta.)

The handler function that is called when delta process a hunk line is [`handle_hunk_line`](https://github.com/dandavison/delta/blob/1e1bd6b6b96a3515fd7c70d6b252a25eb9807dc7/src/handlers/hunk.rs#L27).
This function [stores the line in a buffer](https://github.com/dandavison/delta/blob/1e1bd6b6b96a3515fd7c70d6b252a25eb9807dc7/src/handlers/hunk.rs#L60-L62) (one buffer for minus lines and one for plus lines): the processing work is not done until we get to the end of the subhunk.

Now, we are at the end of a subhunk, and we have a sequence of minus lines, and a sequence of plus lines.

<table><tr><td><img width=1000px src="https://user-images.githubusercontent.com/52205/143171872-64f41fe1-9968-48c7-86e8-dba9303a54e2.png" alt="image" /></td></tr></table>

Delta [processes a subhunk](https://github.com/dandavison/delta/blob/d92c3ead769326461ea082632e3aa15ca7700d4e/src/paint.rs#L598) (`paint_minus_and_plus_lines`) as follows:

<table><tr><td>
<img width="1709" alt="image" src="https://github.com/dandavison/delta/assets/52205/06e868c2-c113-4946-827f-d7a78534d2ba">
</td></tr></table>

1. **Compute syntax (foreground) styles for the subhunk**

   We [call](https://github.com/dandavison/delta/blob/d92c3ead769326461ea082632e3aa15ca7700d4e/src/paint.rs#L605-L608) the [syntect](https://github.com/trishume/syntect) library to compute syntax highlighting styles for each of the minus lines, and each of the plus lines, if the minus/plus styles specify syntax highlighting.
   The language used for syntax-highlighting is determined by the filename in the diff.
   For a single line, the result is an array of `(style, substring)` pairs. Each pair specifies the foreground (text) color to be applied to a substring of the line (for example, a language keyword, or a string literal).

2. **Compute diff (background) styles for the subhunk**

   Again, the [call](https://github.com/dandavison/delta/blob/1e1bd6b6b96a3515fd7c70d6b252a25eb9807dc7/src/paint.rs#L174-L175) yields, for each line, an array of `(style, substring)` pairs.
   Each pair represents foreground and background colors to be applied to a substring of the line, as specified by delta's `*-style` options.

   In order to compute the array of style sections, the call has to (1) infer the correct alignment of minus and plus lines, and (2) for each such "homologous pair", infer the edit operations that transformed the minus line into the plus line (see [within-line-diff-algorithm](#within-line-diff-algorithm)).

   For example, for a minus line, we may have inferred that the line has a homologous plus line, and that a word has been deleted.
   By default, delta applies a bright red background color to such a word and lets the foreground color be determined by the terminal emulator default foreground color (`minus-emph-style = normal "#901011"`).
   On the other hand, for an added word, delta by default applies a bright green background color, and specifies that the foreground color should come from the syntax highlighting styles (`plus-emph-style = syntax "#006000"`).

3. **Process subhunk lines for side-by-side or unified output**

   At this point we have a collection of lines corresponding to a subhunk and, for each line, a specification of how syntax styles and diff styles are applied to substrings of the line. These data structures are [processed differently](https://github.com/dandavison/delta/blob/main/src/paint.rs#L635-L674) according to whether unified or side-by-side diff display has been requested.

4. **Superimpose syntax and diff styles for a line**

   Before we can output a line of code we need to take the two arrays of `(style, substring)` pairs and compute a single output array of `(style, substring)` pairs, such that the output array represents the diff styles, but with foreground colors taken from the syntax highlighting, where appropriate.
   The call is [here](https://github.com/dandavison/delta/blob/1e1bd6b6b96a3515fd7c70d6b252a25eb9807dc7/src/paint.rs#L490-L495) (`superimpose_style_sections`).

5. **Output a line with styles converted to ANSI color escape sequences**

   The `style` structs that delta uses are implemented by the [`ansi_term`](https://github.com/ogham/rust-ansi-term) library.
   Individual substrings are [painted](https://github.com/dandavison/delta/blob/3e21f00765794f7a4e955826a1612b49f1723bfd/src/paint.rs#L507) with their assigned style, and [concatenated](https://github.com/dandavison/delta/blob/3e21f00765794f7a4e955826a1612b49f1723bfd/src/paint.rs#L514) to form a utf-8 string containing ANSI color escape sequences.

## Within-line diff algorithm

There is currently only one within-line diff algorithm implemented.
This [considers](https://github.com/dandavison/delta/blob/3e21f00765794f7a4e955826a1612b49f1723bfd/src/edits.rs#L41-L43) all possible pairings for a given line and for each one, [computes](https://github.com/dandavison/delta/blob/3e21f00765794f7a4e955826a1612b49f1723bfd/src/edits.rs#L48-L56) the minimum number of edit operations between the candidate pair.
The inferred pairing is the one with the smallest edit distance.
(The number of comparisons is constrained by the possible interleavings, and furthermore a greedy heuristic is used, so that the number of comparisons is not quadratic).

## Features

Delta features such as `line-numbers`, `side-by-side`, `diff-so-fancy`, etc can be considered to consist of (a) some feature-specific implementation code, and (b) a collection of key-value pairs specifying the values that certain delta options should take if that feature is enabled.
Accordingly, each such "feature" is implemented by a separate module under [`src/features/`](https://github.com/dandavison/delta/tree/main/src/features).
Each of these modules must export a function named `make_feature` whose job is to return key-value pairs for updating the user options.

## Common terms used in the code

|                  |                                                                                                                              |
| ---------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| `minus`          | a removed line in a diff hunk (i.e. the lines starting with `-`)                                                             |
| `zero`           | an unchanged line in a diff hunk                                                                                             |
| `plus`           | an added line in a diff hunk (i.e. the lines starting with `+`)                                                              |
| `style`          | a struct specifying foreground colors, background colors, and other attributes such as boldness, derived from ANSI sequences |
| `style_sections` | an array of `(style, section)` tuples                                                                                        |
| `paint`          | to take a string without ANSI color sequences and return a new one with ANSI color sequences                                 |
| `hunk`           | a [diff hunk](https://www.gnu.org/software/diffutils/manual/html_node/Detailed-Unified.html)                                 |
| `subhunk`        | a consecutive sequence of minus and/or plus lines, without any zero line                                                     |


================================================
FILE: CONTRIBUTING.md
================================================
# Notes on contributing to delta

First off, thank you for considering contributing to delta.

If your contribution is not straightforward, please first discuss the change you
wish to make by creating a new issue before making the change.

## The codebase

Take a look at [ARCHITECTURE.md](./ARCHITECTURE.md).

## Set up

This is no different than other Rust projects.

```shell
git clone https://github.com/dandavison/delta/
cd delta
cargo build --release
```

The executable is then at `./target/release/delta`.

## Useful Commands

- Run all tests:

  ```shell
  make test
  ```

- Run Clippy:

  ```shell
  cargo clippy
  ```

- Check to see if there are code formatting issues

  ```shell
  cargo fmt -- --check
  ```

- Format the code in the project

  ```shell
  cargo fmt
  ```

- Debug build

A "debug" build can be built using `cargo build` and
`./target/debug/delta`. This is faster to compile, but has much worse
performance than the release build.


================================================
FILE: Cargo.toml
================================================
[package]
name = "git-delta"
authors = ["Dan Davison <dandavison7@gmail.com>"]
categories = ["command-line-utilities", "development-tools"]
description = "A syntax-highlighting pager for git"
documentation = "https://github.com/dandavison/delta"
edition = "2018"
homepage = "https://github.com/dandavison/delta"
license = "MIT"
repository = "https://github.com/dandavison/delta"
version = "0.19.0"

[[bin]]
name = "delta"
path = "src/main.rs"

[dependencies]
ansi_colours = "1.2.1"
ansi_term = "0.12.1"
anstyle-parse = "0.2.3"
anyhow = "1.0.70"
bat = { version = "0.26.0", default-features = false, features = [
    "minimal-application",
    "paging",
    "regex-onig",
] }
bitflags = "2.2.1"
box_drawing = "0.1.2"
bytelines = { version = "2.5.0", default-features = false }
chrono = "0.4.26"
chrono-humanize = "0.2.2"
clap_complete = "4.4.4"
clap = { version = "4.3.14", features = [
    "derive",
    "help",
    "usage",
    "error-context",
] }
console = "0.15.0"
ctrlc = "3.2.5"
dirs = "6.0.0"
git2 = { version = "0.20.0", default-features = false, features = [] }
grep-cli = "0.1.8"
itertools = "0.10.5"
lazy_static = "1.4"
palette = "0.7.2"
pathdiff = "0.2.1"
regex = "1.7.1"
serde_json = "1.0.96"
serde = { version = "1.0.163", features = ["derive"] }
shell-words = "1.0.0"
smol_str = "0.1.24"
syntect = "5.0.0"
# sysinfo: no default features to disable the use of threads
sysinfo = { version = "0.29.0", default-features = false, features = [] }
terminal-colorsaurus = "0.4.8"
unicode-segmentation = "1.10.1"
# 0.2.0 (and 0.1.13) treats \n as width 1. Lines processed by delta have, lose,
# and re-gain \n in various stages, which complicates upgrading.
unicode-width = ">=0.1.14, <0.2.0"
xdg = "2.4.1"

[lints.rust]
unexpected_cfgs = { level = "warn", check-cfg = ['cfg(tarpaulin_include)'] }

[dev-dependencies]
insta = { version = "1.*", features = ["colors", "filters"] }
rstest = "0.21.0"
pretty_assertions = "1.4"

[profile.test]
opt-level = 2

[profile.dev.package.insta]
opt-level = 3

[profile.dev.package.similar]
opt-level = 3


================================================
FILE: LICENSE
================================================
Copyright 2020 Dan Davison

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


================================================
FILE: Makefile
================================================
build:
	cargo build --release

format:
	git ls-files | grep '\.rs$$' | xargs -P 0 rustfmt

lint:
	cargo clippy

test: unit-test end-to-end-test

unit-test:
	cargo test

end-to-end-test: build
	./tests/test_raw_output_matches_git_on_full_repo_history
	./tests/test_deprecated_options > /dev/null
	./tests/test_navigate_less_history_file

shell-completion:
	for shell in bash fish zsh; do ./target/release/delta --generate-completion $$shell > etc/completion/completion.$$shell; done

release:
	@make -f release.Makefile release

version:
	@grep version Cargo.toml | head -n1 | sed -E 's,.*version = "([^"]+)",\1,'

BENCHMARK_INPUT_FILE = /tmp/delta-benchmark-input.gitdiff
BENCHMARK_COMMAND = git log -p 23c292d3f25c67082a2ba315a187268be1a9b0ab
benchmark: build
	$(BENCHMARK_COMMAND) > $(BENCHMARK_INPUT_FILE)
	hyperfine --warmup 10 --min-runs 20 \
		'target/release/delta --no-gitconfig < $(BENCHMARK_INPUT_FILE) > /dev/null'

# https://github.com/brendangregg/FlameGraph
flamegraph: build
	$(BENCHMARK_COMMAND) | target/release/delta > /dev/null &
	sample delta | stackcollapse-sample | flamegraph > etc/performance/flamegraph.svg

chronologer:
	chronologer etc/performance/chronologer.yaml

.PHONY: build format lint test unit-test end-to-end-test release shell-completion version benchmark flamegraph chronologer


================================================
FILE: README.md
================================================
<p align="center">
  <img width=400px src="https://user-images.githubusercontent.com/52205/147996902-9829bd3f-cd33-466e-833e-49a6f3ebd623.png" alt="image" />
</p>
<p align="center">
  <a href="https://github.com/dandavison/delta/actions">
    <img src="https://github.com/dandavison/delta/workflows/Continuous%20Integration/badge.svg" alt="CI">
  </a>
  <a href="https://coveralls.io/github/dandavison/delta?branch=main">
    <img src="https://coveralls.io/repos/github/dandavison/delta/badge.svg?branch=main" alt="Coverage Status">
  </a>
  <a href="https://gitter.im/dandavison-delta/community?utm_source=badge&amp;utm_medium=badge&amp;utm_campaign=pr-badge">
    <img src="https://badges.gitter.im/dandavison-delta/community.svg" alt="Gitter">
  </a>
</p>

## Get Started

[Install it](https://dandavison.github.io/delta/installation.html) (the package is called "git-delta" in most package managers, but the executable is just `delta`) and add this to your `~/.gitconfig`:

```gitconfig
[core]
    pager = delta

[interactive]
    diffFilter = delta --color-only

[delta]
    navigate = true  # use n and N to move between diff sections
    dark = true      # or light = true, or omit for auto-detection

[merge]
    conflictStyle = zdiff3
```

Or run:

```sh
git config --global core.pager delta
git config --global interactive.diffFilter 'delta --color-only'
git config --global delta.navigate true
git config --global delta.dark true  # or `delta.light true`, or omit for auto-detection
git config --global merge.conflictStyle zdiff3
```

Delta has many features and is very customizable; please see `delta -h` (short help) or `delta --help` (full manual), or the [online user manual](https://dandavison.github.io/delta/).

## Features

- Language syntax highlighting with the same syntax-highlighting themes as [bat](https://github.com/sharkdp/bat#readme)
- Word-level diff highlighting using a Levenshtein edit inference algorithm
- Side-by-side view with line-wrapping
- Line numbering
- `n` and `N` keybindings to move between files in large diffs, and between diffs in `log -p` views (`--navigate`)
- Improved merge conflict display
- Improved `git blame` display (syntax highlighting; `--hyperlinks` formats commits as links to hosting provider etc. Supported hosting providers are: GitHub, GitLab, SourceHut, Codeberg)
- Syntax-highlights grep output from `rg`, `git grep`, `grep`, etc
- Support for Git's `--color-moved` feature.
- Code can be copied directly from the diff (`-/+` markers are removed by default).
- `diff-highlight` and `diff-so-fancy` emulation modes
- Commit hashes can be formatted as terminal [hyperlinks](https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda) to the hosting provider page (`--hyperlinks`).
  File paths can also be formatted as hyperlinks for opening in your OS.
- Stylable box/line decorations to draw attention to commit, file and hunk header sections.
- Style strings (foreground color, background color, font attributes) are supported for >20 stylable elements, using the same color/style language as git
- Handles traditional unified diff output in addition to git output
- Automatic detection of light/dark terminal background

## A syntax-highlighting pager for git, diff, and grep output

Code evolves, and we all spend time studying diffs. Delta aims to make this both efficient and enjoyable: it allows you to make extensive changes to the layout and styling of diffs, as well as allowing you to stay arbitrarily close to the default git/diff output.

<table align="center">
  <tr>
    <td>
      <img width=400px src="https://user-images.githubusercontent.com/52205/86275526-76792100-bba1-11ea-9e78-6be9baa80b29.png" alt="image" />
      <br>
      <p align="center"><sub>delta with <code>line-numbers</code> activated</sub></p>
    </td>
  </tr>
</table>

<table align="center">
  <tr>
    <td>
      <img width=800px src="https://user-images.githubusercontent.com/52205/87230973-412eb900-c381-11ea-8aec-cc200290bd1b.png" alt="image" />
      <br>
      <p align="center"><sub>delta with <code>side-by-side</code> and <code>line-numbers</code> activated</sub></p>
    </td>
  </tr>
</table>

Here's what `git show` can look like with git configured to use delta:

<br>

<table align="center">
  <tr>
    <td>
      <img width=500px style="border: 1px solid black"
           src="https://user-images.githubusercontent.com/52205/81058545-a5725f80-8e9c-11ea-912e-d21954586a44.png"
           alt="image" />
    </td>
    <td>
      <img width=500px style="border: 1px solid black"
           src="https://user-images.githubusercontent.com/52205/81058911-6abcf700-8e9d-11ea-93be-e212824ec03d.png"
           alt="image" />
    </td>
  </tr>
  <tr>
    <td>
      "Dracula" theme
    </td>
    <td>
      "GitHub" theme
    </td>
  </tr>
</table>

<br>
<br>

### Syntax-highlighting themes

**All the syntax-highlighting color themes that are available with [bat](https://github.com/sharkdp/bat/) are available with delta:**

<br>
<table>
  <tr>
    <td>
      <img width=400px style="border: 1px solid black"
           src="https://user-images.githubusercontent.com/52205/149431273-e3ad049d-771e-4186-869d-0e57967958a6.png"
           alt="image" />
    </td>
    <td>
      <img width=400px style="border: 1px solid black"
           src="https://user-images.githubusercontent.com/52205/149431419-48836001-2afc-4fd0-97ad-561a69b71db7.png"
           alt="image" />
    </td>
  </tr>
  <tr>
    <td>
      <code>delta --show-syntax-themes --dark</code>
    </td>
    <td>
      <code>delta --show-syntax-themes --light</code>
    </td>
  </tr>
</table>

<br>

### Side-by-side view

[[User manual](https://dandavison.github.io/delta/side-by-side-view.html)]

```gitconfig
[delta]
    side-by-side = true
```

By default, side-by-side view has line-numbers activated, and has syntax highlighting in both the left and right panels: [[config](#side-by-side-view-1)]

<table><tr><td><img width=800px src="https://user-images.githubusercontent.com/52205/87230973-412eb900-c381-11ea-8aec-cc200290bd1b.png" alt="image" /></td></tr></table>

Side-by-side view wraps long lines automatically:

<table><tr><td><img width=600px src="https://user-images.githubusercontent.com/52205/139064537-f8479504-16d3-429a-b4f6-d0122438adaa.png" alt="image" /></td></tr></table>

### Line numbers

[[User manual](https://dandavison.github.io/delta/line-numbers.html)]

```gitconfig
[delta]
    line-numbers = true
```

<table><tr><td><img width=400px src="https://user-images.githubusercontent.com/52205/86275526-76792100-bba1-11ea-9e78-6be9baa80b29.png" alt="image" /></td></tr></table>

### Merge conflicts

[[User manual](https://dandavison.github.io/delta/merge-conflicts.html)]

<table><tr><td><img width=500px src="https://user-images.githubusercontent.com/52205/144783121-bb549100-69d8-41b8-ac62-1704f1f7b43e.png" alt="image" /></td></tr></table>

### Git blame

[[User manual](https://dandavison.github.io/delta/git-blame.html)]

<table><tr><td><img width=600px src="https://user-images.githubusercontent.com/52205/141891376-1fdb87dc-1d9c-4ad6-9d72-eeb19a8aeb0b.png" alt="image" /></td></tr></table>

### Ripgrep, git grep

[[User manual](https://dandavison.github.io/delta/grep.html)]

<table><tr><td>
<img width="600px" alt="image" src="https://github.com/dandavison/open-in-editor/assets/52205/d203d380-5acb-4296-aeb9-e38c73d6c27f">
</td></tr></table>

### Installation and usage

Please see the [user manual](https://dandavison.github.io/delta/) and `delta --help`.

### Maintainers

- [@dandavison](https://github.com/dandavison)
- [@th1000s](https://github.com/th1000s)


================================================
FILE: etc/bin/ansifilter
================================================
perl -pe 's/\e\[[0-9;]*[mK]//g'

================================================
FILE: etc/bin/check-show-config-options
================================================
#!/bin/bash
DIR=$(dirname ${BASH_SOURCE[0]})

delta <($DIR/list-options) <(delta --show-config | awk '{print $1}' | sort)


================================================
FILE: etc/bin/diagnostics
================================================
#!/bin/bash

commands=(
    "delta --version"
    "less --version | head -n1"
    "env | grep -iE '(less|pager|bat|delta)'"
    "printf '\e[34m\e[43mtext\e[m\n'"
    "printf '\e[38;5;19m\e[48;5;226mtext\e[m\n'"
    "printf '\e[38;2;0;0;255m\e[48;2;255;255;0mtext\e[m\n'"
    "printf '⋮│─'"
    "delta --no-gitconfig <(echo a) <(echo b) | cat -A"
    "delta  --no-gitconfig <(echo a) <(echo b)"
)

for cmd in "${commands[@]}"; do
    echo "> $cmd"
    eval "$cmd"
    echo
done


================================================
FILE: etc/bin/list-options
================================================
#!/bin/bash

DIR=$(dirname ${BASH_SOURCE[0]})

delta --help | \
    $DIR/ansifilter | \
    rg ' --[^-].+ <' | \
    rg -v 'deprecated' | \
    awk 'BEGIN{FS="--"}; {print $2}' | \
    awk '{print $1}' | \
    sort


================================================
FILE: etc/ci/.gitattributes
================================================
* linguist-vendored


================================================
FILE: etc/ci/before_deploy.sh
================================================
#!/usr/bin/env bash
# Building and packaging for release

set -ex

pack() {
    local tempdir
    local out_dir
    local package_name
    local gcc_prefix

    tempdir=$(mktemp -d 2>/dev/null || mktemp -d -t tmp)
    out_dir=$(pwd)
    package_name="$PROJECT_NAME-${GITHUB_REF/refs\/tags\//}-$TARGET"

    if [[ $TARGET == "arm-unknown-linux-gnueabihf" ]]; then
        gcc_prefix="arm-linux-gnueabihf-"
    elif [[ $TARGET == "aarch64-unknown-linux-gnu" ]]; then
        gcc_prefix="aarch64-linux-gnu-"
    else
        gcc_prefix=""
    fi

    # create a "staging" directory
    mkdir "$tempdir/$package_name"

    # copying the main binary
    cp "target/$TARGET/release/$PROJECT_NAME" "$tempdir/$package_name/"
    if [ "$OS_NAME" != windows-latest ]; then
        "${gcc_prefix}"strip "$tempdir/$package_name/$PROJECT_NAME"
    fi

    # manpage, readme and license
    cp README.md "$tempdir/$package_name"
    cp LICENSE "$tempdir/$package_name"

    # archiving
    pushd "$tempdir"
    if [ "$OS_NAME" = windows-latest ]; then
        7z a "$out_dir/$package_name.zip" "$package_name"/*
    else
        tar czf "$out_dir/$package_name.tar.gz" "$package_name"/*
    fi
    popd
    rm -r "$tempdir"
}

make_deb() {
    local tempdir
    local architecture
    local version
    local dpkgname
    local conflictname
    local gcc_prefix
    local homepage
    local maintainer

    homepage="https://github.com/dandavison/delta"
    maintainer="Dan Davison <dandavison7@gmail.com>"
    copyright_years="2019 - "$(date "+%Y")

    case $TARGET in
        x86_64*)
            architecture=amd64
            gcc_prefix=""
            library_dir=""
            ;;
        i686*)
            architecture=i386
            gcc_prefix=""
            library_dir=""
            ;;
        aarch64*)
            architecture=arm64
            gcc_prefix="aarch64-linux-gnu-"
            library_dir="-l/usr/aarch64-linux-gnu/lib"
            ;;
        arm*hf)
            architecture=armhf
            gcc_prefix="arm-linux-gnueabihf-"
            library_dir="-l/usr/arm-linux-gnueabihf/lib"
            ;;
        *)
            echo "make_deb: skipping target '${TARGET}'" >&2
            return 0
            ;;
    esac
    version=${GITHUB_REF/refs\/tags\//}

    if [[ $TARGET = *musl* ]]; then
      dpkgname=$PACKAGE_NAME-musl
      conflictname=$PROJECT_NAME
    else
      dpkgname=$PACKAGE_NAME
      conflictname=$PROJECT_NAME-musl
    fi

    tempdir=$(mktemp -d 2>/dev/null || mktemp -d -t tmp)

    # copy the main binary
    install -Dm755 "target/$TARGET/release/$PROJECT_NAME" "$tempdir/usr/bin/$PROJECT_NAME"
    "${gcc_prefix}"strip "$tempdir/usr/bin/$PROJECT_NAME"

    # Work out shared library dependencies
    # dpkg-shlibdeps requires debian/control file. Dummy it and clean up
    mkdir "./debian"
    touch "./debian/control"
    depends="$(dpkg-shlibdeps $library_dir -O "$tempdir/usr/bin/$PROJECT_NAME" 2> /dev/null | sed 's/^shlibs:Depends=//')"
    rm -rf "./debian"

    # readme and license
    install -Dm644 README.md "$tempdir/usr/share/doc/$dpkgname/README.md"
    cat > "$tempdir/usr/share/doc/$dpkgname/copyright" <<EOF
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: $PROJECT_NAME
Source: $homepage

Files: *
Copyright: $copyright_years $maintainer
License: MIT

License: MIT
 Permission is hereby granted, free of charge, to any
 person obtaining a copy of this software and associated
 documentation files (the "Software"), to deal in the
 Software without restriction, including without
 limitation the rights to use, copy, modify, merge,
 publish, distribute, sublicense, and/or sell copies of
 the Software, and to permit persons to whom the Software
 is furnished to do so, subject to the following
 conditions:
 .
 The above copyright notice and this permission notice
 shall be included in all copies or substantial portions
 of the Software.
 .
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
 ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
 TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
 PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
 SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
 CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
 OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
 IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 DEALINGS IN THE SOFTWARE.
EOF
    chmod 644 "$tempdir/usr/share/doc/$dpkgname/copyright"

    # Control file
    mkdir "$tempdir/DEBIAN"
    cat > "$tempdir/DEBIAN/control" <<EOF
Package: $dpkgname
Version: $version
Section: utils
Priority: optional
Maintainer: Dan Davison <dandavison7@gmail.com>
Architecture: $architecture
Depends: $depends
Conflicts: $conflictname
Description: Syntax highlighter for git
 Delta provides language syntax-highlighting, within-line insertion/deletion
 detection, and restructured diff output for git on the command line.
EOF

    fakeroot dpkg-deb -Zxz --build "$tempdir" "${dpkgname}_${version}_${architecture}.deb"
}


main() {
    pack
    if [[ $TARGET = *linux* ]]; then
      make_deb
    fi
}

main


================================================
FILE: etc/completion/completion.bash
================================================
_delta() {
    local i cur prev opts cmd
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"
    cmd=""
    opts=""

    for i in ${COMP_WORDS[@]}
    do
        case "${cmd},${i}" in
            ",$1")
                cmd="delta"
                ;;
            *)
                ;;
        esac
    done

    case "${cmd}" in
        delta)
            opts="-n -s -w -h -V --blame-code-style --blame-format --blame-palette --blame-separator-format --blame-separator-style --blame-timestamp-format --blame-timestamp-output-format --color-only --config --commit-decoration-style --commit-regex --commit-style --dark --default-language --diff-highlight --diff-so-fancy --diff-stat-align-width --features --file-added-label --file-copied-label --file-decoration-style --file-modified-label --file-removed-label --file-renamed-label --file-style --file-transformation --generate-completion --grep-context-line-style --grep-file-style --grep-header-decoration-style --grep-header-file-style --grep-line-number-style --grep-output-type --grep-match-line-style --grep-match-word-style --grep-separator-symbol --hunk-header-decoration-style --hunk-header-file-style --hunk-header-line-number-style --hunk-header-style --hunk-label --hyperlinks --hyperlinks-commit-link-format --hyperlinks-file-link-format --inline-hint-style --inspect-raw-lines --keep-plus-minus-markers --light --line-buffer-size --line-fill-method --line-numbers --line-numbers-left-format --line-numbers-left-style --line-numbers-minus-style --line-numbers-plus-style --line-numbers-right-format --line-numbers-right-style --line-numbers-zero-style --list-languages --list-syntax-themes --map-styles --max-line-distance --max-line-length --merge-conflict-begin-symbol --merge-conflict-end-symbol --merge-conflict-ours-diff-header-decoration-style --merge-conflict-ours-diff-header-style --merge-conflict-theirs-diff-header-decoration-style --merge-conflict-theirs-diff-header-style --minus-empty-line-marker-style --minus-emph-style --minus-non-emph-style --minus-style --navigate --navigate-regex --no-gitconfig --pager --paging --parse-ansi --plus-emph-style --plus-empty-line-marker-style --plus-non-emph-style --plus-style --raw --relative-paths --right-arrow --show-colors --show-config --show-syntax-themes --show-themes --side-by-side --syntax-theme --tabs --true-color --whitespace-error-style --width --word-diff-regex --wrap-left-symbol --wrap-max-lines --wrap-right-percent --wrap-right-prefix-symbol --wrap-right-symbol --zero-style --24-bit-color --help --version [MINUS_FILE] [PLUS_FILE]"
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 1 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                --blame-code-style)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --blame-format)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --blame-palette)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --blame-separator-format)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --blame-separator-style)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --blame-timestamp-format)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --blame-timestamp-output-format)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --config)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --commit-decoration-style)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --commit-regex)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --commit-style)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --default-language)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --diff-stat-align-width)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --features)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --file-added-label)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --file-copied-label)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --file-decoration-style)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --file-modified-label)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --file-removed-label)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --file-renamed-label)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --file-style)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --file-transformation)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --generate-completion)
                    COMPREPLY=($(compgen -W "bash elvish fish powershell zsh" -- "${cur}"))
                    return 0
                    ;;
                --grep-context-line-style)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --grep-file-style)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --grep-header-decoration-style)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --grep-header-file-style)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --grep-line-number-style)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --grep-output-type)
                    COMPREPLY=($(compgen -W "ripgrep classic" -- "${cur}"))
                    return 0
                    ;;
                --grep-match-line-style)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --grep-match-word-style)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --grep-separator-symbol)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --hunk-header-decoration-style)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --hunk-header-file-style)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --hunk-header-line-number-style)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --hunk-header-style)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --hunk-label)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --hyperlinks-commit-link-format)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --hyperlinks-file-link-format)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --inline-hint-style)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --inspect-raw-lines)
                    COMPREPLY=($(compgen -W "true false" -- "${cur}"))
                    return 0
                    ;;
                --line-buffer-size)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --line-fill-method)
                    COMPREPLY=($(compgen -W "ansi spaces" -- "${cur}"))
                    return 0
                    ;;
                --line-numbers-left-format)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --line-numbers-left-style)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --line-numbers-minus-style)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --line-numbers-plus-style)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --line-numbers-right-format)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --line-numbers-right-style)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --line-numbers-zero-style)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --map-styles)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --max-line-distance)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --max-line-length)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --merge-conflict-begin-symbol)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --merge-conflict-end-symbol)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --merge-conflict-ours-diff-header-decoration-style)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --merge-conflict-ours-diff-header-style)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --merge-conflict-theirs-diff-header-decoration-style)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --merge-conflict-theirs-diff-header-style)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --minus-empty-line-marker-style)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --minus-emph-style)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --minus-non-emph-style)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --minus-style)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --navigate-regex)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --pager)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --paging)
                    COMPREPLY=($(compgen -W "auto always never" -- "${cur}"))
                    return 0
                    ;;
                --plus-emph-style)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --plus-empty-line-marker-style)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --plus-non-emph-style)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --plus-style)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --right-arrow)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --syntax-theme)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --tabs)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --true-color)
                    COMPREPLY=($(compgen -W "auto always never" -- "${cur}"))
                    return 0
                    ;;
                --whitespace-error-style)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --width)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                -w)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --word-diff-regex)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --wrap-left-symbol)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --wrap-max-lines)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --wrap-right-percent)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --wrap-right-prefix-symbol)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --wrap-right-symbol)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --zero-style)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --24-bit-color)
                    COMPREPLY=($(compgen -W "auto always never" -- "${cur}"))
                    return 0
                    ;;
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
    esac
}

# nosort isn't supported for bash less than < 4.4
if [[ ${BASH_VERSINFO[0]} -lt 4 || ( ${BASH_VERSINFO[0]} -eq 4 && ${BASH_VERSINFO[1]} -lt 4 ) ]]; then
    complete -F _delta -o bashdefault -o default delta
else
    complete -F _delta -o bashdefault -o default -o nosort delta 
fi


================================================
FILE: etc/completion/completion.fish
================================================
complete -c delta -l blame-code-style -d 'Style string for the code section of a git blame line' -r
complete -c delta -l blame-format -d 'Format string for git blame commit metadata' -r
complete -c delta -l blame-palette -d 'Background colors used for git blame lines (space-separated string)' -r
complete -c delta -l blame-separator-format -d 'Separator between the blame format and the code section of a git blame line' -r
complete -c delta -l blame-separator-style -d 'Style string for the blame-separator-format' -r
complete -c delta -l blame-timestamp-format -d 'Format of `git blame` timestamp in raw git output received by delta' -r
complete -c delta -l blame-timestamp-output-format -d 'Format string for git blame timestamp output' -r
complete -c delta -l config -d 'Load the config file at PATH instead of ~/.gitconfig' -r -F
complete -c delta -l commit-decoration-style -d 'Style string for the commit hash decoration' -r
complete -c delta -l commit-regex -d 'Regular expression used to identify the commit line when parsing git output' -r
complete -c delta -l commit-style -d 'Style string for the commit hash line' -r
complete -c delta -l default-language -d 'Default language used for syntax highlighting' -r
complete -c delta -l diff-stat-align-width -d 'Width allocated for file paths in a diff stat section' -r
complete -c delta -l features -d 'Names of delta features to activate (space-separated)' -r
complete -c delta -l file-added-label -d 'Text to display before an added file path' -r
complete -c delta -l file-copied-label -d 'Text to display before a copied file path' -r
complete -c delta -l file-decoration-style -d 'Style string for the file decoration' -r
complete -c delta -l file-modified-label -d 'Text to display before a modified file path' -r
complete -c delta -l file-removed-label -d 'Text to display before a removed file path' -r
complete -c delta -l file-renamed-label -d 'Text to display before a renamed file path' -r
complete -c delta -l file-style -d 'Style string for the file section' -r
complete -c delta -l file-transformation -d 'Sed-style command transforming file paths for display' -r
complete -c delta -l generate-completion -d 'Print completion file for the given shell' -r -f -a "{bash	'',elvish	'',fish	'',powershell	'',zsh	''}"
complete -c delta -l grep-context-line-style -d 'Style string for non-matching lines of grep output' -r
complete -c delta -l grep-file-style -d 'Style string for file paths in grep output' -r
complete -c delta -l grep-header-decoration-style -d 'Style string for the header decoration in grep output' -r
complete -c delta -l grep-header-file-style -d 'Style string for the file path part of the header in grep output' -r
complete -c delta -l grep-line-number-style -d 'Style string for line numbers in grep output' -r
complete -c delta -l grep-output-type -d 'Grep output format. Possible values: "ripgrep" - file name printed once, followed by matching lines within that file, each preceded by a line number. "classic" - file name:line number, followed by matching line. Default is "ripgrep" if `rg --json` format is detected, otherwise "classic"' -r -f -a "{ripgrep	'',classic	''}"
complete -c delta -l grep-match-line-style -d 'Style string for matching lines of grep output' -r
complete -c delta -l grep-match-word-style -d 'Style string for the matching substrings within a matching line of grep output' -r
complete -c delta -l grep-separator-symbol -d 'Separator symbol printed after the file path and line number in grep output' -r
complete -c delta -l hunk-header-decoration-style -d 'Style string for the hunk-header decoration' -r
complete -c delta -l hunk-header-file-style -d 'Style string for the file path part of the hunk-header' -r
complete -c delta -l hunk-header-line-number-style -d 'Style string for the line number part of the hunk-header' -r
complete -c delta -l hunk-header-style -d 'Style string for the hunk-header' -r
complete -c delta -l hunk-label -d 'Text to display before a hunk header' -r
complete -c delta -l hyperlinks-commit-link-format -d 'Format string for commit hyperlinks (requires --hyperlinks)' -r
complete -c delta -l hyperlinks-file-link-format -d 'Format string for file hyperlinks (requires --hyperlinks)' -r
complete -c delta -l inline-hint-style -d 'Style string for short inline hint text' -r
complete -c delta -l inspect-raw-lines -d 'Kill-switch for --color-moved support' -r -f -a "{true	'',false	''}"
complete -c delta -l line-buffer-size -d 'Size of internal line buffer' -r
complete -c delta -l line-fill-method -d 'Line-fill method in side-by-side mode' -r -f -a "{ansi spaces	''}"
complete -c delta -l line-numbers-left-format -d 'Format string for the left column of line numbers' -r
complete -c delta -l line-numbers-left-style -d 'Style string for the left column of line numbers' -r
complete -c delta -l line-numbers-minus-style -d 'Style string for line numbers in the old (minus) version of the file' -r
complete -c delta -l line-numbers-plus-style -d 'Style string for line numbers in the new (plus) version of the file' -r
complete -c delta -l line-numbers-right-format -d 'Format string for the right column of line numbers' -r
complete -c delta -l line-numbers-right-style -d 'Style string for the right column of line numbers' -r
complete -c delta -l line-numbers-zero-style -d 'Style string for line numbers in unchanged (zero) lines' -r
complete -c delta -l map-styles -d 'Map styles encountered in raw input to desired output styles' -r
complete -c delta -l max-line-distance -d 'Maximum line pair distance parameter in within-line diff algorithm' -r
complete -c delta -l max-line-length -d 'Truncate lines longer than this' -r
complete -c delta -l merge-conflict-begin-symbol -d 'String marking the beginning of a merge conflict region' -r
complete -c delta -l merge-conflict-end-symbol -d 'String marking the end of a merge conflict region' -r
complete -c delta -l merge-conflict-ours-diff-header-decoration-style -d 'Style string for the decoration of the header above the \'ours\' merge conflict diff' -r
complete -c delta -l merge-conflict-ours-diff-header-style -d 'Style string for the header above the \'ours\' branch merge conflict diff' -r
complete -c delta -l merge-conflict-theirs-diff-header-decoration-style -d 'Style string for the decoration of the header above the \'theirs\' merge conflict diff' -r
complete -c delta -l merge-conflict-theirs-diff-header-style -d 'Style string for the header above the \'theirs\' branch merge conflict diff' -r
complete -c delta -l minus-empty-line-marker-style -d 'Style string for removed empty line marker' -r
complete -c delta -l minus-emph-style -d 'Style string for emphasized sections of removed lines' -r
complete -c delta -l minus-non-emph-style -d 'Style string for non-emphasized sections of removed lines that have an emphasized section' -r
complete -c delta -l minus-style -d 'Style string for removed lines' -r
complete -c delta -l navigate-regex -d 'Regular expression defining navigation stop points' -r
complete -c delta -l pager -d 'Which pager to use' -r
complete -c delta -l paging -d 'Whether to use a pager when displaying output' -r -f -a "{auto	'',always	'',never	''}"
complete -c delta -l plus-emph-style -d 'Style string for emphasized sections of added lines' -r
complete -c delta -l plus-empty-line-marker-style -d 'Style string for added empty line marker' -r
complete -c delta -l plus-non-emph-style -d 'Style string for non-emphasized sections of added lines that have an emphasized section' -r
complete -c delta -l plus-style -d 'Style string for added lines' -r
complete -c delta -l right-arrow -d 'Text to display with a changed file path' -r
complete -c delta -l syntax-theme -d 'The syntax-highlighting theme to use' -r
complete -c delta -l tabs -d 'The number of spaces to replace tab characters with' -r
complete -c delta -l true-color -d 'Whether to emit 24-bit ("true color") RGB color codes' -r -f -a "{auto	'',always	'',never	''}"
complete -c delta -l whitespace-error-style -d 'Style string for whitespace errors' -r
complete -c delta -s w -l width -d 'The width of underline/overline decorations' -r
complete -c delta -l word-diff-regex -d 'Regular expression defining a \'word\' in within-line diff algorithm' -r
complete -c delta -l wrap-left-symbol -d 'End-of-line wrapped content symbol (left-aligned)' -r
complete -c delta -l wrap-max-lines -d 'How often a line should be wrapped if it does not fit' -r
complete -c delta -l wrap-right-percent -d 'Threshold for right-aligning wrapped content' -r
complete -c delta -l wrap-right-prefix-symbol -d 'Pre-wrapped content symbol (right-aligned)' -r
complete -c delta -l wrap-right-symbol -d 'End-of-line wrapped content symbol (right-aligned)' -r
complete -c delta -l zero-style -d 'Style string for unchanged lines' -r
complete -c delta -l 24-bit-color -d 'Deprecated: use --true-color' -r -f -a "{auto	'',always	'',never	''}"
complete -c delta -l color-only -d 'Do not alter the input structurally in any way'
complete -c delta -l dark -d 'Use default colors appropriate for a dark terminal background'
complete -c delta -l diff-highlight -d 'Emulate diff-highlight'
complete -c delta -l diff-so-fancy -d 'Emulate diff-so-fancy'
complete -c delta -l hyperlinks -d 'Render commit hashes, file names, and line numbers as hyperlinks'
complete -c delta -l keep-plus-minus-markers -d 'Prefix added/removed lines with a +/- character, as git does'
complete -c delta -l light -d 'Use default colors appropriate for a light terminal background'
complete -c delta -s n -l line-numbers -d 'Display line numbers next to the diff'
complete -c delta -l list-languages -d 'List supported languages and associated file extensions'
complete -c delta -l list-syntax-themes -d 'List available syntax-highlighting color themes'
complete -c delta -l navigate -d 'Activate diff navigation'
complete -c delta -l no-gitconfig -d 'Do not read any settings from git config'
complete -c delta -l parse-ansi -d 'Display ANSI color escape sequences in human-readable form'
complete -c delta -l raw -d 'Do not alter the input in any way'
complete -c delta -l relative-paths -d 'Output all file paths relative to the current directory'
complete -c delta -l show-colors -d 'Show available named colors'
complete -c delta -l show-config -d 'Display the active values for all Delta options'
complete -c delta -l show-syntax-themes -d 'Show example diff for available syntax-highlighting themes'
complete -c delta -l show-themes -d 'Show example diff for available delta themes'
complete -c delta -s s -l side-by-side -d 'Display diffs in side-by-side layout'
complete -c delta -s h -l help -d 'Print help (see more with \'--help\')'
complete -c delta -s V -l version -d 'Print version'


================================================
FILE: etc/completion/completion.zsh
================================================
#compdef delta

autoload -U is-at-least

_delta() {
    typeset -A opt_args
    typeset -a _arguments_options
    local ret=1

    if is-at-least 5.2; then
        _arguments_options=(-s -S -C)
    else
        _arguments_options=(-s -C)
    fi

    local context curcontext="$curcontext" state line
    _arguments "${_arguments_options[@]}" \
'--blame-code-style=[Style string for the code section of a git blame line]:STYLE: ' \
'--blame-format=[Format string for git blame commit metadata]:FMT: ' \
'--blame-palette=[Background colors used for git blame lines (space-separated string)]:COLORS: ' \
'--blame-separator-format=[Separator between the blame format and the code section of a git blame line]:FMT: ' \
'--blame-separator-style=[Style string for the blame-separator-format]:STYLE: ' \
'--blame-timestamp-format=[Format of \`git blame\` timestamp in raw git output received by delta]:FMT: ' \
'--blame-timestamp-output-format=[Format string for git blame timestamp output]:FMT: ' \
'--config=[Load the config file at PATH instead of ~/.gitconfig]:PATH:_files' \
'--commit-decoration-style=[Style string for the commit hash decoration]:STYLE: ' \
'--commit-regex=[Regular expression used to identify the commit line when parsing git output]:REGEX: ' \
'--commit-style=[Style string for the commit hash line]:STYLE: ' \
'--default-language=[Default language used for syntax highlighting]:LANG: ' \
'--diff-stat-align-width=[Width allocated for file paths in a diff stat section]:N: ' \
'--features=[Names of delta features to activate (space-separated)]:FEATURES: ' \
'--file-added-label=[Text to display before an added file path]:STRING: ' \
'--file-copied-label=[Text to display before a copied file path]:STRING: ' \
'--file-decoration-style=[Style string for the file decoration]:STYLE: ' \
'--file-modified-label=[Text to display before a modified file path]:STRING: ' \
'--file-removed-label=[Text to display before a removed file path]:STRING: ' \
'--file-renamed-label=[Text to display before a renamed file path]:STRING: ' \
'--file-style=[Style string for the file section]:STYLE: ' \
'--file-transformation=[Sed-style command transforming file paths for display]:SED_CMD: ' \
'--generate-completion=[Print completion file for the given shell]:GENERATE_COMPLETION:(bash elvish fish powershell zsh)' \
'--grep-context-line-style=[Style string for non-matching lines of grep output]:STYLE: ' \
'--grep-file-style=[Style string for file paths in grep output]:STYLE: ' \
'--grep-header-decoration-style=[Style string for the header decoration in grep output]:STYLE: ' \
'--grep-header-file-style=[Style string for the file path part of the header in grep output]:STYLE: ' \
'--grep-line-number-style=[Style string for line numbers in grep output]:STYLE: ' \
'--grep-output-type=[Grep output format. Possible values\: "ripgrep" - file name printed once, followed by matching lines within that file, each preceded by a line number. "classic" - file name\:line number, followed by matching line. Default is "ripgrep" if \`rg --json\` format is detected, otherwise "classic"]:OUTPUT_TYPE:(ripgrep classic)' \
'--grep-match-line-style=[Style string for matching lines of grep output]:STYLE: ' \
'--grep-match-word-style=[Style string for the matching substrings within a matching line of grep output]:STYLE: ' \
'--grep-separator-symbol=[Separator symbol printed after the file path and line number in grep output]:STRING: ' \
'--hunk-header-decoration-style=[Style string for the hunk-header decoration]:STYLE: ' \
'--hunk-header-file-style=[Style string for the file path part of the hunk-header]:STYLE: ' \
'--hunk-header-line-number-style=[Style string for the line number part of the hunk-header]:STYLE: ' \
'--hunk-header-style=[Style string for the hunk-header]:STYLE: ' \
'--hunk-label=[Text to display before a hunk header]:STRING: ' \
'--hyperlinks-commit-link-format=[Format string for commit hyperlinks (requires --hyperlinks)]:FMT: ' \
'--hyperlinks-file-link-format=[Format string for file hyperlinks (requires --hyperlinks)]:FMT: ' \
'--inline-hint-style=[Style string for short inline hint text]:STYLE: ' \
'--inspect-raw-lines=[Kill-switch for --color-moved support]:true|false:(true false)' \
'--line-buffer-size=[Size of internal line buffer]:N: ' \
'--line-fill-method=[Line-fill method in side-by-side mode]:STRING:(ansi spaces)' \
'--line-numbers-left-format=[Format string for the left column of line numbers]:FMT: ' \
'--line-numbers-left-style=[Style string for the left column of line numbers]:STYLE: ' \
'--line-numbers-minus-style=[Style string for line numbers in the old (minus) version of the file]:STYLE: ' \
'--line-numbers-plus-style=[Style string for line numbers in the new (plus) version of the file]:STYLE: ' \
'--line-numbers-right-format=[Format string for the right column of line numbers]:FMT: ' \
'--line-numbers-right-style=[Style string for the right column of line numbers]:STYLE: ' \
'--line-numbers-zero-style=[Style string for line numbers in unchanged (zero) lines]:STYLE: ' \
'--map-styles=[Map styles encountered in raw input to desired output styles]:STYLES_MAP: ' \
'--max-line-distance=[Maximum line pair distance parameter in within-line diff algorithm]:DIST: ' \
'--max-line-length=[Truncate lines longer than this]:N: ' \
'--merge-conflict-begin-symbol=[String marking the beginning of a merge conflict region]:STRING: ' \
'--merge-conflict-end-symbol=[String marking the end of a merge conflict region]:STRING: ' \
'--merge-conflict-ours-diff-header-decoration-style=[Style string for the decoration of the header above the '\''ours'\'' merge conflict diff]:STYLE: ' \
'--merge-conflict-ours-diff-header-style=[Style string for the header above the '\''ours'\'' branch merge conflict diff]:STYLE: ' \
'--merge-conflict-theirs-diff-header-decoration-style=[Style string for the decoration of the header above the '\''theirs'\'' merge conflict diff]:STYLE: ' \
'--merge-conflict-theirs-diff-header-style=[Style string for the header above the '\''theirs'\'' branch merge conflict diff]:STYLE: ' \
'--minus-empty-line-marker-style=[Style string for removed empty line marker]:STYLE: ' \
'--minus-emph-style=[Style string for emphasized sections of removed lines]:STYLE: ' \
'--minus-non-emph-style=[Style string for non-emphasized sections of removed lines that have an emphasized section]:STYLE: ' \
'--minus-style=[Style string for removed lines]:STYLE: ' \
'--navigate-regex=[Regular expression defining navigation stop points]:REGEX: ' \
'--pager=[Which pager to use]:CMD: ' \
'--paging=[Whether to use a pager when displaying output]:auto|always|never:(auto always never)' \
'--plus-emph-style=[Style string for emphasized sections of added lines]:STYLE: ' \
'--plus-empty-line-marker-style=[Style string for added empty line marker]:STYLE: ' \
'--plus-non-emph-style=[Style string for non-emphasized sections of added lines that have an emphasized section]:STYLE: ' \
'--plus-style=[Style string for added lines]:STYLE: ' \
'--right-arrow=[Text to display with a changed file path]:STRING: ' \
'--syntax-theme=[The syntax-highlighting theme to use]:SYNTAX_THEME: ' \
'--tabs=[The number of spaces to replace tab characters with]:N: ' \
'--true-color=[Whether to emit 24-bit ("true color") RGB color codes]:auto|always|never:(auto always never)' \
'--whitespace-error-style=[Style string for whitespace errors]:STYLE: ' \
'-w+[The width of underline/overline decorations]:N: ' \
'--width=[The width of underline/overline decorations]:N: ' \
'--word-diff-regex=[Regular expression defining a '\''word'\'' in within-line diff algorithm]:REGEX: ' \
'--wrap-left-symbol=[End-of-line wrapped content symbol (left-aligned)]:STRING: ' \
'--wrap-max-lines=[How often a line should be wrapped if it does not fit]:N: ' \
'--wrap-right-percent=[Threshold for right-aligning wrapped content]:PERCENT: ' \
'--wrap-right-prefix-symbol=[Pre-wrapped content symbol (right-aligned)]:STRING: ' \
'--wrap-right-symbol=[End-of-line wrapped content symbol (right-aligned)]:STRING: ' \
'--zero-style=[Style string for unchanged lines]:STYLE: ' \
'--24-bit-color=[Deprecated\: use --true-color]:auto|always|never:(auto always never)' \
'--color-only[Do not alter the input structurally in any way]' \
'--dark[Use default colors appropriate for a dark terminal background]' \
'--diff-highlight[Emulate diff-highlight]' \
'--diff-so-fancy[Emulate diff-so-fancy]' \
'--hyperlinks[Render commit hashes, file names, and line numbers as hyperlinks]' \
'--keep-plus-minus-markers[Prefix added/removed lines with a +/- character, as git does]' \
'--light[Use default colors appropriate for a light terminal background]' \
'-n[Display line numbers next to the diff]' \
'--line-numbers[Display line numbers next to the diff]' \
'--list-languages[List supported languages and associated file extensions]' \
'--list-syntax-themes[List available syntax-highlighting color themes]' \
'--navigate[Activate diff navigation]' \
'--no-gitconfig[Do not read any settings from git config]' \
'--parse-ansi[Display ANSI color escape sequences in human-readable form]' \
'--raw[Do not alter the input in any way]' \
'--relative-paths[Output all file paths relative to the current directory]' \
'--show-colors[Show available named colors]' \
'--show-config[Display the active values for all Delta options]' \
'--show-syntax-themes[Show example diff for available syntax-highlighting themes]' \
'--show-themes[Show example diff for available delta themes]' \
'-s[Display diffs in side-by-side layout]' \
'--side-by-side[Display diffs in side-by-side layout]' \
'-h[Print help (see more with '\''--help'\'')]' \
'--help[Print help (see more with '\''--help'\'')]' \
'-V[Print version]' \
'--version[Print version]' \
'::minus_file -- First file to be compared when delta is being used in diff mode:_files' \
'::plus_file -- Second file to be compared when delta is being used in diff mode:_files' \
&& ret=0
}

(( $+functions[_delta_commands] )) ||
_delta_commands() {
    local commands; commands=()
    _describe -t commands 'delta commands' commands "$@"
}

if [ "$funcstack[1]" = "_delta" ]; then
    _delta "$@"
else
    compdef _delta delta
fi


================================================
FILE: etc/docker/Makefile
================================================
.PHONY: delta-ubuntu
delta-ubuntu:
	docker build -f ubuntu.Dockerfile -t delta-ubuntu .


================================================
FILE: etc/docker/README.md
================================================
The docker image built here is intended for investigating delta issues, for example when they are OS-dependent.


================================================
FILE: etc/docker/delta-ubuntu
================================================
docker run -i delta-ubuntu delta $@

================================================
FILE: etc/docker/ubuntu.Dockerfile
================================================
FROM ubuntu:latest

RUN apt-get update && \
    apt-get install -y curl git less gcc

RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y

RUN git clone https://github.com/dandavison/delta.git
WORKDIR delta
RUN /root/.cargo/bin/cargo build --release

ENV PATH="${PWD}/target/release:${PATH}"

CMD delta


================================================
FILE: etc/examples/119-within-line-edits
================================================
#!/bin/bash


repo=$(mktemp -d)
cd $repo

git init
git commit --allow-empty -m "Initial commit"

cat > file1.js <<EOF
{
    if(g_themeController == nullptr)
    {
EOF

cat > file2.js <<EOF
myColor = color === control.palette.window ? themeController.themePalette.buttonColor
                                           : themeController.themePalette.windowColor
EOF

git add file1.js file2.js
git commit -m "Base commit"

cat > file1.js <<EOF
{
    if(g_themeViewModel == nullptr)
    {
EOF

cat > file2.js <<EOF
myColor = color === control.palette.window ? themeViewModel.themePalette.basicBase
                                           : themeViewModel.themePalette.windowColor
EOF

git add file1.js file2.js
git commit -m "Changes"

git log --patch


================================================
FILE: etc/examples/121-unrecognized-content-before-diff-1
================================================
#!/bin/bash
git show -p --cc --format=  --numstat --stat


================================================
FILE: etc/examples/121-unrecognized-content-before-diff-2
================================================
#!/bin/bash
git stash show --stat --patch


================================================
FILE: etc/examples/125-merge-conflict-1.diff
================================================
diff --cc src/config.rs
index e35d2e4,fad673e..0000000
--- a/src/config.rs
+++ b/src/config.rs
@@@ -1,4 -1,5 +1,10 @@@
++<<<<<<< Updated upstream
 +use std::process;
++||||||| constructed merge base
++=======
+ use std::process;
+ 
++>>>>>>> Stashed changes
  use std::str::FromStr;
  
  use syntect::highlighting::{Color, Style, StyleModifier, Theme, ThemeSet};
@@@ -78,7 -40,9 +84,15 @@@ pub fn get_config<'a>
          theme_set,
      );
  
++<<<<<<< Updated upstream
 +    let theme = if style::is_no_syntax_highlighting_theme_name(&theme_name) {
++||||||| constructed merge base
++    let theme = if is_no_syntax_highlighting_theme_name(&theme_name) {
++=======
+     println!("theme_name: {}", theme_name);
+ 
+     let theme = if is_no_syntax_highlighting_theme_name(&theme_name) {
++>>>>>>> Stashed changes
          None
      } else {
          Some(&theme_set.themes[&theme_name])
@@@ -190,10 -128,14 +204,14 @@@ fn get_is_light_mode_and_theme_name
  ) -> (bool, String) {
      let theme_arg = valid_theme_name_or_none(theme_arg, theme_set);
      let bat_theme_env_var = valid_theme_name_or_none(bat_theme_env_var, theme_set);
+ 
+     println!("theme_arg: {:?}", theme_arg);
+     println!("bat_theme_env_var: {:?}", bat_theme_env_var);
+ 
      match (theme_arg, bat_theme_env_var, light_mode_arg) {
          (None, None, false) => (false, style::DEFAULT_DARK_THEME.to_string()),
 -        (Some(theme_name), _, false) => (is_light_theme(&theme_name), theme_name),
 -        (None, Some(theme_name), false) => (is_light_theme(&theme_name), theme_name),
 +        (Some(theme_name), _, false) => (style::is_light_theme(&theme_name), theme_name),
 +        (None, Some(theme_name), false) => (style::is_light_theme(&theme_name), theme_name),
          (None, None, true) => (true, style::DEFAULT_LIGHT_THEME.to_string()),
          (Some(theme_name), _, is_light_mode) => (is_light_mode, theme_name),
          (None, Some(theme_name), is_light_mode) => (is_light_mode, theme_name),


================================================
FILE: etc/examples/125-merge-conflict-2.diff
================================================
diff --cc Makefile
index 759070d,3daf9eb..0000000
--- a/Makefile
+++ b/Makefile
@@@ -4,13 -4,16 +4,37 @@@ build
  lint:
  	cargo clippy
  
++<<<<<<< Updated upstream
 +test: unit-test end-to-end-test
 +
 +unit-test:
 +	cargo test
 +
 +end-to-end-test: build
 +	bash -c "diff -u <(git log -p) <(git log -p | target/release/delta --color-only | perl -pe 's/\e\[[0-9;]*m//g')"
++||||||| constructed merge base
++test:
++	cargo test
++	bash -c "diff -u <(git log -p) \
++                     <(git log -p | delta --width variable \
++                                          --tabs 0 \
++	                                      --retain-plus-minus-markers \
++                                          --commit-style plain \
++                                          --file-style plain \
++                                          --hunk-style plain \
++                                  | ansifilter)"
++=======
+ test:
+ 	cargo test --release
+ 	bash -c "diff -u <(git log -p) \
+                      <(git log -p | target/release/delta --width variable \
+                                           --tabs 0 \
+ 	                                      --retain-plus-minus-markers \
+                                           --commit-style plain \
+                                           --file-style plain \
+                                           --hunk-style plain \
+                                   | ansifilter)" > /dev/null
++>>>>>>> Stashed changes
  
  release:
  	@make -f release.Makefile release


================================================
FILE: etc/examples/127-paths-with-spaces--added
================================================
#!/bin/bash


repo=$(mktemp -d)
cd $repo

mkdir "with space"
echo "file1 contents" > "with space/file1"

mkdir "nospace"
echo "file2 contents" >  "nospace/file2"

git init
git commit --allow-empty -m "Initial commit"
git add .
git commit -m "Initial commit"

git show


================================================
FILE: etc/examples/127-paths-with-spaces--renamed
================================================
#!/bin/bash


repo=$(mktemp -d)
cd $repo

mkdir "with space"
echo "file1 contents" > "with space/file1"

mkdir "nospace"
echo "file2 contents" >  "nospace/file2"

git init
git commit --allow-empty -m "Initial commit"
git add .
git commit -m "Initial commit"

git mv "with space/file1" "with space/file1-renamed"
git mv "nospace/file2" "nospace/file2-renamed"
git commit -m "Rename"

git show


================================================
FILE: etc/examples/128-empty-file
================================================
#!/bin/bash


repo=$(mktemp -d)
cd $repo

git init
git commit --allow-empty -m "Initial commit"

touch file

git add file
git commit -m "Initial commit"

git show


================================================
FILE: etc/examples/139-file-with-space-delimited-dash.diff
================================================
diff --git a/strange - file.txt b/strange - file.txt
new file mode 100644
index 0000000..9daeafb
--- /dev/null
+++ b/strange - file.txt        
@@ -0,0 +1,1 @@
+test


================================================
FILE: etc/examples/140-within-line-edits
================================================
#!/bin/bash


repo=$(mktemp -d)
cd $repo

git init
git commit --allow-empty -m "Initial commit"

echo "did_emsg = FALSE;" > file.R

git add file.R
git commit -m "Base commit"

echo "did_emsg == FALSE;" > file.R

git add file.R
git commit -m "Short change"

git revert --no-edit HEAD

echo "did_emsg = TRUE;" > file.R
git add file.R
git commit -m "Long change"

git log --patch


================================================
FILE: etc/examples/140-within-line-edits-counter-example
================================================
#!/bin/bash


repo=$(mktemp -d)
cd $repo

git init
git commit --allow-empty -m "Initial commit"

cat > file <<EOF
aaaa a aaa
bbbb b bbb
cccc c ccc
EOF

git add file
git commit -m "Base commit"

cat > file <<EOF
bbbb ! bbb
dddd d ddd
cccc ! ccc
EOF

git add file
git commit -m "Changes"

git log --patch


================================================
FILE: etc/examples/189-merge-conflict.1.diff
================================================
diff --cc src/handlers/merge_conflict.rs
index 8fc4116b,eb115dde..00000000
--- a/src/handlers/merge_conflict.rs
+++ b/src/handlers/merge_conflict.rs
@@@ -88,8 -88,10 +88,20 @@@ fn paint_buffered_merge_conflict_lines
          .map(|s| (s.to_string(), State::HunkMinus(None, None)))
          .collect();
      for plus_lines in &[&lines[Ours], &lines[Theirs]] {
++<<<<<<< HEAD
 +        let plus_lines = plus_lines.iter().collect();
 +        let a = 1;
++||||||| cf306705
++        let plus_lines = plus_lines
++            .iter()
++            .map(|s| (s.to_string(), State::HunkMinus(None, None)))
++            .collect();
++=======
+         let plus_lines = plus_lines
+             .iter()
+             .map(|s| (s.to_string(), State::HunkMinus(None, Some(7))))
+             .collect();
++>>>>>>> z-189-combined-diff-and-conflicts-merge-conflict-branch-2
          paint::paint_minus_and_plus_lines(
              MinusPlus::new(&minus_lines, &plus_lines),
              line_numbers_data,
@@@ -97,7 -99,7 +109,12 @@@
              output_buffer,
              config,
          );
++<<<<<<< HEAD
 +        let b = 2;
++||||||| cf306705
++=======
+         let b = 9;
++>>>>>>> z-189-combined-diff-and-conflicts-merge-conflict-branch-2
          output_buffer.push_str("\n\n");
      }
      Ok(())


================================================
FILE: etc/examples/189-merge-conflict.2.diff
================================================
diff --cc src/paint.rs
index 79b44db1,0f429d5c..00000000
--- a/src/paint.rs
+++ b/src/paint.rs
@@@ -387,30 -457,36 +387,88 @@@ impl<'p> Painter<'p> 
      ) -> (Option<BgFillMethod>, Style) {
          // style:          for right fill if line contains no emph sections
          // non_emph_style: for right fill if line contains emph sections
++<<<<<<< HEAD
 +        let (style, non_emph_style) = match state {
 +            State::HunkMinus(None) | State::HunkMinusWrapped => {
 +                (config.minus_style, config.minus_non_emph_style)
 +            }
 +            State::HunkZero | State::HunkZeroWrapped => (config.zero_style, config.zero_style),
 +            State::HunkPlus(None) | State::HunkPlusWrapped => {
 +                (config.plus_style, config.plus_non_emph_style)
 +            }
 +            State::HunkMinus(Some(_)) | State::HunkPlus(Some(_)) => {
 +                let style = if !diff_sections.is_empty() {
 +                    diff_sections[diff_sections.len() - 1].0
++||||||| parent of 4d4b19ca (Always use non-emph style for right fill)
++        let (style, non_emph_style) = match state {
++            State::HunkMinus(None) | State::HunkMinusWrapped => {
++                (config.minus_style, config.minus_non_emph_style)
++            }
++            State::HunkMinus(Some(raw_line)) => {
++                // TODO: This is the second time we are parsing the ANSI sequences
++                if let Some(ansi_term_style) = ansi::parse_first_style(raw_line) {
++                    let style = Style {
++                        ansi_term_style,
++                        ..Style::new()
++                    };
++                    (style, style)
++                } else {
++                    (config.minus_style, config.minus_non_emph_style)
++                }
++            }
++            State::HunkZero | State::HunkZeroWrapped => (config.zero_style, config.zero_style),
++            State::HunkPlus(None) | State::HunkPlusWrapped => {
++                (config.plus_style, config.plus_non_emph_style)
++            }
++            State::HunkPlus(Some(raw_line)) => {
++                // TODO: This is the second time we are parsing the ANSI sequences
++                if let Some(ansi_term_style) = ansi::parse_first_style(raw_line) {
++                    let style = Style {
++                        ansi_term_style,
++                        ..Style::new()
++                    };
++                    (style, style)
++=======
+         let non_emph_style = match state {
+             State::HunkMinus(None) | State::HunkMinusWrapped => config.minus_non_emph_style,
+             State::HunkMinus(Some(raw_line)) => {
+                 // TODO: This is the second time we are parsing the ANSI sequences
+                 if let Some(ansi_term_style) = ansi::parse_first_style(raw_line) {
+                     Style {
+                         ansi_term_style,
+                         ..Style::new()
+                     }
+                 } else {
+                     config.minus_non_emph_style
+                 }
+             }
+             State::HunkZero | State::HunkZeroWrapped => config.zero_style,
+             State::HunkPlus(None) | State::HunkPlusWrapped => config.plus_non_emph_style,
+             State::HunkPlus(Some(raw_line)) => {
+                 // TODO: This is the second time we are parsing the ANSI sequences
+                 if let Some(ansi_term_style) = ansi::parse_first_style(raw_line) {
+                     Style {
+                         ansi_term_style,
+                         ..Style::new()
+                     }
++>>>>>>> 4d4b19ca (Always use non-emph style for right fill)
                  } else {
++<<<<<<< HEAD
 +                    config.null_style
 +                };
 +                (style, style)
++||||||| parent of 4d4b19ca (Always use non-emph style for right fill)
++                    (config.plus_style, config.plus_non_emph_style)
++                }
++=======
+                     config.plus_non_emph_style
+                 }
++>>>>>>> 4d4b19ca (Always use non-emph style for right fill)
              }
-             State::Blame(_, _) => (diff_sections[0].0, diff_sections[0].0),
-             _ => (config.null_style, config.null_style),
-         };
-         let fill_style = if style_sections_contain_more_than_one_style(diff_sections) {
-             non_emph_style // line contains an emph section
-         } else {
-             style
+             State::Blame(_, _) => diff_sections[0].0,
+             _ => config.null_style,
          };
+         let fill_style = non_emph_style;
  
          match (
              fill_style.get_background_color().is_some(),


================================================
FILE: etc/examples/189-merge-conflict.3.diff
================================================
diff --cc Makefile
index 759070d,3daf9eb..0000000
--- a/Makefile
+++ b/Makefile
@@@ -4,13 -4,16 +4,37 @@@ build
  lint:
  	cargo clippy
  
++<<<<<<< Updated upstream
 +test: unit-test end-to-end-test
 +
 +unit-test:
 +	cargo test
 +
 +end-to-end-test: build
 +	bash -c "diff -u <(git log -p) <(git log -p | target/release/delta --color-only | perl -pe 's/\e\[[0-9;]*m//g')"
++||||||| constructed merge base
++test:
++	cargo test
++	bash -c "diff -u <(git log -p) \
++                     <(git log -p | delta --width variable \
++                                          --tabs 0 \
++	                                      --retain-plus-minus-markers \
++                                          --commit-style plain \
++                                          --file-style plain \
++                                          --hunk-style plain \
++                                  | ansifilter)" ++=======
+ test:
+ 	cargo test --release
+ 	bash -c "diff -u <(git log -p) \
+                      <(git log -p | target/release/delta --width variable \
+                                           --tabs 0 \
+ 	                                      --retain-plus-minus-markers \
+                                           --commit-style plain \
+                                           --file-style plain \
+                                           --hunk-style plain \
+                                   | ansifilter)"> /dev/null
++>>>>>>> Stashed changes

  release:
  	@make -f release.Makefile release


================================================
FILE: etc/examples/189-merge-conflict.4.diff
================================================
diff --cc src/handlers/merge_conflict.rs
index 888eee8b,7ea2e9d3..00000000
--- a/src/handlers/merge_conflict.rs
+++ b/src/handlers/merge_conflict.rs
@@@ -5,7 -5,7 +5,11 @@@ use crate::utils::process
  impl<'a> StateMachine<'a> {
      pub fn handle_merge_conflict_line(&mut self) -> std::io::Result<bool> {
          self.painter.emit()?;
++<<<<<<< HEAD
 +        // hello
++=======
+         // bye
++>>>>>>> b
          let mut handled_line = false;
          if matches!(self.state, State::Unknown) {
              if let Some(process::CallingProcess::GitShow(_, extension)) =


================================================
FILE: etc/examples/189-merge-conflict.5.diff
================================================
diff --cc src/handlers/merge_conflict.rs
index 888eee8b,7ea2e9d3..00000000
--- a/src/handlers/merge_conflict.rs
+++ b/src/handlers/merge_conflict.rs
@@@ -5,7 -5,7 +5,12 @@@ use crate::utils::process
  impl<'a> StateMachine<'a> {
      pub fn handle_merge_conflict_line(&mut self) -> std::io::Result<bool> {
          self.painter.emit()?;
++<<<<<<< HEAD
 +        // hello
++||||||| e641341d
++=======
+         // bye
++>>>>>>> b
          let mut handled_line = false;
          if matches!(self.state, State::Unknown) {
              if let Some(process::CallingProcess::GitShow(_, extension)) =


================================================
FILE: etc/examples/205-highlight-bug-1.diff
================================================
diff --git a/b b/b
index 1b647ff..b6467a2 100644
--- a/b
+++ b/b
@@ -1 +1 @@
-return parent_names
+parent_names


================================================
FILE: etc/examples/205-highlight-bug-2.diff
================================================
diff --git i/diff-test.txt w/diff-test.txt
index 5fd0037..3f0bbd0 100644
--- i/diff-test.txt
+++ w/diff-test.txt
@@ -1,1 +1,1 @@
- [
+= (


================================================
FILE: etc/examples/205-highlight-bug.diff
================================================
diff --git i/diff-test.txt w/diff-test.txt
index 5fd0037..3f0bbd0 100644
--- i/diff-test.txt
+++ w/diff-test.txt
@@ -1,6 +1,10 @@
-foo
+foo yeah
 	bar
-return parent_names + [self.tree_name.value]
+parent_names += (self.tree_name.value,)
+if include_module_names:
+	skdjfh
+	kjlkfjs
+return parent_names

-foo
-bar
+foo-one
+bar-two


================================================
FILE: etc/examples/308-side-by-side-tabs.diff
================================================
diff --git .config/git/config .config/git/config
index bc4ae2e..b058f99 100644
--- .config/git/config
+++ .config/git/config
@@ -26,7 +21,6 @@
 	# Show summary of changes to submodules. See also:
 	# https://git-scm.com/book/en/v2/Git-Tools-Submodules
 	submoduleSummary = true
-	showStash = true

 [diff]
 	tool = vimdiff


================================================
FILE: etc/examples/345-keep-plus-minus-markers.diff
================================================
commit f6086641f4cfe7c28559db99c27a964b3af31dab (HEAD -> master, origin/master)
Author: Eric Nielsen <eric@amalgamar.com.br>
Date:   Thu Oct 8 10:10:45 2020 -0500

    Add class Name

diff --git a/Person.java b/Person.java
index 971edb4..ef67116 100644
--- a/Person.java
+++ b/Person.java
@@ -3,6 +3,11 @@ import lombok.NonNull;

 @Data
 public class Person {
-           private Long id;
-  @NonNull private String name;
+  private Long id;
+  @Data
+  public class Name {
+    @NonNull private String first;
+    @NonNull private String last;
+  }
+  @NonNull private Name name;
 }

commit f94abd9a5d883bcf2bdee4ff735f1c3a62cc9346
Author: Eric Nielsen <eric@amalgamar.com.br>
Date:   Thu Oct 8 10:03:54 2020 -0500

    Replace "@NonNull" by spaces

diff --git a/Person.java b/Person.java
index 07255bf..971edb4 100644
--- a/Person.java
+++ b/Person.java
@@ -3,6 +3,6 @@ import lombok.NonNull;

 @Data
 public class Person {
-  @NonNull private Long id;
+           private Long id;
   @NonNull private String name;
 }

commit 4b3c2a712bef024228a95db7a318de3ebc23e11d
Author: Eric Nielsen <eric@amalgamar.com.br>
Date:   Wed Oct 7 18:28:30 2020 -0500

    Add "@NonNull "

diff --git a/Person.java b/Person.java
index c6c830c..07255bf 100644
--- a/Person.java
+++ b/Person.java
@@ -1,7 +1,8 @@
 import lombok.Data;
+import lombok.NonNull;

 @Data
 public class Person {
-  private Long id;
-  private String name;
+  @NonNull private Long id;
+  @NonNull private String name;
 }

commit 27866afcea30970731ac032b108661fd0c247f2b
Author: Eric Nielsen <eric@amalgamar.com.br>
Date:   Wed Oct 7 18:27:28 2020 -0500

    First commit

diff --git a/Person.java b/Person.java
new file mode 100644
index 0000000..c6c830c
--- /dev/null
+++ b/Person.java
@@ -0,0 +1,7 @@
+import lombok.Data;
+
+@Data
+public class Person {
+  private Long id;
+  private String name;
+}


================================================
FILE: etc/examples/345-keep-plus-minus-markers.gitconfig
================================================
[core]
	pager = delta
[color "diff-highlight"]
	oldNormal = red bold
	oldHighlight = red bold 52
	newNormal = green bold
	newHighlight = green bold 22
[color "diff"]
	meta = yellow bold
	frag = magenta bold
	commit = yellow bold
	old = red bold
	new = green bold
	whitespace = red reverse
[delta]
	commit-decoration-style = yellow ol ul
	file-style = bold yellow
	file-decoration-style = yellow box
	hunk-header-style = bold 146
	hunk-header-decoration-style =
	minus-style = bold red
	minus-non-emph-style = bold red
	minus-emph-style = bold red 52
	minus-empty-line-marker-style = normal
	zero-style = normal
	plus-style = bold green
	plus-non-emph-style = bold green
	plus-emph-style = bold green 22
	plus-empty-line-marker-style = normal
	keep-plus-minus-markers = true
	line-numbers = false
	side-by-side = true
[diff-so-fancy]
	markEmptyLines = false
	stripLeadingSymbols = false
	rulerWidth = 50


================================================
FILE: etc/examples/388-whitespace_error_keep_plus_minus_marker
================================================
diff --git a/Cargo.toml b/Cargo.toml
index 93f58aea..2f945245 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -11,6 +11,7 @@ readme = "README.md"
+


================================================
FILE: etc/examples/55-unicode-width.diff
================================================
diff --git a/test.txt b/test.txt
index 66a5cb0..0e8c1b9 100644
--- a/test.txt
+++ b/test.txt
@@ -1,1 +1,1 @@
-This is an English sentence. This is an English sentence. This is an English sentence. This is an English sentence. This is an English sentence.
+This is an English sentence. This is an English sentence. This is an English sentence. This is an English sentence. This is an English sentence. some more words

-这是一个汉语句子。这是一个汉语句子。这是一个汉语句子。这是一个汉语句子。这是一个汉语句子。这是一个汉语句子。这是一个汉语句子。这是一个汉语句子。
+这是一个汉语句子。这是一个汉语句子。这是一个汉语句子。这是一个汉语句子。这是一个汉语句子。这是一个汉语句子。这是一个汉语句子。这是一个汉语句子。多点字
+
+Another line of English
+更多一行汉语
+Another line of English
+更多一行汉语
+Another line of English
+更多一行汉语


================================================
FILE: etc/examples/56-unified-directory-diff
================================================
#!/bin/bash
d1=$(mktemp -d)
d2=$(mktemp -d)
mkdir $d1 $d2
git show HEAD~10:./src/delta.rs > $d1/a.rs
git show HEAD:./src/delta.rs > $d2/a.rs
touch $d2/b.rs
git show HEAD~10:./src/paint.rs > $d1/c.rs
git show HEAD:./src/paint.rs > $d2/c.rs
diff -u $d1 $d2


================================================
FILE: etc/examples/60-submodule
================================================
#!/bin/bash

submodule=$(mktemp -d)
repo=$(mktemp -d)
cd $submodule
git init
git commit --allow-empty -m "Initial commit"
cd $repo
git init
git submodule add $submodule submodule
git commit --allow-empty -m "Initial commit"
touch submodule/a
cat >> .git/config <<EOF
[diff]
    submodule = log
EOF
git diff | cat


================================================
FILE: etc/examples/662-submodules
================================================
#!/bin/bash
REPO_ROOT=/tmp/submodule-diff-example
REPO_DATE_FMT=%H:%M:%S.%N
mkdir ${REPO_ROOT} && git -C ${REPO_ROOT} init && cd ${REPO_ROOT}
date +${REPO_DATE_FMT} >> baserepo && git add baserepo && git commit -m "Base repo commit 1"

for sub in A B C; do
    git init submodule${sub}
    for iter in $(seq 1 4); do
        date +${REPO_DATE_FMT} >> submodule${sub}/subcontent
        git -C submodule${sub} add subcontent && git -C submodule${sub} commit -m "Submodule ${sub} initial commit $iter"
    done
    # Add initial submodule, message of "Submodule submoduleX 0000000...xxxxxxx (new submodule)", no individual commits
    git submodule add ../bogus-url-${sub} submodule${sub} && \
        git commit -m "Add submodule${sub}" # the diff handling for this is correct in delta

    # Create additional submodule commits
    for iter in $(seq 1 2); do
        date +${REPO_DATE_FMT} >> submodule${sub}/subcontent
        git -C submodule${sub} add subcontent && git -C submodule${sub} commit -m "Submodule ${sub} extra change ${iter}"
    done
    git add submodule${sub} && git commit -m "Update submodule${sub}"
done

git -C submoduleA reset --hard HEAD~4
git -C submoduleC reset --hard HEAD~2

for sub in B C; do
    for iter in $(seq 1 3); do
        date +${REPO_DATE_FMT} >> submodule${sub}/subcontent
        git -C submodule${sub} add subcontent && git -C submodule${sub} commit -m "Submodule ${sub} stage change ${iter}"
    done
done

# Add all submodule updates in single commit to test multiple submodule updates in single commit
git add submodule[A-C] && git commit -m "Update all submodules"

# submoduleA end state is only removed commits
# submoduleB end state is only added commits
# submoduleC is a mixture of removed and added commits (e.g. different branch)

# Manual, inspect superproject history via:
#    "git -c diff.submodule=short log -p | delta --no-gitconfig"
#    "git -c diff.submodule=log log -p | delta --no-gitconfig"
#    "git -c diff.submodule=diff log -p | delta --no-gitconfig"


================================================
FILE: etc/examples/72-color-moved-2.diff
================================================
diff --git a/file.py b/file.py
index f07db74..3cb162d 100644
--- a/file.py
+++ b/file.py
@@ -1,2 +1,2 @@
-class X: pass
 class Y: pass
+class X: pass


================================================
FILE: etc/examples/72-color-moved-3.diff
================================================
commit fffb6bf94087c432b6e2e29cab97bf1f8987c641
Author: Dan Davison <dandavison7@gmail.com>
Date:   Tue Nov 23 14:51:46 2021 -0500

    DEBUG

diff --git a/src/config.rs b/src/config.rs
index efe6adb..9762222 100644
--- a/src/config.rs
+++ b/src/config.rs
@@ -400,6 +400,7 @@ fn make_blame_palette(blame_palette: Option<String>, is_light_mode: bool) -> Vec
+pub fn user_supplied_option(option: &str, arg_matches: &clap::ArgMatches) -> bool {
@@ -416,29 +433,30 @@ fn make_styles_map(opt: &cli::Opt) -> Option<HashMap<style::AnsiTermStyleEqualit
-pub fn user_supplied_option(option: &str, arg_matches: &clap::ArgMatches) -> bool {


================================================
FILE: etc/examples/72-color-moved-4.diff
================================================
diff --git a/file.py b/file.py
index f2f1f5e..9735c3a 100644
--- a/file.py
+++ b/file.py
@@ -1,2 +1,2 @@
-class X: pass  # • unicode
 class Y: pass  # • unicode
+class X: pass  # • unicode


================================================
FILE: etc/examples/72-color-moved.diff
================================================
diff --git a/a b/a
index 283ba4ce..2c9304d5 100644
--- a/a
+++ b/a
@@ -3,12 +3,12 @@
 1111 1111 1111 1111
 1111 1111 1111 1111
 
-2222 2222 2222 2222
-2222 2222 2222 2222
-2222 2222 2222 2222
-2222 2222 2222 2222
-
 3333 3333 3333 3333
 3333 3333 3333 3333
 3333 3333 3333 3333
 3333 3333 3333 3333
+
+2222 2222 2222 2222
+2222 2222 2222 2222
+2222 2222 2222 2222
+2222 2222 2222 2222


================================================
FILE: etc/examples/802-color-moved.diff
================================================
commit 57e5082
Author: Caleb Maclennan <caleb@alerque.com>
Date:   Sat Nov 27 01:08:54 2021 +0300

    Move verses to correct week file

diff --git a/foo.md b/foo.md
index ba489f0..0ad8245 100644
--- a/foo.md
+++ b/foo.md
@@ -20,3 +20,99 @@ foo bar
+As I swore in my wrath, 'They shall not enter my rest.'"


================================================
FILE: etc/examples/813-cthulhu.diff
================================================
commit 2cde51fbd0f310c8a2c5f977e665c0ac3945b46d
Merge: 7471c5c9f58e c097d5fdf3b5 74c375cb85d7 04c3a852f51f 5095f55d7cc3 4f534777c130 2f54d2a1cf7e 56d37d85438d 192043cf6089 f467a0f513ad bbe580302d33 3990c516de66 d754fa9ad18d 516ea4b58433 69ae8489076f 25c1a63f43ca f52c91921553 111bd7b18e13 aafa85e71a75 dd407a324323 71467e46414d 0f7f3d1f17c2 8778ac6be25a 0406a40a095c 308a0f3f24db 2650bc4f6d0c 8cb7a36eb3a8 323702b4e06d ef749400434c 3cec159cfb3f 72aa62bed3ea 328089a47112 11db0da831b1 e1771bcf99b0 f60e5473e678 a010ff628c09 5e8154332f48 58381da68774 626bcacb89f9 38136bde7691 06b2bd23057f 8c5178fca4ce 8e6ad35a31e7 008ef947d0c5 f58c4fc4a3bf 2309d6757900 5c1537163ce7 b65ab73e5d62 26090a834b49 9ea6fbc66d15 2c4864334c4d 1769267bb013 f3f9a60f7947 f25cf3496982 3f3002692ce8 fbbf7fea8e80 c3e8494c001c e40e0b5da87b 50c969732043 63587116811b 0112b62b12e1 a0a05916cf67 b888edbc68fb d44008b35858 9a199b8e9933 784cbf8ab464
Author: Mark Brown <broonie@linaro.org>
Date:   Thu Jan 2 13:01:55 2014 +0000

    Merge remote-tracking branches 'asoc/topic/ad1836', 'asoc/topic/ad193x', 'asoc/topic/adav80x', 'asoc/topic/adsp', 'asoc/topic/ak4641', 'asoc/topic/ak4642', 'asoc/topic/arizona', 'asoc/topic/atmel', 'asoc/topic/au1x', 'asoc/topic/axi', 'asoc/topic/bcm2835', 'asoc/topic/blackfin', 'asoc/topic/cs4271', 'asoc/topic/cs42l52', 'asoc/topic/da7210', 'asoc/topic/davinci', 'asoc/topic/ep93xx', 'asoc/topic/fsl', 'asoc/topic/fsl-mxs', 'asoc/topic/generic', 'asoc/topic/hdmi', 'asoc/topic/jack', 'asoc/topic/jz4740', 'asoc/topic/max98090', 'asoc/topic/mxs', 'asoc/topic/omap', 'asoc/topic/pxa', 'asoc/topic/rcar', 'asoc/topic/s6000', 'asoc/topic/sai', 'asoc/topic/samsung', 'asoc/topic/sgtl5000', 'asoc/topic/spear', 'asoc/topic/ssm2518', 'asoc/topic/ssm2602', 'asoc/topic/tegra', 'asoc/topic/tlv320aic3x', 'asoc/topic/twl6040', 'asoc/topic/txx9', 'asoc/topic/uda1380', 'asoc/topic/width', 'asoc/topic/wm8510', 'asoc/topic/wm8523', 'asoc/topic/wm8580', 'asoc/topic/wm8711', 'asoc/topic/wm8728', 'asoc/topic/wm8731', 'asoc/topic/wm8741', 'asoc/topic/wm8750', 'asoc/topic/wm8753', 'asoc/topic/wm8776', 'asoc/topic/wm8804', 'asoc/topic/wm8900', 'asoc/topic/wm8901', 'asoc/topic/wm8940', 'asoc/topic/wm8962', 'asoc/topic/wm8974', 'asoc/topic/wm8985', 'asoc/topic/wm8988', 'asoc/topic/wm8990', 'asoc/topic/wm8991', 'asoc/topic/wm8994', 'asoc/topic/wm8995', 'asoc/topic/wm9081' and 'asoc/topic/x86' into asoc-next

diff --cc include/sound/soc.h
index 1cda7d343d16,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1cda7d343d16,1f741cb24f33,1f741cb24f33,1f741cb24f33,f7e1fac51bba,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1cda7d343d16,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33,1f741cb24f33..5a049d969c59
--- a/include/sound/soc.h
+++ b/include/sound/soc.h
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -444,17 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 -446,6 +444,17 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ int snd_soc_jack_add_gpios(struct snd_s
  ++                                                              			struct snd_soc_jack_gpio *gpios);
  ++                                                              void snd_soc_jack_free_gpios(struct snd_soc_jack *jack, int count,
  ++                                                              			struct snd_soc_jack_gpio *gpios);
++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++  #else
++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++  static inline int snd_soc_jack_add_gpios(struct snd_soc_jack *jack, int count,
++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++  					 struct snd_soc_jack_gpio *gpios)
++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++  {
++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++  	return 0;
++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++  }
++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++  
++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++  static inline void snd_soc_jack_free_gpios(struct snd_soc_jack *jack, int count,
++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++  					   struct snd_soc_jack_gpio *gpios)
++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++  {
++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++  }
  +                                                               #endif
  +                                                               
  +                                                               /* codec register bit access */
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -879,8 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,8 -879,6 -879,6 -879,6 -886,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,8 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 -879,6 +886,8 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ struct snd_soc_dai_link 
  ++                                                              
  ++                                                              	/* Symmetry requirements */
  ++                                                              	unsigned int symmetric_rates:1;
++++++++++++++++++ ++++++++++++++++ ++++++++++++++++++++++++++++  	unsigned int symmetric_channels:1;
++++++++++++++++++ ++++++++++++++++ ++++++++++++++++++++++++++++  	unsigned int symmetric_samplebits:1;
  +                                                               
  +                                                               	/* Do not create a PCM for this DAI link (Backend link) */
  +                                                               	unsigned int no_pcm:1;
diff --cc sound/soc/Kconfig
index 5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,866dfec4b6b5,a5e3a70c0d3d,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,5138b8493051,463a9e25e04f..d62ce483a443
--- a/sound/soc/Kconfig
+++ b/sound/soc/Kconfig
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,9 -31,9 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 -31,8 +31,10 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ config SND_SOC_GENERIC_DMAENGINE_PC
  ++                                                              	select SND_DMAENGINE_PCM
  ++                                                              
  ++                                                              # All the supported SoCs
++++++++++ +++++++++++++++++++++++++++++++++++++++++++++++++++++  source "sound/soc/adi/Kconfig"
  +                                                               source "sound/soc/atmel/Kconfig"
  +                                                               source "sound/soc/au1x/Kconfig"
+++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++  source "sound/soc/bcm/Kconfig"
  +                                                               source "sound/soc/blackfin/Kconfig"
  +                                                               source "sound/soc/cirrus/Kconfig"
  +                                                               source "sound/soc/davinci/Kconfig"
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -43,7 -43,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 -42,7 +44,7 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ source "sound/soc/jz4740/Kconfig
  ++                                                              source "sound/soc/nuc900/Kconfig"
  ++                                                              source "sound/soc/omap/Kconfig"
  ++                                                              source "sound/soc/kirkwood/Kconfig"
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  source "sound/soc/intel/Kconfig"
  +                                                               source "sound/soc/mxs/Kconfig"
  +                                                               source "sound/soc/pxa/Kconfig"
  +                                                               source "sound/soc/samsung/Kconfig"
diff --cc sound/soc/Makefile
index 8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,c70c7f76d2df,b52d4aad0716,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,8b9e70105dd2,ff291d3e60af..62a1822e77bf
--- a/sound/soc/Makefile
+++ b/sound/soc/Makefile
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,16 -8,16 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 -8,15 +8,17 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ endi
  ++                                                              obj-$(CONFIG_SND_SOC)	+= snd-soc-core.o
  ++                                                              obj-$(CONFIG_SND_SOC)	+= codecs/
  ++                                                              obj-$(CONFIG_SND_SOC)	+= generic/
++++++++++ +++++++++++++++++++++++++++++++++++++++++++++++++++++  obj-$(CONFIG_SND_SOC)	+= adi/
  +                                                               obj-$(CONFIG_SND_SOC)	+= atmel/
  +                                                               obj-$(CONFIG_SND_SOC)	+= au1x/
+++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++  obj-$(CONFIG_SND_SOC)	+= bcm/
  +                                                               obj-$(CONFIG_SND_SOC)	+= blackfin/
  +                                                               obj-$(CONFIG_SND_SOC)	+= cirrus/
  +                                                               obj-$(CONFIG_SND_SOC)	+= davinci/
  ++                                                              obj-$(CONFIG_SND_SOC)	+= dwc/
  ++                                                              obj-$(CONFIG_SND_SOC)	+= fsl/
  ++                                                              obj-$(CONFIG_SND_SOC)	+= jz4740/
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  obj-$(CONFIG_SND_SOC)	+= intel/
  +                                                               obj-$(CONFIG_SND_SOC)	+= mxs/
  +                                                               obj-$(CONFIG_SND_SOC)	+= nuc900/
  +                                                               obj-$(CONFIG_SND_SOC)	+= omap/
diff --cc sound/soc/atmel/sam9x5_wm8731.c
index 7d6a9055874b,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,6f4e812d6e61,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15,992ae38d5a15..3188036a18f0
--- a/sound/soc/atmel/sam9x5_wm8731.c
+++ b/sound/soc/atmel/sam9x5_wm8731.c
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -97,8 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 -97,6 +97,8 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ static int sam9x5_wm8731_driver_probe(s
  ++                                                              		goto out;
  ++                                                              	}
  ++                                                              
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	snd_soc_card_set_drvdata(card, priv);
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
  +                                                               	card->dev = &pdev->dev;
  +                                                               	card->owner = THIS_MODULE;
  +                                                               	card->dai_link = dai;
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -109,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 -107,7 +109,7 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  ++                                                              	dai->stream_name = "WM8731 PCM";
  ++                                                              	dai->codec_dai_name = "wm8731-hifi";
  ++                                                              	dai->init = sam9x5_wm8731_init;
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	dai->dai_fmt = SND_SOC_DAIFMT_DSP_A | SND_SOC_DAIFMT_NB_NF
  +                                                               		| SND_SOC_DAIFMT_CBM_CFM;
  +                                                               
  +                                                               	ret = snd_soc_of_parse_card_name(card, "atmel,model");
diff --cc sound/soc/codecs/wm5110.c
index 0ab2dc296474,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,f3d96eae031a,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,bbd64384ca1c,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181,c3c7396a6181..22bd7dd80bba
--- a/sound/soc/codecs/wm5110.c
+++ b/sound/soc/codecs/wm5110.c
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,51 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,10 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 -30,13 +30,51 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  ++                                                              #include <linux/mfd/arizona/registers.h>
  ++                                                              
  ++                                                              #include "arizona.h"
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  #include "wm_adsp.h"
  +                                                               #include "wm5110.h"
  +                                                               
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  #define WM5110_NUM_ADSP 4
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
  +                                                               struct wm5110_priv {
  +                                                               	struct arizona_priv core;
  +                                                               	struct arizona_fll fll[2];
  ++                                                              };
  ++                                                              
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  static const struct wm_adsp_region wm5110_dsp1_regions[] = {
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ .type = WMFW_ADSP2_PM, .base = 0x100000 },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ .type = WMFW_ADSP2_ZM, .base = 0x180000 },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ .type = WMFW_ADSP2_XM, .base = 0x190000 },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ .type = WMFW_ADSP2_YM, .base = 0x1a8000 },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  };
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  static const struct wm_adsp_region wm5110_dsp2_regions[] = {
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ .type = WMFW_ADSP2_PM, .base = 0x200000 },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ .type = WMFW_ADSP2_ZM, .base = 0x280000 },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ .type = WMFW_ADSP2_XM, .base = 0x290000 },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ .type = WMFW_ADSP2_YM, .base = 0x2a8000 },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  };
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  static const struct wm_adsp_region wm5110_dsp3_regions[] = {
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ .type = WMFW_ADSP2_PM, .base = 0x300000 },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ .type = WMFW_ADSP2_ZM, .base = 0x380000 },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ .type = WMFW_ADSP2_XM, .base = 0x390000 },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ .type = WMFW_ADSP2_YM, .base = 0x3a8000 },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  };
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  static const struct wm_adsp_region wm5110_dsp4_regions[] = {
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ .type = WMFW_ADSP2_PM, .base = 0x400000 },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ .type = WMFW_ADSP2_ZM, .base = 0x480000 },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ .type = WMFW_ADSP2_XM, .base = 0x490000 },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ .type = WMFW_ADSP2_YM, .base = 0x4a8000 },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  };
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  static const struct wm_adsp_region *wm5110_dsp_regions[] = {
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	wm5110_dsp1_regions,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	wm5110_dsp2_regions,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	wm5110_dsp3_regions,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	wm5110_dsp4_regions,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  };
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
  +                         +                                     static const struct reg_default wm5110_sysclk_revd_patch[] = {
  +                         +                                     	{ 0x3093, 0x1001 },
  +                         +                                     	{ 0x30E3, 0x1301 },
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -105,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -40,0 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 -67,8 +105,8 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ static int wm5110_sysclk_ev(struct snd_
  ++                        +                                     	case SND_SOC_DAPM_POST_PMU:
  ++                        +                                     		if (patch)
  ++                        +                                     			for (i = 0; i < patch_size; i++)
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  				regmap_write_async(regmap, patch[i].reg,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  						   patch[i].def);
  +                         +                                     		break;
  +                         +                                     
  +                         +                                     	default:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -155,25 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -76,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 -117,6 +155,25 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ SOC_SINGLE_RANGE_TLV("IN3L Volume", ARI
  ++                                                              SOC_SINGLE_RANGE_TLV("IN3R Volume", ARIZONA_IN3R_CONTROL,
  ++                                                              		     ARIZONA_IN3R_PGA_VOL_SHIFT, 0x40, 0x5f, 0, ana_tlv),
  ++                                                              
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SOC_ENUM("IN HPF Cutoff Frequency", arizona_in_hpf_cut_enum),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SOC_SINGLE("IN1L HPF Switch", ARIZONA_IN1L_CONTROL,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	   ARIZONA_IN1L_HPF_SHIFT, 1, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SOC_SINGLE("IN1R HPF Switch", ARIZONA_IN1R_CONTROL,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	   ARIZONA_IN1R_HPF_SHIFT, 1, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SOC_SINGLE("IN2L HPF Switch", ARIZONA_IN2L_CONTROL,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	   ARIZONA_IN2L_HPF_SHIFT, 1, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SOC_SINGLE("IN2R HPF Switch", ARIZONA_IN2R_CONTROL,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	   ARIZONA_IN2R_HPF_SHIFT, 1, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SOC_SINGLE("IN3L HPF Switch", ARIZONA_IN3L_CONTROL,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	   ARIZONA_IN3L_HPF_SHIFT, 1, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SOC_SINGLE("IN3R HPF Switch", ARIZONA_IN3R_CONTROL,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	   ARIZONA_IN3R_HPF_SHIFT, 1, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SOC_SINGLE("IN4L HPF Switch", ARIZONA_IN4L_CONTROL,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	   ARIZONA_IN4L_HPF_SHIFT, 1, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SOC_SINGLE("IN4R HPF Switch", ARIZONA_IN4R_CONTROL,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	   ARIZONA_IN4R_HPF_SHIFT, 1, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
  +                                                               SOC_SINGLE_TLV("IN1L Digital Volume", ARIZONA_ADC_DIGITAL_VOLUME_1L,
  +                                                               	       ARIZONA_IN1L_DIG_VOL_SHIFT, 0xbf, 0, digital_tlv),
  +                                                               SOC_SINGLE_TLV("IN1R Digital Volume", ARIZONA_ADC_DIGITAL_VOLUME_1R,
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -277,14 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -179,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 -220,6 +277,14 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ SOC_ENUM("LHPF2 Mode", arizona_lhpf2_mo
  ++                                                              SOC_ENUM("LHPF3 Mode", arizona_lhpf3_mode),
  ++                                                              SOC_ENUM("LHPF4 Mode", arizona_lhpf4_mode),
  ++                                                              
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SOC_VALUE_ENUM("ISRC1 FSL", arizona_isrc_fsl[0]),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SOC_VALUE_ENUM("ISRC2 FSL", arizona_isrc_fsl[1]),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SOC_VALUE_ENUM("ISRC3 FSL", arizona_isrc_fsl[2]),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SOC_VALUE_ENUM("ISRC1 FSH", arizona_isrc_fsh[0]),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SOC_VALUE_ENUM("ISRC2 FSH", arizona_isrc_fsh[1]),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SOC_VALUE_ENUM("ISRC3 FSH", arizona_isrc_fsh[2]),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SOC_VALUE_ENUM("ASRC RATE 1", arizona_asrc_rate1),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
  +                                                               ARIZONA_MIXER_CONTROLS("DSP1L", ARIZONA_DSP1LMIX_INPUT_1_SOURCE),
  +                                                               ARIZONA_MIXER_CONTROLS("DSP1R", ARIZONA_DSP1RMIX_INPUT_1_SOURCE),
  +                                                               ARIZONA_MIXER_CONTROLS("DSP2L", ARIZONA_DSP2LMIX_INPUT_1_SOURCE),
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -285,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -375,13 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -269,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 -310,6 +350,13 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ SOC_DOUBLE("SPKDAT1 Switch", ARIZONA_PD
  ++                                                              SOC_DOUBLE("SPKDAT2 Switch", ARIZONA_PDM_SPK2_CTRL_1, ARIZONA_SPK2L_MUTE_SHIFT,
  ++                                                              	   ARIZONA_SPK2R_MUTE_SHIFT, 1, 1),
  ++                                                              
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SOC_DOUBLE("HPOUT1 DRE Switch", ARIZONA_DRE_ENABLE,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	   ARIZONA_DRE1L_ENA_SHIFT, ARIZONA_DRE1R_ENA_SHIFT, 1, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SOC_DOUBLE("HPOUT2 DRE Switch", ARIZONA_DRE_ENABLE,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	   ARIZONA_DRE2L_ENA_SHIFT, ARIZONA_DRE2R_ENA_SHIFT, 1, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SOC_DOUBLE("HPOUT3 DRE Switch", ARIZONA_DRE_ENABLE,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	   ARIZONA_DRE3L_ENA_SHIFT, ARIZONA_DRE3R_ENA_SHIFT, 1, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
  +                                                               SOC_ENUM("Output Ramp Up", arizona_out_vi_ramp),
  +                                                               SOC_ENUM("Output Ramp Down", arizona_out_vd_ramp),
  +                                                               
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -318,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -415,10 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -302,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 -343,6 +390,10 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ARIZONA_MIXER_CONTROLS("AIF1TX8", ARIZO
  ++                                                              
  ++                                                              ARIZONA_MIXER_CONTROLS("AIF2TX1", ARIZONA_AIF2TX1MIX_INPUT_1_SOURCE),
  ++                                                              ARIZONA_MIXER_CONTROLS("AIF2TX2", ARIZONA_AIF2TX2MIX_INPUT_1_SOURCE),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MIXER_CONTROLS("AIF2TX3", ARIZONA_AIF2TX3MIX_INPUT_1_SOURCE),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MIXER_CONTROLS("AIF2TX4", ARIZONA_AIF2TX4MIX_INPUT_1_SOURCE),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MIXER_CONTROLS("AIF2TX5", ARIZONA_AIF2TX5MIX_INPUT_1_SOURCE),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MIXER_CONTROLS("AIF2TX6", ARIZONA_AIF2TX6MIX_INPUT_1_SOURCE),
  +                                                               
  +                                                               ARIZONA_MIXER_CONTROLS("AIF3TX1", ARIZONA_AIF3TX1MIX_INPUT_1_SOURCE),
  +                                                               ARIZONA_MIXER_CONTROLS("AIF3TX2", ARIZONA_AIF3TX2MIX_INPUT_1_SOURCE),
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -347,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -448,22 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -331,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 -372,6 +423,22 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ARIZONA_MIXER_ENUMS(LHPF2, ARIZONA_HPLP
  ++                                                              ARIZONA_MIXER_ENUMS(LHPF3, ARIZONA_HPLP3MIX_INPUT_1_SOURCE);
  ++                                                              ARIZONA_MIXER_ENUMS(LHPF4, ARIZONA_HPLP4MIX_INPUT_1_SOURCE);
  ++                                                              
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MIXER_ENUMS(DSP1L, ARIZONA_DSP1LMIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MIXER_ENUMS(DSP1R, ARIZONA_DSP1RMIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_DSP_AUX_ENUMS(DSP1, ARIZONA_DSP1AUX1MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MIXER_ENUMS(DSP2L, ARIZONA_DSP2LMIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MIXER_ENUMS(DSP2R, ARIZONA_DSP2RMIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_DSP_AUX_ENUMS(DSP2, ARIZONA_DSP2AUX1MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MIXER_ENUMS(DSP3L, ARIZONA_DSP3LMIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MIXER_ENUMS(DSP3R, ARIZONA_DSP3RMIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_DSP_AUX_ENUMS(DSP3, ARIZONA_DSP3AUX1MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MIXER_ENUMS(DSP4L, ARIZONA_DSP4LMIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MIXER_ENUMS(DSP4R, ARIZONA_DSP4RMIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_DSP_AUX_ENUMS(DSP4, ARIZONA_DSP4AUX1MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
  +                                                               ARIZONA_MIXER_ENUMS(Mic, ARIZONA_MICMIX_INPUT_1_SOURCE);
  +                                                               ARIZONA_MIXER_ENUMS(Noise, ARIZONA_NOISEMIX_INPUT_1_SOURCE);
  +                                                               
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -377,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -494,10 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -361,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 -402,6 +469,10 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ARIZONA_MIXER_ENUMS(AIF1TX8, ARIZONA_AI
  ++                                                              
  ++                                                              ARIZONA_MIXER_ENUMS(AIF2TX1, ARIZONA_AIF2TX1MIX_INPUT_1_SOURCE);
  ++                                                              ARIZONA_MIXER_ENUMS(AIF2TX2, ARIZONA_AIF2TX2MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MIXER_ENUMS(AIF2TX3, ARIZONA_AIF2TX3MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MIXER_ENUMS(AIF2TX4, ARIZONA_AIF2TX4MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MIXER_ENUMS(AIF2TX5, ARIZONA_AIF2TX5MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MIXER_ENUMS(AIF2TX6, ARIZONA_AIF2TX6MIX_INPUT_1_SOURCE);
  +                                                               
  +                                                               ARIZONA_MIXER_ENUMS(AIF3TX1, ARIZONA_AIF3TX1MIX_INPUT_1_SOURCE);
  +                                                               ARIZONA_MIXER_ENUMS(AIF3TX2, ARIZONA_AIF3TX2MIX_INPUT_1_SOURCE);
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -395,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -516,36 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -379,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 -420,6 +491,36 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ARIZONA_MUX_ENUMS(ASRC1R, ARIZONA_ASRC1
  ++                                                              ARIZONA_MUX_ENUMS(ASRC2L, ARIZONA_ASRC2LMIX_INPUT_1_SOURCE);
  ++                                                              ARIZONA_MUX_ENUMS(ASRC2R, ARIZONA_ASRC2RMIX_INPUT_1_SOURCE);
  ++                                                              
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC1INT1, ARIZONA_ISRC1INT1MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC1INT2, ARIZONA_ISRC1INT2MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC1INT3, ARIZONA_ISRC1INT3MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC1INT4, ARIZONA_ISRC1INT4MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC1DEC1, ARIZONA_ISRC1DEC1MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC1DEC2, ARIZONA_ISRC1DEC2MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC1DEC3, ARIZONA_ISRC1DEC3MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC1DEC4, ARIZONA_ISRC1DEC4MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC2INT1, ARIZONA_ISRC2INT1MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC2INT2, ARIZONA_ISRC2INT2MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC2INT3, ARIZONA_ISRC2INT3MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC2INT4, ARIZONA_ISRC2INT4MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC2DEC1, ARIZONA_ISRC2DEC1MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC2DEC2, ARIZONA_ISRC2DEC2MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC2DEC3, ARIZONA_ISRC2DEC3MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC2DEC4, ARIZONA_ISRC2DEC4MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC3INT1, ARIZONA_ISRC3INT1MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC3INT2, ARIZONA_ISRC3INT2MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC3INT3, ARIZONA_ISRC3INT3MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC3INT4, ARIZONA_ISRC3INT4MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC3DEC1, ARIZONA_ISRC3DEC1MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC3DEC2, ARIZONA_ISRC3DEC2MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC3DEC3, ARIZONA_ISRC3DEC3MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_ENUMS(ISRC3DEC4, ARIZONA_ISRC3DEC4MIX_INPUT_1_SOURCE);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
  +                                                               static const char *wm5110_aec_loopback_texts[] = {
  +                                                               	"HPOUT1L", "HPOUT1R", "HPOUT2L", "HPOUT2R", "HPOUT3L", "HPOUT3R",
  +                                                               	"SPKOUTL", "SPKOUTR", "SPKDAT1L", "SPKDAT1R", "SPKDAT2L", "SPKDAT2R",
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -535,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -686,65 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -519,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 -560,6 +661,65 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ SND_SOC_DAPM_PGA("ASRC2L", ARIZONA_ASRC
  ++                                                              SND_SOC_DAPM_PGA("ASRC2R", ARIZONA_ASRC_ENABLE, ARIZONA_ASRC2R_ENA_SHIFT, 0,
  ++                                                              		 NULL, 0),
  ++                                                              
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  WM_ADSP2("DSP1", 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  WM_ADSP2("DSP2", 1),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  WM_ADSP2("DSP3", 2),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  WM_ADSP2("DSP4", 3),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC1INT1", ARIZONA_ISRC_1_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC1_INT0_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC1INT2", ARIZONA_ISRC_1_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC1_INT1_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC1INT3", ARIZONA_ISRC_1_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC1_INT2_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC1INT4", ARIZONA_ISRC_1_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC1_INT3_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC1DEC1", ARIZONA_ISRC_1_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC1_DEC0_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC1DEC2", ARIZONA_ISRC_1_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC1_DEC1_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC1DEC3", ARIZONA_ISRC_1_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC1_DEC2_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC1DEC4", ARIZONA_ISRC_1_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC1_DEC3_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC2INT1", ARIZONA_ISRC_2_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC2_INT0_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC2INT2", ARIZONA_ISRC_2_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC2_INT1_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC2INT3", ARIZONA_ISRC_2_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC2_INT2_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC2INT4", ARIZONA_ISRC_2_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC2_INT3_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC2DEC1", ARIZONA_ISRC_2_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC2_DEC0_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC2DEC2", ARIZONA_ISRC_2_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC2_DEC1_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC2DEC3", ARIZONA_ISRC_2_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC2_DEC2_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC2DEC4", ARIZONA_ISRC_2_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC2_DEC3_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC3INT1", ARIZONA_ISRC_3_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC3_INT0_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC3INT2", ARIZONA_ISRC_3_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC3_INT1_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC3INT3", ARIZONA_ISRC_3_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC3_INT2_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC3INT4", ARIZONA_ISRC_3_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC3_INT3_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC3DEC1", ARIZONA_ISRC_3_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC3_DEC0_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC3DEC2", ARIZONA_ISRC_3_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC3_DEC1_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC3DEC3", ARIZONA_ISRC_3_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC3_DEC2_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_PGA("ISRC3DEC4", ARIZONA_ISRC_3_CTRL_3,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		 ARIZONA_ISRC3_DEC3_ENA_SHIFT, 0, NULL, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
  +                                                               SND_SOC_DAPM_VALUE_MUX("AEC Loopback", ARIZONA_DAC_AEC_CONTROL_1,
  +                                                               		       ARIZONA_AEC_LOOPBACK_ENA_SHIFT, 0,
  +                                                               		       &wm5110_aec_loopback_mux),
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -577,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -787,27 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -561,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 -602,11 +762,27 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ SND_SOC_DAPM_AIF_OUT("AIF2TX1", NULL, 0
  ++                                                              		     ARIZONA_AIF2_TX_ENABLES, ARIZONA_AIF2TX1_ENA_SHIFT, 0),
  ++                                                              SND_SOC_DAPM_AIF_OUT("AIF2TX2", NULL, 0,
  ++                                                              		     ARIZONA_AIF2_TX_ENABLES, ARIZONA_AIF2TX2_ENA_SHIFT, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_AIF_OUT("AIF2TX3", NULL, 0,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		     ARIZONA_AIF2_TX_ENABLES, ARIZONA_AIF2TX3_ENA_SHIFT, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_AIF_OUT("AIF2TX4", NULL, 0,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		     ARIZONA_AIF2_TX_ENABLES, ARIZONA_AIF2TX4_ENA_SHIFT, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_AIF_OUT("AIF2TX5", NULL, 0,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		     ARIZONA_AIF2_TX_ENABLES, ARIZONA_AIF2TX5_ENA_SHIFT, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_AIF_OUT("AIF2TX6", NULL, 0,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		     ARIZONA_AIF2_TX_ENABLES, ARIZONA_AIF2TX6_ENA_SHIFT, 0),
  +                                                               
  +                                                               SND_SOC_DAPM_AIF_IN("AIF2RX1", NULL, 0,
  +                                                               		    ARIZONA_AIF2_RX_ENABLES, ARIZONA_AIF2RX1_ENA_SHIFT, 0),
  ++                                                              SND_SOC_DAPM_AIF_IN("AIF2RX2", NULL, 0,
  ++                                                              		    ARIZONA_AIF2_RX_ENABLES, ARIZONA_AIF2RX2_ENA_SHIFT, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_AIF_IN("AIF2RX3", NULL, 0,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		    ARIZONA_AIF2_RX_ENABLES, ARIZONA_AIF2RX3_ENA_SHIFT, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_AIF_IN("AIF2RX4", NULL, 0,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		    ARIZONA_AIF2_RX_ENABLES, ARIZONA_AIF2RX4_ENA_SHIFT, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_AIF_IN("AIF2RX5", NULL, 0,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		    ARIZONA_AIF2_RX_ENABLES, ARIZONA_AIF2RX5_ENA_SHIFT, 0),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  SND_SOC_DAPM_AIF_IN("AIF2RX6", NULL, 0,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		    ARIZONA_AIF2_RX_ENABLES, ARIZONA_AIF2RX6_ENA_SHIFT, 0),
  +                                                               
  +                                                               SND_SOC_DAPM_AIF_IN("SLIMRX1", NULL, 0,
  +                                                               		    ARIZONA_SLIMBUS_RX_CHANNEL_ENABLE,
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -719,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -945,10 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -703,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 -744,6 +920,10 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ARIZONA_MIXER_WIDGETS(AIF1TX8, "AIF1TX8
  ++                                                              
  ++                                                              ARIZONA_MIXER_WIDGETS(AIF2TX1, "AIF2TX1"),
  ++                                                              ARIZONA_MIXER_WIDGETS(AIF2TX2, "AIF2TX2"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MIXER_WIDGETS(AIF2TX3, "AIF2TX3"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MIXER_WIDGETS(AIF2TX4, "AIF2TX4"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MIXER_WIDGETS(AIF2TX5, "AIF2TX5"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MIXER_WIDGETS(AIF2TX6, "AIF2TX6"),
  +                                                               
  +                                                               ARIZONA_MIXER_WIDGETS(AIF3TX1, "AIF3TX1"),
  +                                                               ARIZONA_MIXER_WIDGETS(AIF3TX2, "AIF3TX2"),
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -737,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -967,41 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -721,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 -762,6 +942,41 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ARIZONA_MUX_WIDGETS(ASRC1R, "ASRC1R")
  ++                                                              ARIZONA_MUX_WIDGETS(ASRC2L, "ASRC2L"),
  ++                                                              ARIZONA_MUX_WIDGETS(ASRC2R, "ASRC2R"),
  ++                                                              
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_DSP_WIDGETS(DSP1, "DSP1"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_DSP_WIDGETS(DSP2, "DSP2"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_DSP_WIDGETS(DSP3, "DSP3"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_DSP_WIDGETS(DSP4, "DSP4"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC1DEC1, "ISRC1DEC1"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC1DEC2, "ISRC1DEC2"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC1DEC3, "ISRC1DEC3"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC1DEC4, "ISRC1DEC4"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC1INT1, "ISRC1INT1"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC1INT2, "ISRC1INT2"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC1INT3, "ISRC1INT3"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC1INT4, "ISRC1INT4"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC2DEC1, "ISRC2DEC1"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC2DEC2, "ISRC2DEC2"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC2DEC3, "ISRC2DEC3"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC2DEC4, "ISRC2DEC4"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC2INT1, "ISRC2INT1"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC2INT2, "ISRC2INT2"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC2INT3, "ISRC2INT3"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC2INT4, "ISRC2INT4"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC3DEC1, "ISRC3DEC1"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC3DEC2, "ISRC3DEC2"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC3DEC3, "ISRC3DEC3"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC3DEC4, "ISRC3DEC4"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC3INT1, "ISRC3INT1"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC3INT2, "ISRC3INT2"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC3INT3, "ISRC3INT3"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ARIZONA_MUX_WIDGETS(ISRC3INT4, "ISRC3INT4"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
  +                                                               SND_SOC_DAPM_OUTPUT("HPOUT1L"),
  +                                                               SND_SOC_DAPM_OUTPUT("HPOUT1R"),
  +                                                               SND_SOC_DAPM_OUTPUT("HPOUT2L"),
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -780,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -1045,10 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -764,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 -805,6 +1020,10 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ SND_SOC_DAPM_OUTPUT("MICSUPP")
  ++                                                              	{ name, "AIF1RX8", "AIF1RX8" }, \
  ++                                                              	{ name, "AIF2RX1", "AIF2RX1" }, \
  ++                                                              	{ name, "AIF2RX2", "AIF2RX2" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "AIF2RX3", "AIF2RX3" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "AIF2RX4", "AIF2RX4" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "AIF2RX5", "AIF2RX5" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "AIF2RX6", "AIF2RX6" }, \
  +                                                               	{ name, "AIF3RX1", "AIF3RX1" }, \
  +                                                               	{ name, "AIF3RX2", "AIF3RX2" }, \
  +                                                               	{ name, "SLIMRX1", "SLIMRX1" }, \
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -805,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -1074,55 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -789,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 -830,7 +1049,55 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  ++                                                              	{ name, "ASRC1L", "ASRC1L" }, \
  ++                                                              	{ name, "ASRC1R", "ASRC1R" }, \
  ++                                                              	{ name, "ASRC2L", "ASRC2L" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ASRC2R", "ASRC2R" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC1DEC1", "ISRC1DEC1" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC1DEC2", "ISRC1DEC2" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC1DEC3", "ISRC1DEC3" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC1DEC4", "ISRC1DEC4" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC1INT1", "ISRC1INT1" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC1INT2", "ISRC1INT2" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC1INT3", "ISRC1INT3" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC1INT4", "ISRC1INT4" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC2DEC1", "ISRC2DEC1" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC2DEC2", "ISRC2DEC2" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC2DEC3", "ISRC2DEC3" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC2DEC4", "ISRC2DEC4" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC2INT1", "ISRC2INT1" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC2INT2", "ISRC2INT2" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC2INT3", "ISRC2INT3" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC2INT4", "ISRC2INT4" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC3DEC1", "ISRC3DEC1" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC3DEC2", "ISRC3DEC2" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC3DEC3", "ISRC3DEC3" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC3DEC4", "ISRC3DEC4" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC3INT1", "ISRC3INT1" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC3INT2", "ISRC3INT2" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC3INT3", "ISRC3INT3" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "ISRC3INT4", "ISRC3INT4" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP1.1", "DSP1" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP1.2", "DSP1" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP1.3", "DSP1" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP1.4", "DSP1" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP1.5", "DSP1" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP1.6", "DSP1" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP2.1", "DSP2" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP2.2", "DSP2" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP2.3", "DSP2" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP2.4", "DSP2" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP2.5", "DSP2" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP2.6", "DSP2" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP3.1", "DSP3" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP3.2", "DSP3" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP3.3", "DSP3" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP3.4", "DSP3" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP3.5", "DSP3" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP3.6", "DSP3" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP4.1", "DSP4" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP4.2", "DSP4" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP4.3", "DSP4" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP4.4", "DSP4" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP4.5", "DSP4" }, \
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ name, "DSP4.6", "DSP4" }
  +                                                               
  +                                                               static const struct snd_soc_dapm_route wm5110_dapm_routes[] = {
  +                                                               	{ "AIF2 Capture", NULL, "DBVDD2" },
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -877,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -1194,17 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -861,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 -902,9 +1169,17 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  ++                                                              
  ++                                                              	{ "AIF2 Capture", NULL, "AIF2TX1" },
  ++                                                              	{ "AIF2 Capture", NULL, "AIF2TX2" },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ "AIF2 Capture", NULL, "AIF2TX3" },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ "AIF2 Capture", NULL, "AIF2TX4" },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ "AIF2 Capture", NULL, "AIF2TX5" },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ "AIF2 Capture", NULL, "AIF2TX6" },
  +                                                               
  +                                                               	{ "AIF2RX1", NULL, "AIF2 Playback" },
  +                                                               	{ "AIF2RX2", NULL, "AIF2 Playback" },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ "AIF2RX3", NULL, "AIF2 Playback" },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ "AIF2RX4", NULL, "AIF2 Playback" },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ "AIF2RX5", NULL, "AIF2 Playback" },
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ "AIF2RX6", NULL, "AIF2 Playback" },
  +                                                               
  +                                                               	{ "AIF3 Capture", NULL, "AIF3TX1" },
  +                                                               	{ "AIF3 Capture", NULL, "AIF3TX2" },
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -963,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -1288,10 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -947,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 -988,6 +1263,10 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  ++                                                              
  ++                                                              	ARIZONA_MIXER_ROUTES("AIF2TX1", "AIF2TX1"),
  ++                                                              	ARIZONA_MIXER_ROUTES("AIF2TX2", "AIF2TX2"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MIXER_ROUTES("AIF2TX3", "AIF2TX3"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MIXER_ROUTES("AIF2TX4", "AIF2TX4"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MIXER_ROUTES("AIF2TX5", "AIF2TX5"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MIXER_ROUTES("AIF2TX6", "AIF2TX6"),
  +                                                               
  +                                                               	ARIZONA_MIXER_ROUTES("AIF3TX1", "AIF3TX1"),
  +                                                               	ARIZONA_MIXER_ROUTES("AIF3TX2", "AIF3TX2"),
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -999,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1328,41 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -983,4 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 -1024,6 +1303,41 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  ++                                                              	ARIZONA_MUX_ROUTES("ASRC2L", "ASRC2L"),
  ++                                                              	ARIZONA_MUX_ROUTES("ASRC2R", "ASRC2R"),
  ++                                                              
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_DSP_ROUTES("DSP1"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_DSP_ROUTES("DSP2"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_DSP_ROUTES("DSP3"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_DSP_ROUTES("DSP4"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC1INT1", "ISRC1INT1"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC1INT2", "ISRC1INT2"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC1INT3", "ISRC1INT3"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC1INT4", "ISRC1INT4"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC1DEC1", "ISRC1DEC1"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC1DEC2", "ISRC1DEC2"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC1DEC3", "ISRC1DEC3"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC1DEC4", "ISRC1DEC4"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC2INT1", "ISRC2INT1"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC2INT2", "ISRC2INT2"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC2INT3", "ISRC2INT3"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC2INT4", "ISRC2INT4"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC2DEC1", "ISRC2DEC1"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC2DEC2", "ISRC2DEC2"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC2DEC3", "ISRC2DEC3"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC2DEC4", "ISRC2DEC4"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC3INT1", "ISRC3INT1"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC3INT2", "ISRC3INT2"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC3INT3", "ISRC3INT3"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC3INT4", "ISRC3INT4"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC3DEC1", "ISRC3DEC1"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC3DEC2", "ISRC3DEC2"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC3DEC3", "ISRC3DEC3"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ARIZONA_MUX_ROUTES("ISRC3DEC4", "ISRC3DEC4"),
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
  +                         +                                     	{ "AEC Loopback", "HPOUT1L", "OUT1L" },
  +                         +                                     	{ "AEC Loopback", "HPOUT1R", "OUT1R" },
  +                                                               	{ "HPOUT1L", NULL, "OUT1L" },
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -1012,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1376,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -992,4 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 -1037,7 +1351,7 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  ++                        +                                     	{ "AEC Loopback", "HPOUT3L", "OUT3L" },
  ++                        +                                     	{ "AEC Loopback", "HPOUT3R", "OUT3R" },
  ++                                                              	{ "HPOUT3L", NULL, "OUT3L" },
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	{ "HPOUT3R", NULL, "OUT3R" },
  +                                                               
  +                         +                                     	{ "AEC Loopback", "SPKOUTL", "OUT4L" },
  +                                                               	{ "SPKOUTLN", NULL, "OUT4L" },
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -1095,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1459,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1067,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 -1120,14 +1434,14 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ static struct snd_soc_dai_driver wm5110
  ++                                                              		.playback = {
  ++                                                              			.stream_name = "AIF2 Playback",
  ++                                                              			.channels_min = 1,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  			.channels_max = 6,
  +                                                               			.rates = WM5110_RATES,
  +                                                               			.formats = WM5110_FORMATS,
  +                                                               		},
  ++                                                              		.capture = {
  ++                                                              			 .stream_name = "AIF2 Capture",
  ++                                                              			 .channels_min = 1,
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  			 .channels_max = 6,
  +                                                               			 .rates = WM5110_RATES,
  +                                                               			 .formats = WM5110_FORMATS,
  +                                                               		 },
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -1204,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1568,10 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1176,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 -1229,6 +1543,10 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ static int wm5110_codec_probe(struct sn
  ++                                                              	arizona_init_spk(codec);
  ++                                                              	arizona_init_gpio(codec);
  ++                                                              
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	ret = snd_soc_add_codec_controls(codec, wm_adsp2_fw_controls, 8);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	if (ret != 0)
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		return ret;
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
  +                                                               	snd_soc_dapm_disable_pin(&codec->dapm, "HAPTICS");
  +                                                               
  +                                                               	priv->core.arizona->dapm = &codec->dapm;
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -1258,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1626,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1230,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 -1283,7 +1601,7 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ static int wm5110_probe(struct platform
  ++                                                              {
  ++                                                              	struct arizona *arizona = dev_get_drvdata(pdev->dev.parent);
  ++                                                              	struct wm5110_priv *wm5110;
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	int i, ret;
  +                                                               
  +                                                               	wm5110 = devm_kzalloc(&pdev->dev, sizeof(struct wm5110_priv),
  +                                                               			      GFP_KERNEL);
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -1269,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1637,24 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1241,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 -1294,6 +1612,24 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  ++                                                              	wm5110->core.arizona = arizona;
  ++                                                              	wm5110->core.num_inputs = 8;
  ++                                                              
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	for (i = 0; i < WM5110_NUM_ADSP; i++) {
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		wm5110->core.adsp[i].part = "wm5110";
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		wm5110->core.adsp[i].num = i + 1;
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		wm5110->core.adsp[i].type = WMFW_ADSP2;
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		wm5110->core.adsp[i].dev = arizona->dev;
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		wm5110->core.adsp[i].regmap = arizona->regmap;
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		wm5110->core.adsp[i].base = ARIZONA_DSP1_CONTROL_1
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  			+ (0x100 * i);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		wm5110->core.adsp[i].mem = wm5110_dsp_regions[i];
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		wm5110->core.adsp[i].num_mems
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  			= ARRAY_SIZE(wm5110_dsp1_regions);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		ret = wm_adsp2_init(&wm5110->core.adsp[i], false);
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  		if (ret != 0)
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  			return ret;
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  	}
+++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
  +                                                               	for (i = 0; i < ARRAY_SIZE(wm5110->fll); i++)
  +                                                               		wm5110->fll[i].vco_mult = 3;
  +                                                               
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -1279,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1665,12 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1304,6 -1
Download .txt
gitextract_xay1pb2d/

├── .cargo/
│   └── audit.toml
├── .gitattributes
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug.md
│   │   └── feature.md
│   ├── dependabot.yml
│   └── workflows/
│       ├── audit.yml
│       ├── cd.yml
│       ├── ci.yml
│       └── manual.yml
├── .gitignore
├── ARCHITECTURE.md
├── CONTRIBUTING.md
├── Cargo.toml
├── LICENSE
├── Makefile
├── README.md
├── etc/
│   ├── bin/
│   │   ├── ansifilter
│   │   ├── check-show-config-options
│   │   ├── diagnostics
│   │   └── list-options
│   ├── ci/
│   │   ├── .gitattributes
│   │   └── before_deploy.sh
│   ├── completion/
│   │   ├── completion.bash
│   │   ├── completion.fish
│   │   └── completion.zsh
│   ├── docker/
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── delta-ubuntu
│   │   └── ubuntu.Dockerfile
│   ├── examples/
│   │   ├── 119-within-line-edits
│   │   ├── 121-unrecognized-content-before-diff-1
│   │   ├── 121-unrecognized-content-before-diff-2
│   │   ├── 125-merge-conflict-1.diff
│   │   ├── 125-merge-conflict-2.diff
│   │   ├── 127-paths-with-spaces--added
│   │   ├── 127-paths-with-spaces--renamed
│   │   ├── 128-empty-file
│   │   ├── 139-file-with-space-delimited-dash.diff
│   │   ├── 140-within-line-edits
│   │   ├── 140-within-line-edits-counter-example
│   │   ├── 189-merge-conflict.1.diff
│   │   ├── 189-merge-conflict.2.diff
│   │   ├── 189-merge-conflict.3.diff
│   │   ├── 189-merge-conflict.4.diff
│   │   ├── 189-merge-conflict.5.diff
│   │   ├── 205-highlight-bug-1.diff
│   │   ├── 205-highlight-bug-2.diff
│   │   ├── 205-highlight-bug.diff
│   │   ├── 308-side-by-side-tabs.diff
│   │   ├── 345-keep-plus-minus-markers.diff
│   │   ├── 345-keep-plus-minus-markers.gitconfig
│   │   ├── 388-whitespace_error_keep_plus_minus_marker
│   │   ├── 55-unicode-width.diff
│   │   ├── 56-unified-directory-diff
│   │   ├── 60-submodule
│   │   ├── 662-submodules
│   │   ├── 72-color-moved-2.diff
│   │   ├── 72-color-moved-3.diff
│   │   ├── 72-color-moved-4.diff
│   │   ├── 72-color-moved.diff
│   │   ├── 802-color-moved.diff
│   │   ├── 813-cthulhu.diff
│   │   ├── 822-hunk-header-within-merge-conflict.diff
│   │   ├── 93-binary
│   │   └── styles.py
│   ├── performance/
│   │   ├── README.md
│   │   ├── all-benchmarks.json
│   │   ├── chronologer.yaml
│   │   ├── data/
│   │   │   ├── hyperfine-output.json
│   │   │   └── hyperfine-processed-output.json
│   │   └── index.html
│   └── release.Makefile
├── manual/
│   ├── .gitignore
│   ├── Makefile
│   ├── book.toml
│   └── src/
│       ├── SUMMARY.md
│       ├── build-delta-from-source.md
│       ├── choosing-colors-styles.md
│       ├── color-moved-support.md
│       ├── comparisons-with-other-tools.md
│       ├── configuration.md
│       ├── custom-themes.md
│       ├── delta-configs-used-in-screenshots.md
│       ├── diff-highlight-and-diff-so-fancy-emulation.md
│       ├── environment-variables.md
│       ├── features-named-groups-of-settings.md
│       ├── features.md
│       ├── full---help-output.md
│       ├── get-started.md
│       ├── git-blame.md
│       ├── grep.md
│       ├── how-delta-works.md
│       ├── hyperlinks.md
│       ├── installation.md
│       ├── introduction.md
│       ├── line-numbers.md
│       ├── merge-conflicts.md
│       ├── navigation-keybindings-for-large-diffs.md
│       ├── related-projects.md
│       ├── side-by-side-view.md
│       ├── supported-languages-and-themes.md
│       ├── tips-and-tricks/
│       │   ├── 24-bit-color-truecolor.md
│       │   ├── export-to-html.md
│       │   ├── mouse-scrolling.md
│       │   ├── shell-completion.md
│       │   ├── tips-and-tricks.md
│       │   ├── toggling-delta-features.md
│       │   ├── using-delta-on-windows.md
│       │   ├── using-delta-with-gnu-screen.md
│       │   ├── using-delta-with-magit.md
│       │   ├── using-delta-with-tmux.md
│       │   └── using-delta-with-vscode.md
│       ├── tips-and-tricks.md
│       └── usage.md
├── src/
│   ├── align.rs
│   ├── ansi/
│   │   ├── console_tests.rs
│   │   ├── iterator.rs
│   │   └── mod.rs
│   ├── cli.rs
│   ├── color.rs
│   ├── colors.rs
│   ├── config.rs
│   ├── delta.rs
│   ├── edits.rs
│   ├── env.rs
│   ├── features/
│   │   ├── color_only.rs
│   │   ├── diff_highlight.rs
│   │   ├── diff_so_fancy.rs
│   │   ├── hyperlinks.rs
│   │   ├── line_numbers.rs
│   │   ├── mod.rs
│   │   ├── navigate.rs
│   │   ├── raw.rs
│   │   └── side_by_side.rs
│   ├── format.rs
│   ├── git_config/
│   │   ├── mod.rs
│   │   └── remote.rs
│   ├── handlers/
│   │   ├── blame.rs
│   │   ├── commit_meta.rs
│   │   ├── diff_header.rs
│   │   ├── diff_header_diff.rs
│   │   ├── diff_header_misc.rs
│   │   ├── diff_stat.rs
│   │   ├── draw.rs
│   │   ├── git_show_file.rs
│   │   ├── grep.rs
│   │   ├── hunk.rs
│   │   ├── hunk_header.rs
│   │   ├── merge_conflict.rs
│   │   ├── mod.rs
│   │   ├── ripgrep_json.rs
│   │   └── submodule.rs
│   ├── main.rs
│   ├── minusplus.rs
│   ├── options/
│   │   ├── get.rs
│   │   ├── mod.rs
│   │   ├── option_value.rs
│   │   ├── set.rs
│   │   └── theme.rs
│   ├── paint.rs
│   ├── parse_style.rs
│   ├── parse_styles.rs
│   ├── style.rs
│   ├── subcommands/
│   │   ├── diff.rs
│   │   ├── external.rs
│   │   ├── generate_completion.rs
│   │   ├── list_syntax_themes.rs
│   │   ├── mod.rs
│   │   ├── parse_ansi.rs
│   │   ├── sample_diff.rs
│   │   ├── show_colors.rs
│   │   ├── show_config.rs
│   │   ├── show_syntax_themes.rs
│   │   └── show_themes.rs
│   ├── tests/
│   │   ├── ansi_test_utils.rs
│   │   ├── integration_test_utils.rs
│   │   ├── mod.rs
│   │   ├── test_example_diffs.rs
│   │   └── test_utils.rs
│   ├── utils/
│   │   ├── bat/
│   │   │   ├── LICENSE
│   │   │   ├── assets.rs
│   │   │   ├── dirs.rs
│   │   │   ├── less.rs
│   │   │   ├── mod.rs
│   │   │   ├── output.rs
│   │   │   └── terminal.rs
│   │   ├── git.rs
│   │   ├── helpwrap.rs
│   │   ├── mod.rs
│   │   ├── path.rs
│   │   ├── process.rs
│   │   ├── regex_replacement.rs
│   │   ├── round_char_boundary.rs
│   │   ├── syntect.rs
│   │   ├── tabs.rs
│   │   └── workarounds.rs
│   └── wrapping.rs
├── tests/
│   ├── test_deprecated_options
│   ├── test_navigate_less_history_file
│   └── test_raw_output_matches_git_on_full_repo_history
└── themes.gitconfig
Download .txt
SYMBOL INDEX (1308 symbols across 79 files)

FILE: src/align.rs
  constant DELETION_COST (line 4) | const DELETION_COST: usize = 2;
  constant INSERTION_COST (line 5) | const INSERTION_COST: usize = 2;
  constant INITIAL_MISMATCH_PENALTY (line 7) | const INITIAL_MISMATCH_PENALTY: usize = 1;
  type Operation (line 10) | pub enum Operation {
  type Cell (line 21) | struct Cell {
  type Alignment (line 28) | pub struct Alignment<'a> {
  function new (line 37) | pub fn new(x: Vec<&'a str>, y: Vec<&'a str>) -> Self {
  function fill (line 55) | pub fn fill(&mut self) {
  function mismatch_cost (line 117) | fn mismatch_cost(&self, parent: usize, basic_cost: usize) -> usize {
  function operations (line 128) | pub fn operations(&self) -> Vec<Operation> {
  function coalesced_operations (line 141) | pub fn coalesced_operations(&self) -> Vec<(Operation, usize)> {
  function index (line 146) | fn index(&self, i: usize, j: usize) -> usize {
  function run_length_encode (line 151) | fn run_length_encode<T>(sequence: Vec<T>) -> Vec<(T, usize)>
  function test_run_length_encode (line 186) | fn test_run_length_encode() {
  function test_0 (line 197) | fn test_0() {
  function test_0_nonascii (line 209) | fn test_0_nonascii() {
  function test_1 (line 221) | fn test_1() {
  function test_2 (line 243) | fn test_2() {
  function test_3 (line 265) | fn test_3() {
  function test_4 (line 282) | fn test_4() {
  function test_5 (line 300) | fn test_5() {
  function test_6 (line 318) | fn test_6() {
  type TestCase (line 338) | struct TestCase<'a> {
  function run (line 347) | pub fn run(&self) {
  function assert_string_distance_parts (line 352) | fn assert_string_distance_parts(&self) {
  function assert_string_levenshtein_distance (line 358) | fn assert_string_levenshtein_distance(&self) {
  function string_distance_parts (line 370) | fn string_distance_parts(x: &str, y: &str) -> (usize, usize) {
  function string_levenshtein_distance (line 378) | fn string_levenshtein_distance(x: &str, y: &str) -> usize {
  function operations (line 386) | fn operations<'a>(x: &'a str, y: &'a str) -> Vec<Operation> {
  function distance_parts (line 395) | pub fn distance_parts(&self) -> (usize, usize) {
  function levenshtein_distance (line 407) | pub fn levenshtein_distance(&self) -> usize {
  function format_cell (line 412) | fn format_cell(&self, cell: &Cell) -> String {
  function print (line 423) | fn print(&self) {

FILE: src/ansi/console_tests.rs
  function test_text_width (line 25) | fn test_text_width() {
  function test_truncate_str (line 36) | fn test_truncate_str() {
  function test_truncate_str_no_ansi (line 71) | fn test_truncate_str_no_ansi() {

FILE: src/ansi/iterator.rs
  type AnsiElementIterator (line 6) | pub struct AnsiElementIterator<'a> {
  type Performer (line 28) | struct Performer {
    method csi_dispatch (line 124) | fn csi_dispatch(&mut self, params: &Params, intermediates: &[u8], igno...
    method print (line 146) | fn print(&mut self, c: char) {
    method execute (line 150) | fn execute(&mut self, byte: u8) {
    method hook (line 157) | fn hook(&mut self, _params: &Params, _intermediates: &[u8], _ignore: b...
    method put (line 159) | fn put(&mut self, _byte: u8) {}
    method unhook (line 161) | fn unhook(&mut self) {}
    method osc_dispatch (line 163) | fn osc_dispatch(&mut self, _params: &[&[u8]], _bell_terminated: bool) {
    method esc_dispatch (line 167) | fn esc_dispatch(&mut self, _intermediates: &[u8], _ignore: bool, _byte...
  type Element (line 38) | pub enum Element {
    method set_range (line 47) | fn set_range(&mut self, start: usize, end: usize) {
  function new (line 62) | pub fn new(s: &'a str) -> Self {
  function advance_vte (line 73) | fn advance_vte(&mut self, byte: u8) {
  type Item (line 83) | type Item = Element;
  method next (line 85) | fn next(&mut self) -> Option<Element> {
  function ansi_term_style_from_sgr_parameters (line 173) | fn ansi_term_style_from_sgr_parameters(params: &mut ParamsIter<'_>) -> a...
  function parse_sgr_color (line 267) | fn parse_sgr_color(params: &mut dyn Iterator<Item = u16>) -> Option<ansi...
  function test_iterator_parse_git_style_strings (line 287) | fn test_iterator_parse_git_style_strings() {
  function test_iterator_1 (line 354) | fn test_iterator_1() {
  function test_iterator_2 (line 378) | fn test_iterator_2() {
  function test_iterator_styled_non_ascii (line 402) | fn test_iterator_styled_non_ascii() {
  function test_iterator_erase_in_line (line 424) | fn test_iterator_erase_in_line() {
  function test_iterator_erase_in_line_without_n (line 439) | fn test_iterator_erase_in_line_without_n() {
  function test_iterator_osc_hyperlinks_styled_non_ascii (line 454) | fn test_iterator_osc_hyperlinks_styled_non_ascii() {

FILE: src/ansi/mod.rs
  constant ANSI_CSI_CLEAR_TO_EOL (line 13) | pub const ANSI_CSI_CLEAR_TO_EOL: &str = "\x1b[0K";
  constant ANSI_CSI_CLEAR_TO_BOL (line 14) | pub const ANSI_CSI_CLEAR_TO_BOL: &str = "\x1b[1K";
  constant ANSI_SGR_BOLD (line 15) | pub const ANSI_SGR_BOLD: &str = "\x1b[1m";
  constant ANSI_SGR_RESET (line 16) | pub const ANSI_SGR_RESET: &str = "\x1b[0m";
  constant ANSI_SGR_REVERSE (line 17) | pub const ANSI_SGR_REVERSE: &str = "\x1b[7m";
  constant ANSI_SGR_UNDERLINE (line 18) | pub const ANSI_SGR_UNDERLINE: &str = "\x1b[4m";
  function strip_ansi_codes (line 20) | pub fn strip_ansi_codes(s: &str) -> String {
  function measure_text_width (line 24) | pub fn measure_text_width(s: &str) -> usize {
  function truncate_str_impl (line 30) | fn truncate_str_impl<'a>(
  function truncate_str (line 95) | pub fn truncate_str<'a>(s: &'a str, display_width: usize, tail: &str) ->...
  function truncate_str_short (line 103) | pub fn truncate_str_short(s: &str, display_width: usize) -> Cow<'_, str> {
  function parse_style_sections (line 107) | pub fn parse_style_sections(s: &str) -> Vec<(ansi_term::Style, &str)> {
  function parse_first_style (line 121) | pub fn parse_first_style(s: &str) -> Option<ansi_term::Style> {
  function string_starts_with_ansi_style_sequence (line 128) | pub fn string_starts_with_ansi_style_sequence(s: &str) -> bool {
  function ansi_preserving_slice (line 138) | pub fn ansi_preserving_slice(s: &str, start: usize) -> String {
  function ansi_preserving_index (line 168) | pub fn ansi_preserving_index(s: &str, i: usize) -> Option<usize> {
  function ansi_strings_iterator (line 181) | fn ansi_strings_iterator(s: &str) -> impl Iterator<Item = (&str, bool)> {
  function strip_ansi_codes_from_strings_iterator (line 191) | fn strip_ansi_codes_from_strings_iterator<'a>(
  function explain_ansi (line 199) | pub fn explain_ansi(line: &str, colorful: bool) -> String {
  function test_strip_ansi_codes (line 229) | fn test_strip_ansi_codes() {
  function test_measure_text_width (line 237) | fn test_measure_text_width() {
  function test_strip_ansi_codes_osc_hyperlink (line 246) | fn test_strip_ansi_codes_osc_hyperlink() {
  function test_measure_text_width_osc_hyperlink (line 252) | fn test_measure_text_width_osc_hyperlink() {
  function test_measure_text_width_osc_hyperlink_non_ascii (line 258) | fn test_measure_text_width_osc_hyperlink_non_ascii() {
  function test_parse_first_style (line 264) | fn test_parse_first_style() {
  function test_string_starts_with_ansi_escape_sequence (line 275) | fn test_string_starts_with_ansi_escape_sequence() {
  function test_ansi_preserving_slice_and_index (line 285) | fn test_ansi_preserving_slice_and_index() {
  function test_truncate_str (line 325) | fn test_truncate_str() {
  function test_truncate_str_at_double_width_grapheme (line 334) | fn test_truncate_str_at_double_width_grapheme() {

FILE: src/cli.rs
  constant TERM_FALLBACK_WIDTH (line 24) | const TERM_FALLBACK_WIDTH: usize = 79;
  type Opt (line 36) | pub struct Opt {
    method handle_help_and_version (line 1227) | fn handle_help_and_version(args: &[OsString]) -> Call<ArgMatches> {
    method from_args_and_git_config (line 1306) | pub fn from_args_and_git_config(
    method from_iter_and_git_config (line 1343) | pub fn from_iter_and_git_config<I>(
    method from_clap_and_git_config (line 1361) | fn from_clap_and_git_config(
    method get_argument_and_option_names (line 1375) | pub fn get_argument_and_option_names() -> HashMap<String, String> {
    method git_config (line 1393) | pub fn git_config(&self) -> Option<&GitConfig> {
  function get_after_long_help (line 997) | fn get_after_long_help(is_term: bool, no_indent: &str, no_wrap: &str) ->...
  type ComputedValues (line 1178) | pub struct ComputedValues {
  type Width (line 1192) | pub enum Width {
  type InspectRawLines (line 1199) | pub enum InspectRawLines {
  type DetectDarkLight (line 1206) | pub enum DetectDarkLight {
  type Call (line 1218) | pub enum Call<T> {

FILE: src/color.rs
  function parse_color (line 13) | pub fn parse_color(s: &str, true_color: bool, git_config: Option<&GitCon...
  function color_to_string (line 42) | pub fn color_to_string(color: Color) -> String {
  function ansi_16_color_name_to_number (line 96) | pub fn ansi_16_color_name_to_number(name: &str) -> Option<u8> {
  function ansi_16_color_number_to_name (line 100) | fn ansi_16_color_number_to_name(n: u8) -> Option<&'static str> {
  type ColorMode (line 112) | pub enum ColorMode {
  function get_minus_background_color_default (line 120) | pub fn get_minus_background_color_default(mode: ColorMode, is_true_color...
  function get_minus_emph_background_color_default (line 129) | pub fn get_minus_emph_background_color_default(mode: ColorMode, is_true_...
  function get_plus_background_color_default (line 138) | pub fn get_plus_background_color_default(mode: ColorMode, is_true_color:...
  function get_plus_emph_background_color_default (line 147) | pub fn get_plus_emph_background_color_default(mode: ColorMode, is_true_c...
  constant LIGHT_THEME_MINUS_COLOR (line 156) | const LIGHT_THEME_MINUS_COLOR: Color = Color::RGB(0xff, 0xe0, 0xe0);
  constant LIGHT_THEME_MINUS_COLOR_256 (line 158) | const LIGHT_THEME_MINUS_COLOR_256: Color = Color::Fixed(224);
  constant LIGHT_THEME_MINUS_EMPH_COLOR (line 160) | const LIGHT_THEME_MINUS_EMPH_COLOR: Color = Color::RGB(0xff, 0xc0, 0xc0);
  constant LIGHT_THEME_MINUS_EMPH_COLOR_256 (line 162) | const LIGHT_THEME_MINUS_EMPH_COLOR_256: Color = Color::Fixed(217);
  constant LIGHT_THEME_PLUS_COLOR (line 164) | const LIGHT_THEME_PLUS_COLOR: Color = Color::RGB(0xd0, 0xff, 0xd0);
  constant LIGHT_THEME_PLUS_COLOR_256 (line 166) | const LIGHT_THEME_PLUS_COLOR_256: Color = Color::Fixed(194);
  constant LIGHT_THEME_PLUS_EMPH_COLOR (line 168) | const LIGHT_THEME_PLUS_EMPH_COLOR: Color = Color::RGB(0xa0, 0xef, 0xa0);
  constant LIGHT_THEME_PLUS_EMPH_COLOR_256 (line 170) | const LIGHT_THEME_PLUS_EMPH_COLOR_256: Color = Color::Fixed(157);
  constant DARK_THEME_MINUS_COLOR (line 172) | const DARK_THEME_MINUS_COLOR: Color = Color::RGB(0x3f, 0x00, 0x01);
  constant DARK_THEME_MINUS_COLOR_256 (line 174) | const DARK_THEME_MINUS_COLOR_256: Color = Color::Fixed(52);
  constant DARK_THEME_MINUS_EMPH_COLOR (line 176) | const DARK_THEME_MINUS_EMPH_COLOR: Color = Color::RGB(0x90, 0x10, 0x11);
  constant DARK_THEME_MINUS_EMPH_COLOR_256 (line 178) | const DARK_THEME_MINUS_EMPH_COLOR_256: Color = Color::Fixed(124);
  constant DARK_THEME_PLUS_COLOR (line 180) | const DARK_THEME_PLUS_COLOR: Color = Color::RGB(0x00, 0x28, 0x00);
  constant DARK_THEME_PLUS_COLOR_256 (line 182) | const DARK_THEME_PLUS_COLOR_256: Color = Color::Fixed(22);
  constant DARK_THEME_PLUS_EMPH_COLOR (line 184) | const DARK_THEME_PLUS_EMPH_COLOR: Color = Color::RGB(0x00, 0x60, 0x00);
  constant DARK_THEME_PLUS_EMPH_COLOR_256 (line 186) | const DARK_THEME_PLUS_EMPH_COLOR_256: Color = Color::Fixed(28);
  constant LIGHT_THEME_BLAME_PALETTE (line 190) | pub const LIGHT_THEME_BLAME_PALETTE: &[&str] = &["#FFFFFF", "#DDDDDD", "...
  constant DARK_THEME_BLAME_PALETTE (line 192) | pub const DARK_THEME_BLAME_PALETTE: &[&str] = &["#000000", "#222222", "#...

FILE: src/colors.rs
  function color_groups (line 1) | pub fn color_groups() -> Vec<(&'static str, Vec<(&'static str, &'static ...

FILE: src/config.rs
  constant INLINE_SYMBOL_WIDTH_1 (line 32) | pub const INLINE_SYMBOL_WIDTH_1: usize = 1;
  constant SYNTAX_FALLBACK_LANG (line 35) | pub const SYNTAX_FALLBACK_LANG: &str = "txt";
  type Config (line 38) | pub struct Config {
    method get_style (line 168) | pub fn get_style(&self, state: &State) -> &Style {
    method git_config (line 182) | pub fn git_config(&self) -> Option<&GitConfig> {
    method from (line 188) | fn from(opt: cli::Opt) -> Self {
  type GrepType (line 143) | pub enum GrepType {
  type HunkHeaderIncludeFilePath (line 149) | pub enum HunkHeaderIncludeFilePath {
  type HunkHeaderIncludeLineNumber (line 155) | pub enum HunkHeaderIncludeLineNumber {
  type HunkHeaderIncludeCodeFragment (line 161) | pub enum HunkHeaderIncludeCodeFragment {
  function make_blame_palette (line 443) | fn make_blame_palette(blame_palette: Option<String>, mode: ColorMode) ->...
  function user_supplied_option (line 461) | pub fn user_supplied_option(option: &str, arg_matches: &clap::ArgMatches...
  function delta_unreachable (line 465) | pub fn delta_unreachable(message: &str) -> ! {
  constant HEADER_LEN (line 474) | pub const HEADER_LEN: usize = 7;
  function test_get_computed_values_from_config (line 484) | fn test_get_computed_values_from_config() {

FILE: src/delta.rs
  type State (line 20) | pub enum State {
  type DiffType (line 41) | pub enum DiffType {
    method n_parents (line 61) | pub fn n_parents(&self) -> usize {
  type MergeParents (line 48) | pub enum MergeParents {
  type InMergeConflict (line 55) | pub enum InMergeConflict {
  type Source (line 74) | pub enum Source {
  type StateMachine (line 92) | pub struct StateMachine<'a> {
  function delta (line 117) | pub fn delta<I>(lines: ByteLines<I>, writer: &mut dyn Write, config: &Co...
  function new (line 125) | pub fn new(writer: &'a mut dyn Write, config: &'a Config) -> Self {
  function consume (line 146) | fn consume<I>(&mut self, mut lines: ByteLines<I>) -> std::io::Result<()>
  function ingest_line (line 192) | fn ingest_line(&mut self, raw_line_bytes: &[u8]) {
  function ingest_line_utf8 (line 207) | fn ingest_line_utf8(&mut self, raw_line: String) {
  function should_skip_line (line 239) | pub fn should_skip_line(&self) -> bool {
  function emit_line_unchanged (line 246) | pub fn emit_line_unchanged(&mut self) -> std::io::Result<bool> {
  function should_handle (line 260) | pub fn should_handle(&self) -> bool {
  function format_raw_line (line 268) | pub fn format_raw_line<'a>(line: &'a str, config: &Config) -> Cow<'a, st...
  function detect_source (line 281) | fn detect_source(line: &str) -> Source {

FILE: src/edits.rs
  function infer_edits (line 24) | pub fn infer_edits<'a, EditOperation>(
  function get_contents_before_trailing_whitespace (line 110) | fn get_contents_before_trailing_whitespace(line: &str) -> Option<&str> {
  function make_lines_have_homolog (line 121) | pub fn make_lines_have_homolog(
  function tokenize (line 140) | fn tokenize<'a>(line: &'a str, regex: &Regex) -> Vec<&'a str> {
  function annotate (line 174) | fn annotate<'a, Annotation>(
  function compute_distance (line 283) | fn compute_distance(d_numer: f64, d_denom: f64) -> f64 {
  type EditOperation (line 303) | enum EditOperation {
  type Annotation (line 310) | type Annotation<'a> = (EditOperation, &'a str);
  type AnnotatedLine (line 311) | type AnnotatedLine<'a> = Vec<Annotation<'a>>;
  type AnnotatedLines (line 312) | type AnnotatedLines<'a> = Vec<AnnotatedLine<'a>>;
  type Edits (line 313) | type Edits<'a> = (AnnotatedLines<'a>, AnnotatedLines<'a>);
  function test_tokenize_0 (line 318) | fn test_tokenize_0() {
  function test_tokenize_1 (line 329) | fn test_tokenize_1() {
  function test_tokenize_2 (line 334) | fn test_tokenize_2() {
  function test_tokenize_3 (line 354) | fn test_tokenize_3() {
  function test_tokenize_4 (line 378) | fn test_tokenize_4() {
  function test_tokenize_5 (line 403) | fn test_tokenize_5() {
  function test_tokenize_6 (line 447) | fn test_tokenize_6() {
  function assert_tokenize (line 496) | fn assert_tokenize(text: &str, expected_tokens: &[&str]) {
  function test_infer_edits_1 (line 506) | fn test_infer_edits_1() {
  function test_infer_edits_1_2 (line 518) | fn test_infer_edits_1_2() {
  function test_infer_edits_2 (line 534) | fn test_infer_edits_2() {
  function test_infer_edits_3 (line 546) | fn test_infer_edits_3() {
  function test_infer_edits_4 (line 566) | fn test_infer_edits_4() {
  function test_infer_edits_5 (line 591) | fn test_infer_edits_5() {
  function test_infer_edits_6 (line 622) | fn test_infer_edits_6() {
  function test_infer_edits_7 (line 643) | fn test_infer_edits_7() {
  function test_infer_edits_8 (line 664) | fn test_infer_edits_8() {
  function test_infer_edits_9 (line 688) | fn test_infer_edits_9() {
  function test_infer_edits_10 (line 720) | fn test_infer_edits_10() {
  function test_infer_edits_11 (line 747) | fn test_infer_edits_11() {
  function test_infer_edits_12 (line 763) | fn test_infer_edits_12() {
  function test_infer_edits_13 (line 783) | fn test_infer_edits_13() {
  function test_infer_edits_14 (line 811) | fn test_infer_edits_14() {
  function test_infer_edits_15 (line 852) | fn test_infer_edits_15() {
  function test_infer_edits_16 (line 872) | fn test_infer_edits_16() {
  function assert_edits (line 898) | fn assert_edits(
  function assert_no_edits (line 925) | fn assert_no_edits(minus_lines: Vec<&str>, plus_lines: Vec<&str>, max_li...
  function assert_paired_edits (line 935) | fn assert_paired_edits(minus_lines: Vec<&str>, plus_lines: Vec<&str>, ex...
  function assert_consistent_pairs (line 940) | fn assert_consistent_pairs(edits: &Edits) {
  function summarize_annotated_line (line 968) | fn summarize_annotated_line(sections: &AnnotatedLine) -> (usize, usize) {
  function compare_annotated_lines (line 984) | fn compare_annotated_lines(actual: Edits, expected: Edits) {
  function print_annotated_lines (line 999) | fn print_annotated_lines(annotated_lines: AnnotatedLines) {
  function print_annotated_line (line 1006) | fn print_annotated_line(annotated_line: AnnotatedLine) {
  function fmt_edit (line 1014) | fn fmt_edit(edit: EditOperation) -> &'static str {
  function is_edit (line 1023) | fn is_edit(edit: &EditOperation) -> bool {

FILE: src/env.rs
  constant COLORTERM (line 3) | const COLORTERM: &str = "COLORTERM";
  constant BAT_THEME (line 4) | const BAT_THEME: &str = "BAT_THEME";
  constant GIT_CONFIG_PARAMETERS (line 5) | const GIT_CONFIG_PARAMETERS: &str = "GIT_CONFIG_PARAMETERS";
  constant GIT_PREFIX (line 6) | const GIT_PREFIX: &str = "GIT_PREFIX";
  constant DELTA_FEATURES (line 7) | const DELTA_FEATURES: &str = "DELTA_FEATURES";
  constant DELTA_NAVIGATE (line 8) | const DELTA_NAVIGATE: &str = "DELTA_NAVIGATE";
  constant DELTA_EXPERIMENTAL_MAX_LINE_DISTANCE_FOR_NAIVELY_PAIRED_LINES (line 9) | const DELTA_EXPERIMENTAL_MAX_LINE_DISTANCE_FOR_NAIVELY_PAIRED_LINES: &str =
  constant DELTA_PAGER (line 11) | const DELTA_PAGER: &str = "DELTA_PAGER";
  type DeltaEnv (line 14) | pub struct DeltaEnv {
    method init (line 29) | pub fn init() -> Self {
  function hostname (line 65) | fn hostname() -> Option<String> {
  function test_env_parsing (line 81) | fn test_env_parsing() {
  function test_env_parsing_with_pager_set_to_bat (line 92) | fn test_env_parsing_with_pager_set_to_bat() {
  function test_env_parsing_with_pager_set_to_more (line 105) | fn test_env_parsing_with_pager_set_to_more() {
  function test_env_parsing_with_pager_set_to_most (line 113) | fn test_env_parsing_with_pager_set_to_most() {

FILE: src/features/color_only.rs
  function make_feature (line 7) | pub fn make_feature() -> Vec<(String, OptionValueFunction)> {

FILE: src/features/diff_highlight.rs
  function make_feature (line 4) | pub fn make_feature() -> Vec<(String, OptionValueFunction)> {
  function _make_feature (line 8) | pub fn _make_feature(bold: bool) -> Vec<(String, OptionValueFunction)> {
  function test_diff_highlight_defaults (line 65) | fn test_diff_highlight_defaults() {
  function test_diff_highlight_respects_gitconfig (line 81) | fn test_diff_highlight_respects_gitconfig() {

FILE: src/features/diff_so_fancy.rs
  function make_feature (line 4) | pub fn make_feature() -> Vec<(String, OptionValueFunction)> {
  function test_diff_so_fancy_defaults (line 54) | fn test_diff_so_fancy_defaults() {
  function test_diff_so_fancy_respects_git_config (line 72) | fn test_diff_so_fancy_respects_git_config() {
  function test_diff_so_fancy_obeys_feature_precedence_rules (line 101) | fn test_diff_so_fancy_obeys_feature_precedence_rules() {

FILE: src/features/hyperlinks.rs
  function make_feature (line 13) | pub fn make_feature() -> Vec<(String, OptionValueFunction)> {
  function format_commit_line_with_osc8_commit_hyperlink (line 31) | pub fn format_commit_line_with_osc8_commit_hyperlink<'a>(
  function format_osc8_file_hyperlink (line 87) | pub fn format_osc8_file_hyperlink<'a, P>(
  function format_osc8_hyperlink (line 109) | fn format_osc8_hyperlink(url: &str, text: &str) -> String {
  function test_file_hyperlink_line_number_defaults_to_one (line 135) | fn test_file_hyperlink_line_number_defaults_to_one() {
  function test_formatted_hyperlinks (line 155) | fn test_formatted_hyperlinks() {
  function test_hyperlinks_to_repo (line 203) | fn test_hyperlinks_to_repo() {
  function test_paths_and_hyperlinks_user_in_repo_root_dir (line 229) | fn test_paths_and_hyperlinks_user_in_repo_root_dir() {
  function test_paths_and_hyperlinks_user_in_subdir_file_in_same_subdir (line 258) | fn test_paths_and_hyperlinks_user_in_subdir_file_in_same_subdir() {
  function test_paths_and_hyperlinks_user_in_subdir_file_in_different_subdir (line 313) | fn test_paths_and_hyperlinks_user_in_subdir_file_in_different_subdir() {
  function test_paths_and_hyperlinks_git_grep_user_in_root (line 354) | fn test_paths_and_hyperlinks_git_grep_user_in_root() {
  function test_paths_and_hyperlinks_grep_user_in_subdir_file_in_same_subdir (line 372) | fn test_paths_and_hyperlinks_grep_user_in_subdir_file_in_same_subdir() {
  function _run_test_grep_user_in_subdir_file_in_same_subdir (line 377) | fn _run_test_grep_user_in_subdir_file_in_same_subdir(calling_cmd: Option...
  constant GIT_DIFF_OUTPUT (line 393) | const GIT_DIFF_OUTPUT: &str = r#"
  constant GIT_GREP_OUTPUT (line 403) | const GIT_GREP_OUTPUT: &str = "\
  type FilePathsTestCase (line 407) | struct FilePathsTestCase<'a> {
  type GitDiffRelative (line 424) | enum GitDiffRelative {
  type CallingProcess (line 430) | enum CallingProcess {
  type InputType (line 437) | enum InputType {
  function get_args (line 443) | pub fn get_args(&self) -> Vec<String> {
  function calling_process (line 477) | pub fn calling_process(&self) -> CallingProcess {
  function path_in_git_output (line 495) | pub fn path_in_git_output(&self) -> String {
  function path_in_grep_output (line 515) | pub fn path_in_grep_output(&self) -> String {
  function expected_hyperlink_path (line 550) | pub fn expected_hyperlink_path(&self) -> PathBuf {
  function run_test (line 556) | fn run_test(test_case: FilePathsTestCase) {

FILE: src/features/line_numbers.rs
  function make_feature (line 18) | pub fn make_feature() -> Vec<(String, OptionValueFunction)> {
  function linenumbers_and_styles (line 68) | pub fn linenumbers_and_styles<'a>(
  function format_and_paint_line_numbers (line 108) | pub fn format_and_paint_line_numbers<'a>(
  type LineNumbersData (line 152) | pub struct LineNumbersData<'a> {
  type SideBySideLineWidth (line 159) | pub type SideBySideLineWidth = MinusPlus<usize>;
  function from_format_strings (line 164) | pub fn from_format_strings(
  function initialize_hunk (line 187) | pub fn initialize_hunk(&mut self, line_numbers: &[(usize, usize)], plus_...
  function empty_for_sbs (line 198) | pub fn empty_for_sbs(use_full_width: ansifill::UseFullPanelWidth) -> Lin...
  function formatted_width (line 216) | pub fn formatted_width(&self) -> SideBySideLineWidth {
  function format_and_paint_line_number_field (line 244) | fn format_and_paint_line_number_field<'a>(
  function format_line_number (line 300) | fn format_line_number(
  function parse_line_number_format_with_default_regex (line 333) | pub fn parse_line_number_format_with_default_regex(
  function test_line_number_format_regex_1 (line 340) | fn test_line_number_format_regex_1() {
  function test_line_number_format_regex_2 (line 352) | fn test_line_number_format_regex_2() {
  function test_line_number_format_regex_3 (line 366) | fn test_line_number_format_regex_3() {
  function test_line_number_format_regex_4 (line 381) | fn test_line_number_format_regex_4() {
  function test_line_number_format_regex_5 (line 395) | fn test_line_number_format_regex_5() {
  function test_line_number_format_regex_6 (line 413) | fn test_line_number_format_regex_6() {
  function test_line_number_format_regex_7 (line 444) | fn test_line_number_format_regex_7() {
  function test_line_number_format_odd_width_one (line 462) | fn test_line_number_format_odd_width_one() {
  function test_line_number_format_odd_width_two (line 480) | fn test_line_number_format_odd_width_two() {
  function test_line_number_format_odd_width_none (line 514) | fn test_line_number_format_odd_width_none() {
  function test_line_number_format_long (line 532) | fn test_line_number_format_long() {
  function test_line_number_placeholder_width_one (line 552) | fn test_line_number_placeholder_width_one() {
  function test_line_number_placeholder_width_two (line 576) | fn test_line_number_placeholder_width_two() {
  function test_line_numbers_data (line 591) | fn test_line_numbers_data() {
  function _get_capture (line 624) | fn _get_capture<'a>(i: usize, j: usize, caps: &'a [Captures]) -> &'a str {
  function test_two_minus_lines (line 629) | fn test_two_minus_lines() {
  function test_two_plus_lines (line 655) | fn test_two_plus_lines() {
  function test_one_minus_one_plus_line (line 681) | fn test_one_minus_one_plus_line() {
  function test_repeated_placeholder (line 706) | fn test_repeated_placeholder() {
  function test_five_digit_line_number (line 731) | fn test_five_digit_line_number() {
  function test_unequal_digit_line_number (line 742) | fn test_unequal_digit_line_number() {
  function test_color_only (line 753) | fn test_color_only() {
  function test_hunk_header_style_is_omit (line 763) | fn test_hunk_header_style_is_omit() {
  function test_line_numbers_continue_correctly (line 778) | fn test_line_numbers_continue_correctly() {
  function test_line_numbers_continue_correctly_after_wrapping (line 790) | fn test_line_numbers_continue_correctly_after_wrapping() {
  constant TWO_MINUS_LINES_DIFF (line 869) | pub const TWO_MINUS_LINES_DIFF: &str = "\
  constant TWO_PLUS_LINES_DIFF (line 879) | pub const TWO_PLUS_LINES_DIFF: &str = "\
  constant ONE_MINUS_ONE_PLUS_LINE_DIFF (line 890) | pub const ONE_MINUS_ONE_PLUS_LINE_DIFF: &str = "\
  constant TWO_LINE_DIFFS (line 901) | const TWO_LINE_DIFFS: &str = "\
  constant FIVE_DIGIT_LINE_NUMBER_DIFF (line 916) | const FIVE_DIGIT_LINE_NUMBER_DIFF: &str = "\
  constant UNEQUAL_DIGIT_DIFF (line 927) | const UNEQUAL_DIGIT_DIFF: &str = "\
  constant DIFF_PLUS_MINUS_WITH_1_CONTEXT_DIFF (line 938) | const DIFF_PLUS_MINUS_WITH_1_CONTEXT_DIFF: &str = "\
  constant DIFF_WITH_LONGER_MINUS_1_CONTEXT (line 947) | const DIFF_WITH_LONGER_MINUS_1_CONTEXT: &str = "\
  constant DIFF_WITH_LONGER_PLUS_1_CONTEXT (line 956) | const DIFF_WITH_LONGER_PLUS_1_CONTEXT: &str = "\
  constant DIFF_MISMATCH_LONGER_MINUS_1_CONTEXT (line 965) | const DIFF_MISMATCH_LONGER_MINUS_1_CONTEXT: &str = "\
  constant DIFF_MISMATCH_LONGER_PLUS_1_CONTEXT (line 974) | const DIFF_MISMATCH_LONGER_PLUS_1_CONTEXT: &str = "\
  constant TWO_MINUS_LINES_UNICODE_DIFF (line 983) | pub const TWO_MINUS_LINES_UNICODE_DIFF: &str = "\

FILE: src/features/mod.rs
  type BuiltinFeature (line 20) | pub type BuiltinFeature = HashMap<String, OptionValueFunction>;
  type OptionValueFunction (line 22) | type OptionValueFunction = Box<dyn Fn(&cli::Opt, &Option<GitConfig>) -> ...
  function make_builtin_features (line 27) | pub fn make_builtin_features() -> HashMap<String, BuiltinFeature> {
  function test_builtin_features_have_flags_and_these_set_features (line 102) | fn test_builtin_features_have_flags_and_these_set_features() {
  function test_builtin_feature_from_gitconfig (line 119) | fn test_builtin_feature_from_gitconfig() {
  function test_features_on_command_line_replace_features_in_gitconfig (line 141) | fn test_features_on_command_line_replace_features_in_gitconfig() {
  function test_feature_flag_on_command_line_does_not_replace_features_in_gitconfig (line 174) | fn test_feature_flag_on_command_line_does_not_replace_features_in_gitcon...
  function test_recursive_feature_gathering_1 (line 196) | fn test_recursive_feature_gathering_1() {
  function test_recursive_feature_gathering_2 (line 226) | fn test_recursive_feature_gathering_2() {
  function test_main_section (line 255) | fn test_main_section() {
  function test_feature (line 302) | fn test_feature() {
  function test_main_section_overrides_feature (line 325) | fn test_main_section_overrides_feature() {
  function test_multiple_features (line 360) | fn test_multiple_features() {
  function test_invalid_features (line 397) | fn test_invalid_features() {
  function test_whitespace_error_style (line 455) | fn test_whitespace_error_style() {

FILE: src/features/navigate.rs
  function make_feature (line 9) | pub fn make_feature() -> Vec<(String, OptionValueFunction)> {
  function make_navigate_regex (line 33) | pub fn make_navigate_regex(
  function copy_less_hist_file_and_append_navigate_regex (line 71) | pub fn copy_less_hist_file_and_append_navigate_regex(
  function get_delta_less_hist_file (line 94) | fn get_delta_less_hist_file() -> std::io::Result<PathBuf> {
  function get_delta_less_hist_file (line 104) | fn get_delta_less_hist_file() -> std::io::Result<PathBuf> {
  function get_less_hist_file (line 111) | fn get_less_hist_file() -> Option<PathBuf> {
  function test_get_less_hist_file (line 170) | fn test_get_less_hist_file() {
  function test_navigate_with_overridden_key_in_main_section (line 176) | fn test_navigate_with_overridden_key_in_main_section() {
  function test_navigate_with_overridden_key_in_custom_navigate_section (line 221) | fn test_navigate_with_overridden_key_in_custom_navigate_section() {
  function test_navigate_activated_by_custom_feature (line 260) | fn test_navigate_activated_by_custom_feature() {

FILE: src/features/raw.rs
  function make_feature (line 3) | pub fn make_feature() -> Vec<(String, OptionValueFunction)> {

FILE: src/features/side_by_side.rs
  function make_feature (line 17) | pub fn make_feature() -> Vec<(String, OptionValueFunction)> {
  type Panel (line 40) | pub struct Panel {
  type LeftRight (line 44) | pub type LeftRight<T> = MinusPlus<T>;
  type SideBySideData (line 46) | pub type SideBySideData = LeftRight<Panel>;
    method new_sbs (line 50) | pub fn new_sbs(decorations_width: &cli::Width, available_terminal_widt...
  function available_line_width (line 59) | pub fn available_line_width(
  function line_is_too_long (line 77) | pub fn line_is_too_long(line: &str, line_width: usize) -> bool {
  function has_long_lines (line 87) | pub fn has_long_lines(
  function paint_minus_and_plus_lines_side_by_side (line 110) | pub fn paint_minus_and_plus_lines_side_by_side(
  function paint_zero_lines_side_by_side (line 225) | pub fn paint_zero_lines_side_by_side<'a>(
  function paint_left_panel_minus_line (line 280) | fn paint_left_panel_minus_line<'a>(
  function paint_right_panel_plus_line (line 315) | fn paint_right_panel_plus_line<'a>(
  function get_right_fill_style_for_panel (line 351) | fn get_right_fill_style_for_panel(
  function paint_minus_or_plus_panel_line (line 411) | fn paint_minus_or_plus_panel_line<'a>(
  function pad_panel_line_to_width (line 471) | fn pad_panel_line_to_width(
  constant ODD_PAD_CHAR (line 541) | pub const ODD_PAD_CHAR: char = ' ';
  type UseFullPanelWidth (line 558) | pub struct UseFullPanelWidth(pub bool);
    method new (line 560) | pub fn new(config: &Config) -> Self {
    method sbs_odd_fix (line 566) | pub fn sbs_odd_fix(
    method pad_width (line 577) | pub fn pad_width(&self) -> bool {
    method is_odd_with_ansi (line 580) | fn is_odd_with_ansi(width: &crate::cli::Width, method: &BgFillMethod) ...
    method adapt_sbs_data (line 584) | fn adapt_sbs_data(mut sbs_data: SideBySideData) -> SideBySideData {
  function test_two_fitting_minus_lines (line 599) | fn test_two_fitting_minus_lines() {
  function test_two_minus_lines_truncated (line 612) | fn test_two_minus_lines_truncated() {
  function test_two_plus_lines (line 631) | fn test_two_plus_lines() {
  function test_two_plus_lines_spaces_and_ansi (line 647) | fn test_two_plus_lines_spaces_and_ansi() {
  function test_two_plus_lines_truncated (line 674) | fn test_two_plus_lines_truncated() {
  function test_two_plus_lines_exact_fit (line 693) | fn test_two_plus_lines_exact_fit() {
  function test_one_minus_one_plus_line (line 705) | fn test_one_minus_one_plus_line() {
  function test_two_minus_lines_unicode_truncated (line 721) | fn test_two_minus_lines_unicode_truncated() {

FILE: src/format.rs
  type Placeholder (line 10) | pub enum Placeholder<'a> {
  type Error (line 17) | type Error = ();
  function try_from (line 18) | fn try_from(from: Option<&'a str>) -> Result<Self, Self::Error> {
  type Align (line 29) | pub enum Align {
    type Error (line 36) | type Error = ();
    method try_from (line 37) | fn try_from(from: Option<&str>) -> Result<Self, Self::Error> {
  type FormatStringPlaceholderDataAnyPlaceholder (line 54) | pub struct FormatStringPlaceholderDataAnyPlaceholder<T> {
  method default (line 67) | fn default() -> Self {
  function only_string (line 83) | pub fn only_string(s: &str) -> Self {
  type FormatStringPlaceholderData (line 92) | pub type FormatStringPlaceholderData<'a> =
  type FormatStringSimple (line 95) | pub type FormatStringSimple = FormatStringPlaceholderDataAnyPlaceholder<...
  function width (line 98) | pub fn width(&self, hunk_max_line_number_width: usize) -> (usize, usize) {
  function into_simple (line 112) | pub fn into_simple(self) -> FormatStringSimple {
  type FormatStringData (line 127) | pub type FormatStringData<'a> = Vec<FormatStringPlaceholderData<'a>>;
  function make_placeholder_regex (line 129) | pub fn make_placeholder_regex(labels: &[&str]) -> Regex {
  function parse_line_number_format (line 156) | pub fn parse_line_number_format<'a>(
  type CenterRightNumbers (line 223) | pub trait CenterRightNumbers {
    method center_right_space (line 233) | fn center_right_space(&self, alignment: Align, width: usize) -> &'stat...
    method center_right_space (line 237) | fn center_right_space(&self, _alignment: Align, _width: usize) -> &'st...
    method center_right_space (line 244) | fn center_right_space(&self, alignment: Align, width: usize) -> &'stat...
    method center_right_space (line 250) | fn center_right_space(&self, alignment: Align, width: usize) -> &'stat...
    method center_right_space (line 280) | fn center_right_space(&self, alignment: Align, width: usize) -> &'stat...
  function log10_plus_1 (line 256) | pub fn log10_plus_1(mut n: usize) -> usize {
  function pad (line 296) | pub fn pad<T: std::fmt::Display + CenterRightNumbers>(
  function test_log10_plus_1 (line 326) | fn test_log10_plus_1() {
  function test_center_right_space_trait (line 344) | fn test_center_right_space_trait() {
  function test_pad_center_align (line 352) | fn test_pad_center_align() {
  function test_placeholder_with_notype (line 370) | fn test_placeholder_with_notype() {
  function test_placeholder_with_only_type_dash_number (line 384) | fn test_placeholder_with_only_type_dash_number() {
  function test_placeholder_with_empty_formatting (line 397) | fn test_placeholder_with_empty_formatting() {
  function test_placeholder_with_type_and_more (line 409) | fn test_placeholder_with_type_and_more() {
  function test_placeholder_regex (line 443) | fn test_placeholder_regex() {
  function test_placeholder_regex_empty_placeholder (line 462) | fn test_placeholder_regex_empty_placeholder() {
  function test_format_string_simple (line 480) | fn test_format_string_simple() {
  function test_line_number_format_only_string (line 519) | fn test_line_number_format_only_string() {
  function test_parse_line_number_format_not_empty (line 525) | fn test_parse_line_number_format_not_empty() {

FILE: src/git_config/mod.rs
  type GitConfig (line 13) | pub struct GitConfig {
    method try_create (line 42) | pub fn try_create(env: &DeltaEnv) -> Option<Self> {
    method try_create (line 71) | pub fn try_create(_env: &DeltaEnv) -> Option<Self> {
    method for_testing (line 77) | pub fn for_testing() -> Option<Self> {
    method from_path (line 88) | pub fn from_path(env: &DeltaEnv, path: &Path, honor_env_var: bool) -> ...
    method get (line 117) | pub fn get<T>(&self, key: &str) -> Option<T>
    method get_remote_url_impl (line 129) | fn get_remote_url_impl(&self) -> Option<GitRemoteRepo> {
    method get_remote_url_impl (line 134) | fn get_remote_url_impl(&self) -> Option<GitRemoteRepo> {
    method get_remote_url (line 144) | pub fn get_remote_url(&self) -> &Option<GitRemoteRepo> {
    method for_each (line 148) | pub fn for_each<F>(&self, regex: &str, mut f: F)
  method clone (line 26) | fn clone(&self) -> Self {
  function parse_config_from_env_var (line 161) | fn parse_config_from_env_var(env: &DeltaEnv) -> HashMap<String, String> {
  function parse_config_from_env_var_value (line 182) | fn parse_config_from_env_var_value(s: &str) -> HashMap<String, String> {
  type GitConfigGet (line 205) | pub trait GitConfigGet {
    method git_config_get (line 206) | fn git_config_get(key: &str, git_config: &GitConfig) -> Option<Self>
    method git_config_get (line 212) | fn git_config_get(key: &str, git_config: &GitConfig) -> Option<Self> {
    method git_config_get (line 221) | fn git_config_get(key: &str, git_config: &GitConfig) -> Option<Self> {
    method git_config_get (line 233) | fn git_config_get(key: &str, git_config: &GitConfig) -> Option<Self> {
    method git_config_get (line 243) | fn git_config_get(key: &str, git_config: &GitConfig) -> Option<Self> {
    method git_config_get (line 257) | fn git_config_get(key: &str, git_config: &GitConfig) -> Option<Self> {
  function test_parse_config_from_env_var_value (line 276) | fn test_parse_config_from_env_var_value() {

FILE: src/git_config/remote.rs
  type GitRemoteRepo (line 10) | pub enum GitRemoteRepo {
    method format_commit_url (line 18) | pub fn format_commit_url(&self, commit: &str) -> String {
    method for_testing (line 36) | pub fn for_testing() -> Option<GitRemoteRepo> {
  type Err (line 103) | type Err = Error;
  method from_str (line 104) | fn from_str(s: &str) -> Result<Self, Self::Err> {
  function test_parse_github_urls (line 149) | fn test_parse_github_urls() {
  function test_format_github_commit_link (line 171) | fn test_format_github_commit_link() {
  function test_parse_gitlab_urls (line 183) | fn test_parse_gitlab_urls() {
  function test_format_gitlab_commit_link (line 216) | fn test_format_gitlab_commit_link() {
  function test_parse_sourcehut_urls (line 228) | fn test_parse_sourcehut_urls() {
  function test_format_sourcehut_commit_link (line 247) | fn test_format_sourcehut_commit_link() {
  function test_parse_codeberg_urls (line 259) | fn test_parse_codeberg_urls() {
  function test_format_codeberg_commit_link (line 281) | fn test_format_codeberg_commit_link() {

FILE: src/handlers/blame.rs
  type BlameLineNumbers (line 20) | pub enum BlameLineNumbers {
  function handle_blame_line (line 31) | pub fn handle_blame_line(&mut self) -> std::io::Result<bool> {
  function get_filename (line 96) | fn get_filename(&self) -> Option<String> {
  function blame_metadata_style (line 103) | fn blame_metadata_style(
  function get_color (line 135) | fn get_color(&self, this_key: &str, previous_key: Option<&str>, is_repea...
  function get_next_color (line 178) | fn get_next_color(&self, other_than_color: Option<&str>) -> String {
  type BlameLine (line 191) | pub struct BlameLine<'a> {
  function parse_git_blame_line (line 233) | pub fn parse_git_blame_line<'a>(line: &'a str, timestamp_format: &str) -...
  function format_blame_metadata (line 261) | pub fn format_blame_metadata(
  function format_blame_line_number (line 303) | pub fn format_blame_line_number(
  function parse_blame_line_numbers (line 333) | pub fn parse_blame_line_numbers(arg: &str) -> BlameLineNumbers {
  function test_blame_line_regex (line 393) | fn test_blame_line_regex() {
  function test_blame_line_with_parens_in_name (line 406) | fn test_blame_line_with_parens_in_name() {
  function test_format_blame_metadata_with_default_timestamp_output_format (line 414) | fn test_format_blame_metadata_with_default_timestamp_output_format() {
  function test_format_blame_metadata_with_custom_timestamp_output_format (line 424) | fn test_format_blame_metadata_with_custom_timestamp_output_format() {
  function test_format_blame_metadata_with_accent_in_name (line 435) | fn test_format_blame_metadata_with_accent_in_name() {
  function test_color_assignment (line 455) | fn test_color_assignment() {
  function hashmap_items (line 536) | fn hashmap_items(hashmap: &HashMap<String, String>) -> Vec<(&str, &str)> {
  function make_blame_line_with_time (line 544) | fn make_blame_line_with_time(timestamp: &str) -> BlameLine<'_> {
  function make_format_data_with_placeholder (line 555) | fn make_format_data_with_placeholder(
  function make_blame_line_with_author (line 564) | fn make_blame_line_with_author(author: &str) -> BlameLine<'_> {

FILE: src/handlers/commit_meta.rs
  function test_commit_meta_header_line (line 9) | fn test_commit_meta_header_line(&self) -> bool {
  function handle_commit_meta_header_line (line 13) | pub fn handle_commit_meta_header_line(&mut self) -> std::io::Result<bool> {
  function _handle_commit_meta_header_line (line 29) | fn _handle_commit_meta_header_line(&mut self) -> std::io::Result<()> {

FILE: src/handlers/diff_header.rs
  constant DIFF_PREFIXES (line 13) | const DIFF_PREFIXES: [&str; 6] = ["a/", "b/", "c/", "i/", "o/", "w/"];
  type FileEvent (line 16) | pub enum FileEvent {
  function handle_diff_header_mode_line (line 27) | pub fn handle_diff_header_mode_line(&mut self) -> std::io::Result<bool> {
  function should_write_generic_diff_header_header_line (line 54) | fn should_write_generic_diff_header_header_line(&mut self) -> std::io::R...
  function test_diff_header_minus_line (line 74) | fn test_diff_header_minus_line(&self) -> bool {
  function handle_diff_header_minus_line (line 82) | pub fn handle_diff_header_minus_line(&mut self) -> std::io::Result<bool> {
  function test_diff_header_plus_line (line 110) | fn test_diff_header_plus_line(&self) -> bool {
  function handle_diff_header_plus_line (line 118) | pub fn handle_diff_header_plus_line(&mut self) -> std::io::Result<bool> {
  function test_diff_header_file_operation_line (line 150) | fn test_diff_header_file_operation_line(&self) -> bool {
  function handle_diff_header_file_operation_line (line 157) | pub fn handle_diff_header_file_operation_line(&mut self) -> std::io::Res...
  function _handle_diff_header_header_line (line 193) | fn _handle_diff_header_header_line(&mut self, comparing: bool) -> std::i...
  function test_pending_line_with_diff_name (line 213) | fn test_pending_line_with_diff_name(&self) -> bool {
  function handle_pending_line_with_diff_name (line 217) | pub fn handle_pending_line_with_diff_name(&mut self) -> std::io::Result<...
  function write_generic_diff_header_header_line (line 267) | pub fn write_generic_diff_header_header_line(
  function get_filename_from_marker_line (line 305) | fn get_filename_from_marker_line(line: &str) -> Option<&str> {
  function get_filename_from_diff_header_line_file_path (line 312) | fn get_filename_from_diff_header_line_file_path(path: &str) -> Option<&s...
  function parse_diff_header_line (line 322) | fn parse_diff_header_line(line: &str, git_diff_name: bool) -> (String, F...
  function get_repeated_file_path_from_diff_line (line 353) | pub fn get_repeated_file_path_from_diff_line(line: &str) -> Option<Strin...
  function remove_surrounding_quotes (line 368) | fn remove_surrounding_quotes(path: &str) -> &str {
  function _parse_file_path (line 377) | fn _parse_file_path(path: &str, git_diff_name: bool) -> String {
  function get_file_change_description_from_file_paths (line 398) | pub fn get_file_change_description_from_file_paths(
  function test_get_filename_from_marker_line (line 477) | fn test_get_filename_from_marker_line() {
  function test_get_filename_from_diff_header_line (line 485) | fn test_get_filename_from_diff_header_line() {
  function test_get_file_path_from_git_diff_header_line (line 539) | fn test_get_file_path_from_git_diff_header_line() {
  function test_get_file_path_from_git_diff_header_line_containing_spaces (line 566) | fn test_get_file_path_from_git_diff_header_line_containing_spaces() {
  function test_get_file_path_from_git_diff_header_line_rename (line 593) | fn test_get_file_path_from_git_diff_header_line_rename() {
  function test_get_file_path_from_git_diff_header_line_rename_containing_spaces (line 601) | fn test_get_file_path_from_git_diff_header_line_rename_containing_spaces...
  function test_parse_diff_header_line (line 609) | fn test_parse_diff_header_line() {
  function test_get_repeated_file_path_from_diff_line (line 621) | fn test_get_repeated_file_path_from_diff_line() {
  function test_diff_header_with_mode_change_in_last_hunk (line 650) | fn test_diff_header_with_mode_change_in_last_hunk() {
  function test_diff_header_with_2x_mode_change (line 680) | fn test_diff_header_with_2x_mode_change() {
  constant BIN_AND_TXT_FILE_ADDED (line 717) | pub const BIN_AND_TXT_FILE_ADDED: &str = "\
  function test_diff_header_relative_paths (line 731) | fn test_diff_header_relative_paths() {
  constant DIFF_AMBIGUOUS_HEADER_3X_MINUS (line 756) | pub const DIFF_AMBIGUOUS_HEADER_3X_MINUS: &str = r#"--- a.lua
  constant DIFF_AMBIGUOUS_HEADER_3X_MINUS_LAST_LINE (line 765) | pub const DIFF_AMBIGUOUS_HEADER_3X_MINUS_LAST_LINE: &str = r#"--- c.lua
  constant DIFF_AMBIGUOUS_HEADER_MULTIPLE_HUNKS (line 774) | pub const DIFF_AMBIGUOUS_HEADER_MULTIPLE_HUNKS: &str = r#"--- e.lua	2024...
  function test_diff_header_ambiguous_3x_minus (line 790) | fn test_diff_header_ambiguous_3x_minus() {
  function test_diff_header_ambiguous_3x_minus_concatenated (line 814) | fn test_diff_header_ambiguous_3x_minus_concatenated() {
  function test_diff_header_ambiguous_3x_minus_extra_and_concatenated (line 875) | fn test_diff_header_ambiguous_3x_minus_extra_and_concatenated() {

FILE: src/handlers/diff_header_diff.rs
  function test_diff_header_diff_line (line 6) | fn test_diff_header_diff_line(&self) -> bool {
  function handle_diff_header_diff_line (line 11) | pub fn handle_diff_header_diff_line(&mut self) -> std::io::Result<bool> {

FILE: src/handlers/diff_header_misc.rs
  function test_diff_file_missing (line 6) | fn test_diff_file_missing(&self) -> bool {
  function test_diff_is_binary (line 11) | fn test_diff_is_binary(&self) -> bool {
  function handle_diff_header_misc_line (line 15) | pub fn handle_diff_header_misc_line(&mut self) -> std::io::Result<bool> {

FILE: src/handlers/diff_stat.rs
  function test_diff_stat_line (line 12) | fn test_diff_stat_line(&self) -> bool {
  function handle_diff_stat_line (line 17) | pub fn handle_diff_stat_line(&mut self) -> std::io::Result<bool> {
  function relativize_path_in_diff_stat_line (line 46) | pub fn relativize_path_in_diff_stat_line(
  function test_diff_stat_line_regex_1 (line 82) | fn test_diff_stat_line_regex_1() {
  function test_diff_stat_line_regex_2 (line 91) | fn test_diff_stat_line_regex_2() {
  function test_relative_path (line 100) | fn test_relative_path() {

FILE: src/handlers/draw.rs
  function paint_text (line 8) | fn paint_text(text_style: Style, text: &str, addendum: &str) -> String {
  type DrawFunction (line 18) | pub type DrawFunction = dyn FnMut(
  function get_draw_function (line 28) | pub fn get_draw_function(
  function write_no_decoration (line 55) | fn write_no_decoration(
  function write_boxed (line 74) | pub fn write_boxed(
  function write_boxed_with_underline (line 104) | fn write_boxed_with_underline(
  type UnderOverline (line 141) | enum UnderOverline {
  function write_underlined (line 147) | fn write_underlined(
  function write_overlined (line 168) | fn write_overlined(
  function write_underoverlined (line 189) | fn write_underoverlined(
  function _write_under_or_over_lined (line 211) | fn _write_under_or_over_lined(
  function write_horizontal_line (line 247) | fn write_horizontal_line(
  function write_boxed_with_horizontal_whisker (line 265) | fn write_boxed_with_horizontal_whisker(
  function write_boxed_partial (line 292) | fn write_boxed_partial(

FILE: src/handlers/git_show_file.rs
  function handle_git_show_file_line (line 8) | pub fn handle_git_show_file_line(&mut self) -> std::io::Result<bool> {

FILE: src/handlers/grep.rs
  type GrepLine (line 21) | pub struct GrepLine<'b> {
  function expand_tabs (line 31) | fn expand_tabs(&mut self, tab_cfg: &tabs::TabCfg) {
  type LineType (line 50) | pub enum LineType {
    method file_path_separator (line 69) | fn file_path_separator(&self) -> &str {
  type GrepOutputConfig (line 58) | struct GrepOutputConfig {
  function handle_grep_line (line 84) | pub fn handle_grep_line(&mut self) -> std::io::Result<bool> {
  function emit_ripgrep_format_grep_line (line 152) | fn emit_ripgrep_format_grep_line(
  function emit_classic_format_grep_line (line 246) | fn emit_classic_format_grep_line(&mut self, grep_line: GrepLine) -> std:...
  function _emit_classic_format_file_and_line_number (line 293) | fn _emit_classic_format_file_and_line_number(
  function _emit_classic_format_code (line 326) | fn _emit_classic_format_code(&mut self, mut grep_line: GrepLine) -> std:...
  function make_style_sections (line 374) | fn make_style_sections<'a>(
  function get_code_style_sections (line 397) | fn get_code_style_sections<'b>(
  function make_output_config (line 429) | fn make_output_config() -> GrepOutputConfig {
  type GrepLineRegex (line 471) | enum GrepLineRegex {
  function make_grep_line_regex (line 505) | fn make_grep_line_regex(regex_variant: GrepLineRegex) -> Regex {
  function parse_grep_line (line 667) | pub fn parse_grep_line(line: &str) -> Option<GrepLine<'_>> {
  function parse_raw_grep_line (line 685) | pub fn parse_raw_grep_line(raw_line: &str) -> Option<GrepLine<'_>> {
  function _parse_grep_line (line 702) | pub fn _parse_grep_line<'b>(regex: &Regex, line: &'b str) -> Option<Grep...
  function test_parse_grep_match (line 740) | fn test_parse_grep_match() {
  function test_parse_grep_n_match (line 838) | fn test_parse_grep_n_match() {
  function test_parse_grep_n_match_file_name_with_dashes_and_no_extension (line 910) | fn test_parse_grep_n_match_file_name_with_dashes_and_no_extension() {
  function test_parse_grep_n_match_directory_name_with_dashes (line 931) | fn test_parse_grep_n_match_directory_name_with_dashes() {
  function test_parse_grep_color (line 950) | fn test_parse_grep_color() {
  function test_parse_grep_no_match (line 986) | fn test_parse_grep_no_match() {
  function test_parse_grep_n_no_match (line 1065) | fn test_parse_grep_n_no_match() {
  function test_parse_grep_match_no_extension (line 1121) | fn test_parse_grep_match_no_extension() {
  function test_parse_grep_n_match_no_extension (line 1140) | fn test_parse_grep_n_match_no_extension() {
  function test_parse_grep_W_context_header (line 1160) | fn test_parse_grep_W_context_header() {
  function test_parse_grep_W_n_context_header (line 1181) | fn test_parse_grep_W_n_context_header() {
  function test_parse_grep_not_grep_output (line 1201) | fn test_parse_grep_not_grep_output() {
  function test_parse_grep_parent_command_is_not_grep_1 (line 1211) | fn test_parse_grep_parent_command_is_not_grep_1() {
  function test_parse_grep_parent_command_is_not_grep_2 (line 1221) | fn test_parse_grep_parent_command_is_not_grep_2() {
  function test_get_code_style_sections (line 1228) | fn test_get_code_style_sections() {

FILE: src/handlers/hunk.rs
  function is_word_diff (line 14) | pub fn is_word_diff() -> bool {
  function compute_is_word_diff (line 29) | fn compute_is_word_diff() -> bool {
  function test_hunk_line (line 45) | fn test_hunk_line(&self) -> bool {
  function handle_hunk_line (line 61) | pub fn handle_hunk_line(&mut self) -> std::io::Result<bool> {
  function maybe_raw_line (line 136) | fn maybe_raw_line(
  function new_line_state (line 156) | fn new_line_state(
  function test_word_diff (line 283) | fn test_word_diff() {
  function test_color_words (line 301) | fn test_color_words() {
  function test_color_words_map_styles (line 320) | fn test_color_words_map_styles() {
  function test_hunk_line_style_raw (line 342) | fn test_hunk_line_style_raw() {
  function test_hunk_line_style_raw_map_styles (line 356) | fn test_hunk_line_style_raw_map_styles() {
  constant GIT_DIFF_WITH_COLOR (line 376) | const GIT_DIFF_WITH_COLOR: &str = r#"\
  constant GIT_DIFF_COLOR_WORDS (line 392) | const GIT_DIFF_COLOR_WORDS: &str = r#"\
  constant GIT_DIFF_WORD_DIFF (line 407) | const GIT_DIFF_WORD_DIFF: &str = r#"\

FILE: src/handlers/hunk_header.rs
  type ParsedHunkHeader (line 35) | pub struct ParsedHunkHeader {
  type HunkHeaderIncludeHunkLabel (line 40) | pub enum HunkHeaderIncludeHunkLabel {
  type AmbiguousDiffMinusCounter (line 52) | pub struct AmbiguousDiffMinusCounter(isize);
    constant COUNTER_RELEVANT_IF_GREATER_THAN (line 60) | const COUNTER_RELEVANT_IF_GREATER_THAN: isize = -4096;
    constant EXPECT_DIFF_3DASH_HEADER (line 61) | const EXPECT_DIFF_3DASH_HEADER: isize = 0;
    method not_needed (line 63) | pub fn not_needed() -> Self {
    method prepare_to_count (line 66) | pub fn prepare_to_count() -> Self {
    method three_dashes_expected (line 69) | pub fn three_dashes_expected(&self) -> bool {
    method count_line (line 76) | pub fn count_line(&mut self) {
    method count_from (line 79) | fn count_from(lines: usize) -> Self {
    method must_count (line 87) | fn must_count(&mut self) -> bool {
  function test_hunk_header_line (line 103) | fn test_hunk_header_line(&self) -> bool {
  function handle_hunk_header_line (line 110) | pub fn handle_hunk_header_line(&mut self) -> std::io::Result<bool> {
  function emit_hunk_header_line (line 151) | pub fn emit_hunk_header_line(
  function parse_hunk_header (line 235) | fn parse_hunk_header(line: &str) -> Option<ParsedHunkHeader> {
  function write_hunk_header_raw (line 266) | fn write_hunk_header_raw(
  function write_line_of_code_with_optional_path_and_line_number (line 290) | pub fn write_line_of_code_with_optional_path_and_line_number(
  function paint_file_path_with_line_number (line 357) | fn paint_file_path_with_line_number(
  function write_to_output_buffer (line 393) | fn write_to_output_buffer(
  function test_parse_hunk_header (line 443) | fn test_parse_hunk_header() {
  function test_parse_hunk_header_with_omitted_hunk_lengths (line 454) | fn test_parse_hunk_header_with_omitted_hunk_lengths() {
  function test_parse_hunk_header_with_no_hunk_lengths (line 465) | fn test_parse_hunk_header_with_no_hunk_lengths() {
  function test_parse_hunk_header_added_file (line 471) | fn test_parse_hunk_header_added_file() {
  function test_parse_hunk_header_deleted_file (line 482) | fn test_parse_hunk_header_deleted_file() {
  function test_parse_hunk_header_merge (line 493) | fn test_parse_hunk_header_merge() {
  function test_parse_hunk_header_cthulhu (line 505) | fn test_parse_hunk_header_cthulhu() {
  function test_paint_file_path_with_line_number_default (line 518) | fn test_paint_file_path_with_line_number_default() {
  function test_paint_file_path_with_line_number_hyperlinks (line 538) | fn test_paint_file_path_with_line_number_hyperlinks() {
  function test_paint_file_path_with_line_number_empty (line 576) | fn test_paint_file_path_with_line_number_empty() {
  function test_paint_file_path_with_line_number_empty_hyperlinks (line 603) | fn test_paint_file_path_with_line_number_empty_hyperlinks() {
  function test_paint_file_path_with_line_number_empty_navigate (line 632) | fn test_paint_file_path_with_line_number_empty_navigate() {
  function test_not_a_hunk_header_is_handled_gracefully (line 658) | fn test_not_a_hunk_header_is_handled_gracefully() {
  constant GIT_LOG_OUTPUT_WITH_NOT_A_HUNK_HEADER (line 666) | const GIT_LOG_OUTPUT_WITH_NOT_A_HUNK_HEADER: &str = "\

FILE: src/handlers/merge_conflict.rs
  type MergeConflictCommit (line 15) | pub enum MergeConflictCommit {
  type MergeConflictCommits (line 21) | pub struct MergeConflictCommits<T> {
  type MergeConflictLines (line 27) | pub type MergeConflictLines = MergeConflictCommits<Vec<(String, State)>>;
    method new (line 277) | pub fn new() -> Self {
    method clear (line 285) | fn clear(&mut self) {
  type MergeConflictCommitNames (line 29) | pub type MergeConflictCommitNames = MergeConflictCommits<Option<String>>;
    method new (line 293) | pub fn new() -> Self {
  function handle_merge_conflict_line (line 32) | pub fn handle_merge_conflict_line(&mut self) -> std::io::Result<bool> {
  function enter_merge_conflict (line 79) | fn enter_merge_conflict(&mut self, merge_parents: &MergeParents) -> bool {
  function enter_ancestral (line 90) | fn enter_ancestral(&mut self, merge_parents: &MergeParents) -> bool {
  function enter_theirs (line 101) | fn enter_theirs(&mut self, merge_parents: &MergeParents) -> bool {
  function exit_merge_conflict (line 111) | fn exit_merge_conflict(&mut self, merge_parents: &MergeParents) -> std::...
  function store_line (line 121) | fn store_line(&mut self, commit: MergeConflictCommit, state: State) -> b...
  function paint_buffered_merge_conflict_lines (line 132) | fn paint_buffered_merge_conflict_lines(
  function write_diff_header (line 180) | fn write_diff_header(
  function write_merge_conflict_bar (line 211) | fn write_merge_conflict_bar(
  function parse_merge_marker (line 228) | fn parse_merge_marker<'a>(line: &'a str, marker: &str) -> Option<&'a str> {
  type Output (line 245) | type Output = T;
  function index (line 246) | fn index(&self, commit: MergeConflictCommit) -> &Self::Output {
  type Output (line 256) | type Output = T;
  function index (line 257) | fn index(&self, commit: &MergeConflictCommit) -> &Self::Output {
  function index_mut (line 267) | fn index_mut(&mut self, commit: MergeConflictCommit) -> &mut Self::Output {
  function test_toy_merge_conflict_no_context (line 308) | fn test_toy_merge_conflict_no_context() {
  function test_real_merge_conflict (line 324) | fn test_real_merge_conflict() {
  function test_real_merge_conflict_U0 (line 341) | fn test_real_merge_conflict_U0() {
  constant GIT_TOY_MERGE_CONFLICT_NO_CONTEXT (line 356) | const GIT_TOY_MERGE_CONFLICT_NO_CONTEXT: &str = "\
  constant GIT_MERGE_CONFLICT (line 370) | const GIT_MERGE_CONFLICT: &str = r#"\
  constant GIT_MERGE_CONFLICT_U0 (line 884) | const GIT_MERGE_CONFLICT_U0: &str = r#"\

FILE: src/handlers/mod.rs
  function handle_additional_cases (line 21) | pub fn handle_additional_cases(&mut self, to_state: State) -> std::io::R...

FILE: src/handlers/ripgrep_json.rs
  function parse_line (line 11) | pub fn parse_line(line: &str) -> Option<grep::GrepLine<'_>> {
  type RipGrepLine (line 91) | struct RipGrepLine {
  type RipGrepLineData (line 98) | struct RipGrepLineData {
  type RipGrepLineText (line 107) | struct RipGrepLineText {
  type RipGrepLineSubmatch (line 112) | struct RipGrepLineSubmatch {
  function test_syntax_in_rg_output_with_context (line 133) | fn test_syntax_in_rg_output_with_context() {
  function test_syntax_in_rg_output_no_context (line 154) | fn test_syntax_in_rg_output_no_context() {
  function test_deserialize (line 174) | fn test_deserialize() {
  function test_deserialize_2 (line 201) | fn test_deserialize_2() {

FILE: src/handlers/submodule.rs
  function test_submodule_log (line 8) | fn test_submodule_log(&self) -> bool {
  function handle_submodule_log_line (line 12) | pub fn handle_submodule_log_line(&mut self) -> std::io::Result<bool> {
  function test_submodule_short_line (line 20) | fn test_submodule_short_line(&self) -> bool {
  function handle_submodule_short_line (line 27) | pub fn handle_submodule_short_line(&mut self) -> std::io::Result<bool> {
  function get_submodule_short_commit (line 57) | pub fn get_submodule_short_commit(line: &str) -> Option<&str> {

FILE: src/main.rs
  function fatal (line 40) | pub fn fatal<T>(errmsg: T) -> !
  function main (line 60) | fn main() -> std::io::Result<()> {
  function run_app (line 80) | pub fn run_app(

FILE: src/minusplus.rs
  type MinusPlus (line 6) | pub struct MinusPlus<T> {
  type MinusPlusIndex (line 12) | pub enum MinusPlusIndex {
  type Output (line 20) | type Output = T;
  function index (line 21) | fn index(&self, side: MinusPlusIndex) -> &Self::Output {
  function index_mut (line 30) | fn index_mut(&mut self, side: MinusPlusIndex) -> &mut Self::Output {
  function new (line 39) | pub fn new(minus: T, plus: T) -> Self {
  method default (line 45) | fn default() -> Self {

FILE: src/options/get.rs
  function get_option_value (line 26) | pub fn get_option_value<T>(
  function get_themes (line 43) | pub fn get_themes(git_config: Option<git_config::GitConfig>) -> Vec<Stri...
  type GetOptionValue (line 60) | pub trait GetOptionValue {
    method get_option_value (line 61) | fn get_option_value(
    method get_provenanced_value_for_feature (line 100) | fn get_provenanced_value_for_feature(
  function _test_env_var_overrides_git_config_generic (line 142) | fn _test_env_var_overrides_git_config_generic(
  function test_env_var_overrides_git_config_simple_string (line 170) | fn test_env_var_overrides_git_config_simple_string() {
  function test_env_var_overrides_git_config_complex_string (line 186) | fn test_env_var_overrides_git_config_complex_string() {
  function test_env_var_overrides_git_config_option_string (line 202) | fn test_env_var_overrides_git_config_option_string() {
  function test_env_var_overrides_git_config_bool (line 218) | fn test_env_var_overrides_git_config_bool() {
  function test_env_var_overrides_git_config_int (line 234) | fn test_env_var_overrides_git_config_int() {
  function test_env_var_overrides_git_config_float (line 250) | fn test_env_var_overrides_git_config_float() {
  function test_delta_features_env_var (line 266) | fn test_delta_features_env_var() {
  function test_get_themes_from_config (line 313) | fn test_get_themes_from_config() {

FILE: src/options/option_value.rs
  type OptionValue (line 4) | pub enum OptionValue {
    method from (line 19) | fn from(value: bool) -> Self {
    method from (line 34) | fn from(value: f64) -> Self {
    method from (line 49) | fn from(value: Option<String>) -> Self {
    method from (line 64) | fn from(value: String) -> Self {
    method from (line 70) | fn from(value: &str) -> Self {
    method from (line 85) | fn from(value: usize) -> Self {
  type ProvenancedOptionValue (line 13) | pub enum ProvenancedOptionValue {
  function from (line 25) | fn from(value: OptionValue) -> Self {
  function from (line 40) | fn from(value: OptionValue) -> Self {
  function from (line 55) | fn from(value: OptionValue) -> Self {
  method from (line 76) | fn from(value: OptionValue) -> Self {
  function from (line 91) | fn from(value: OptionValue) -> Self {

FILE: src/options/set.rs
  function set_options (line 69) | pub fn set_options(
  function set__light__dark__syntax_theme__options (line 257) | fn set__light__dark__syntax_theme__options(
  function gather_features (line 342) | fn gather_features(
  function gather_features_recursively (line 430) | fn gather_features_recursively(
  function gather_builtin_features_from_flags_in_gitconfig (line 466) | fn gather_builtin_features_from_flags_in_gitconfig(
  function gather_builtin_features_recursively (line 486) | fn gather_builtin_features_recursively(
  function split_feature_string (line 529) | fn split_feature_string(features: &str) -> impl Iterator<Item = &str> {
  type Err (line 534) | type Err = Error;
  method from_str (line 535) | fn from_str(s: &str) -> Result<Self, Self::Err> {
  function parse_paging_mode (line 548) | fn parse_paging_mode(paging_mode_string: &str) -> PagingMode {
  function parse_width_specifier (line 561) | fn parse_width_specifier(width_arg: &str, terminal_width: usize) -> Resu...
  function set_widths_and_isatty (line 605) | fn set_widths_and_isatty(opt: &mut cli::Opt) {
  function set_true_color (line 642) | fn set_true_color(opt: &mut cli::Opt) {
  function is_truecolor_terminal (line 664) | fn is_truecolor_terminal(env: &DeltaEnv) -> bool {
  constant TERMINAL_WIDTH_IN_TESTS (line 679) | pub const TERMINAL_WIDTH_IN_TESTS: usize = 43;
  function test_options_can_be_set_in_git_config (line 682) | fn test_options_can_be_set_in_git_config() {
  function test_width_in_git_config_is_honored (line 810) | fn test_width_in_git_config_is_honored() {
  function test_parse_width_specifier (line 832) | fn test_parse_width_specifier() {

FILE: src/options/theme.rs
  function set__color_mode__syntax_theme__syntax_set (line 27) | pub fn set__color_mode__syntax_theme__syntax_set(opt: &mut cli::Opt, ass...
  function is_light_syntax_theme (line 40) | pub fn is_light_syntax_theme(theme: &str) -> bool {
  function color_mode_from_syntax_theme (line 44) | pub fn color_mode_from_syntax_theme(theme: &str) -> ColorMode {
  constant LIGHT_SYNTAX_THEMES (line 52) | const LIGHT_SYNTAX_THEMES: [&str; 7] = [
  constant DEFAULT_LIGHT_SYNTAX_THEME (line 62) | const DEFAULT_LIGHT_SYNTAX_THEME: &str = "GitHub";
  constant DEFAULT_DARK_SYNTAX_THEME (line 63) | const DEFAULT_DARK_SYNTAX_THEME: &str = "Monokai Extended";
  function is_no_syntax_highlighting_syntax_theme_name (line 65) | fn is_no_syntax_highlighting_syntax_theme_name(theme_name: &str) -> bool {
  function get_color_mode_and_syntax_theme_name (line 71) | fn get_color_mode_and_syntax_theme_name(
  function get_color_mode (line 83) | fn get_color_mode(opt: &cli::Opt) -> Option<ColorMode> {
  function should_detect_color_mode (line 96) | fn should_detect_color_mode(opt: &cli::Opt) -> bool {
  function detect_color_mode (line 105) | fn detect_color_mode() -> Option<ColorMode> {
  method from (line 112) | fn from(value: terminal_colorsaurus::ColorScheme) -> Self {
  function detect_color_mode (line 121) | fn detect_color_mode() -> Option<ColorMode> {
  function test_syntax_theme_selection (line 133) | fn test_syntax_theme_selection() {

FILE: src/paint.rs
  type LineSections (line 24) | pub type LineSections<'a, S> = Vec<(S, &'a str)>;
  type Painter (line 26) | pub struct Painter<'p> {
  type BgFillMethod (line 44) | pub enum BgFillMethod {
  type BgShouldFill (line 54) | pub enum BgShouldFill {
  method default (line 60) | fn default() -> Self {
  type StyleSectionSpecifier (line 66) | pub enum StyleSectionSpecifier<'l> {
  function new (line 72) | pub fn new(writer: &'p mut dyn Write, config: &'p config::Config) -> Self {
  function set_syntax (line 105) | pub fn set_syntax(&mut self, filename: Option<&str>) {
  function get_syntax (line 113) | fn get_syntax<'a>(
  function set_highlighter (line 151) | pub fn set_highlighter(&mut self) {
  function paint_buffered_minus_and_plus_lines (line 157) | pub fn paint_buffered_minus_and_plus_lines(&mut self) {
  function paint_zero_line (line 172) | pub fn paint_zero_line(&mut self, line: &str, state: State) {
  function paint_lines (line 215) | pub fn paint_lines<'a>(
  function syntax_highlight_and_paint_line (line 286) | pub fn syntax_highlight_and_paint_line(
  function get_should_right_fill_background_color_and_fill_style (line 315) | pub fn get_should_right_fill_background_color_and_fill_style(
  function right_fill_background_color (line 373) | pub fn right_fill_background_color(line: &mut String, fill_style: Style) {
  function mark_empty_line (line 391) | pub fn mark_empty_line(empty_line_style: &Style, line: &mut String, mark...
  function paint_line (line 401) | pub fn paint_line(
  function emit (line 461) | pub fn emit(&mut self) -> std::io::Result<()> {
  function should_compute_syntax_highlighting (line 467) | pub fn should_compute_syntax_highlighting(state: &State, config: &config...
  function update_diff_style_sections (line 524) | fn update_diff_style_sections<'a>(
  function prepare (line 585) | pub fn prepare(line: &str, prefix_length: usize, config: &config::Config...
  function prepare_raw_line (line 600) | pub fn prepare_raw_line(raw_line: &str, prefix_length: usize, config: &c...
  function paint_minus_and_plus_lines (line 606) | pub fn paint_minus_and_plus_lines(
  function get_syntax_style_sections_for_lines (line 685) | pub fn get_syntax_style_sections_for_lines<'a>(
  function get_diff_style_sections (line 746) | fn get_diff_style_sections<'a>(
  function painted_prefix (line 780) | fn painted_prefix(state: State, config: &config::Config) -> Option<ANSIS...
  function parse_style_sections (line 807) | pub fn parse_style_sections<'a>(
  function paint_file_path_with_line_number (line 831) | pub fn paint_file_path_with_line_number(
  function style_sections_contain_more_than_one_style (line 896) | fn style_sections_contain_more_than_one_style(sections: &[(Style, &str)]...
  function superimpose_style_sections (line 919) | pub fn superimpose_style_sections(
  function explode (line 937) | fn explode<T>(style_sections: &[(T, &str)]) -> Vec<(T, char)>
  function superimpose (line 951) | fn superimpose(
  function coalesce (line 967) | fn coalesce(
  function test_superimpose_style_sections_1 (line 1078) | fn test_superimpose_style_sections_1() {
  function test_superimpose_style_sections_2 (line 1089) | fn test_superimpose_style_sections_2() {
  function test_superimpose_style_sections_3 (line 1103) | fn test_superimpose_style_sections_3() {
  function test_explode (line 1114) | fn test_explode() {
  function test_superimpose (line 1123) | fn test_superimpose() {

FILE: src/parse_style.rs
  method from_str (line 14) | pub fn from_str(
  method from_git_str (line 38) | pub fn from_git_str(git_style_string: &str) -> Self {
  method from_str_with_handling_of_special_decoration_attributes (line 43) | pub fn from_str_with_handling_of_special_decoration_attributes(
  method from_str (line 79) | pub fn from_str(style_string: &str, true_color: bool, git_config: Option...
  method apply_special_decoration_attributes (line 111) | fn apply_special_decoration_attributes(
  function parse_ansi_term_style (line 146) | fn parse_ansi_term_style(
  function extract_special_decoration_attributes (line 234) | fn extract_special_decoration_attributes(style_string: &str) -> (Decorat...
  function extract_special_decoration_attributes_from_non_decoration_style_string (line 238) | fn extract_special_decoration_attributes_from_non_decoration_style_string(
  function _extract_special_decoration_attributes (line 247) | fn _extract_special_decoration_attributes(
  function test_parse_ansi_term_style (line 278) | fn test_parse_ansi_term_style() {
  function test_parse_ansi_term_style_with_special_syntax_color (line 327) | fn test_parse_ansi_term_style_with_special_syntax_color() {
  function test_parse_ansi_term_style_with_special_omit_attribute (line 364) | fn test_parse_ansi_term_style_with_special_omit_attribute() {
  function test_parse_ansi_term_style_with_special_raw_attribute (line 387) | fn test_parse_ansi_term_style_with_special_raw_attribute() {
  function test_extract_special_decoration_attribute (line 410) | fn test_extract_special_decoration_attribute() {
  function test_decoration_style_from_str_empty_string (line 453) | fn test_decoration_style_from_str_empty_string() {
  function test_decoration_style_from_str (line 461) | fn test_decoration_style_from_str() {
  function test_style_from_str (line 474) | fn test_style_from_str() {
  function test_style_from_str_raw_with_box (line 499) | fn test_style_from_str_raw_with_box() {
  function test_style_from_str_decoration_style_only (line 514) | fn test_style_from_str_decoration_style_only() {
  function test_style_from_str_with_handling_of_special_decoration_attributes (line 532) | fn test_style_from_str_with_handling_of_special_decoration_attributes() {
  function test_style_from_str_with_handling_of_special_decoration_attributes_raw_with_box (line 556) | fn test_style_from_str_with_handling_of_special_decoration_attributes_ra...

FILE: src/parse_styles.rs
  type StyleReference (line 10) | enum StyleReference {
  function is_style_reference (line 15) | fn is_style_reference(style_string: &str) -> bool {
  function parse_styles (line 19) | pub fn parse_styles(opt: &cli::Opt) -> HashMap<String, Style> {
  function parse_styles_map (line 43) | pub fn parse_styles_map(opt: &cli::Opt) -> Option<HashMap<style::AnsiTer...
  function resolve_style_references (line 63) | fn resolve_style_references(
  function parse_as_style_or_reference_to_git_config (line 101) | fn parse_as_style_or_reference_to_git_config(style_string: &str, opt: &c...
  function parse_as_reference_to_git_config (line 108) | fn parse_as_reference_to_git_config(style_string: &str, opt: &cli::Opt) ...
  function make_hunk_styles (line 124) | fn make_hunk_styles(opt: &cli::Opt, styles: &mut HashMap<&str, StyleRefe...
  function make_line_number_styles (line 252) | fn make_line_number_styles(opt: &cli::Opt, styles: &mut HashMap<&str, St...
  function make_commit_file_hunk_header_styles (line 303) | fn make_commit_file_hunk_header_styles(opt: &cli::Opt, styles: &mut Hash...
  function make_blame_styles (line 403) | fn make_blame_styles(opt: &cli::Opt, styles: &mut HashMap<&str, StyleRef...
  function make_grep_styles (line 430) | fn make_grep_styles(opt: &cli::Opt, styles: &mut HashMap<&str, StyleRefe...
  function make_merge_conflict_styles (line 479) | fn make_merge_conflict_styles(opt: &cli::Opt, styles: &mut HashMap<&str,...
  function make_misc_styles (line 502) | fn make_misc_styles(opt: &cli::Opt, styles: &mut HashMap<&str, StyleRefe...
  function style_from_str (line 539) | fn style_from_str(
  function style_from_str_with_handling_of_special_decoration_attributes (line 559) | fn style_from_str_with_handling_of_special_decoration_attributes(
  function resolve_style_references (line 586) | fn resolve_style_references(edges: HashMap<&str, StyleReference>) -> Has...
  function test_resolve_style_references_1 (line 592) | fn test_resolve_style_references_1() {
  function test_resolve_style_references_2 (line 617) | fn test_resolve_style_references_2() {
  function test_resolve_style_references_cycle (line 658) | fn test_resolve_style_references_cycle() {

FILE: src/style.rs
  type Style (line 13) | pub struct Style {
    method fmt (line 24) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
    method new (line 72) | pub fn new() -> Self {
    method from_colors (line 83) | pub fn from_colors(
    method paint (line 97) | pub fn paint<'a, I, S: 'a + ToOwned + ?Sized>(
    method get_background_color (line 108) | pub fn get_background_color(&self) -> Option<ansi_term::Color> {
    method is_applied_to (line 116) | pub fn is_applied_to(&self, s: &str) -> bool {
    method get_matching_substring (line 124) | pub fn get_matching_substring<'a>(&self, s: &'a str) -> Option<&'a str> {
    method to_painted_string (line 133) | pub fn to_painted_string(self) -> ansi_term::ANSIGenericString<'static...
    method fmt (line 156) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
  type DecorationStyle (line 59) | pub enum DecorationStyle {
  function paint_color_string (line 139) | pub fn paint_color_string<'a>(
  function ansi_term_style_equality (line 201) | pub fn ansi_term_style_equality(a: ansi_term::Style, b: ansi_term::Style...
  type AnsiTermStyleEqualityKey (line 224) | pub struct AnsiTermStyleEqualityKey {
    method fmt (line 276) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
  method eq (line 231) | fn eq(&self, other: &Self) -> bool {
  method hash (line 250) | fn hash<H: Hasher>(&self, state: &mut H) {
  function ansi_term_style_equality_key (line 257) | pub fn ansi_term_style_equality_key(style: ansi_term::Style) -> AnsiTerm...
  function ansi_term_color_equality (line 304) | fn ansi_term_color_equality(a: Option<ansi_term::Color>, b: Option<ansi_...
  function ansi_term_16_color_equality (line 313) | fn ansi_term_16_color_equality(a: ansi_term::Color, b: ansi_term::Color)...
  function ansi_term_color_equality_key (line 327) | fn ansi_term_color_equality_key(color: ansi_term::Color) -> (u8, u8, u8,...
  function line_has_style_other_than (line 358) | pub fn line_has_style_other_than(line: &str, styles: &[Style]) -> bool {
  function test_parse_git_style_string_and_ansi_code_iterator (line 416) | fn test_parse_git_style_string_and_ansi_code_iterator() {
  function test_is_applied_to_negative_assertion (line 423) | fn test_is_applied_to_negative_assertion() {
  function test_git_default_styles (line 430) | fn test_git_default_styles() {
  function test_line_has_style_other_than (line 441) | fn test_line_has_style_other_than() {
  function test_style_compact_debug_fmt (line 479) | fn test_style_compact_debug_fmt() {

FILE: src/subcommands/diff.rs
  function build_diff_cmd (line 12) | pub fn build_diff_cmd(
  function diff_args_set_unified_context (line 77) | fn diff_args_set_unified_context<I, S>(args: I) -> bool
  function test_unified_diff_arg_is_detected_in_diff_args (line 116) | fn test_unified_diff_arg_is_detected_in_diff_args(
  type ExpectDiff (line 123) | enum ExpectDiff {
  function test_diff_real_files (line 134) | fn test_diff_real_files(

FILE: src/subcommands/external.rs
  constant RG (line 6) | const RG: &str = "rg";
  constant GIT (line 7) | const GIT: &str = "git";
  constant SUBCOMMANDS (line 8) | pub const SUBCOMMANDS: &[&str] = &[RG, GIT];
  type SubCmdKind (line 11) | pub enum SubCmdKind {
    method fmt (line 20) | fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Re...
    method fmt (line 35) | fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Re...
  type SubCommand (line 49) | pub struct SubCommand {
    method new (line 55) | pub fn new(kind: SubCmdKind, args: Vec<OsString>) -> Self {
    method none (line 59) | pub fn none() -> Self {
    method is_none (line 66) | pub fn is_none(&self) -> bool {
  function extract (line 75) | pub fn extract(args: &[OsString], orig_error: Error) -> (ArgMatches, Sub...
  function test_subcmd_kind_formatter (line 148) | fn test_subcmd_kind_formatter() {
  function just_delta_argument_error (line 165) | fn just_delta_argument_error() {
  function subcommand_found_but_delta_argument_error (line 181) | fn subcommand_found_but_delta_argument_error() {
  function subcommand_rg (line 197) | fn subcommand_rg() {
  function subcommand_git_cat_file (line 249) | fn subcommand_git_cat_file() {

FILE: src/subcommands/generate_completion.rs
  function generate_completion_file (line 6) | pub fn generate_completion_file(shell: Shell) -> std::io::Result<()> {

FILE: src/subcommands/list_syntax_themes.rs
  function list_syntax_themes (line 8) | pub fn list_syntax_themes() -> std::io::Result<()> {
  function _list_syntax_themes_for_humans (line 18) | pub fn _list_syntax_themes_for_humans(writer: &mut dyn Write) -> std::io...
  function _list_syntax_themes_for_machines (line 36) | pub fn _list_syntax_themes_for_machines(writer: &mut dyn Write) -> std::...
  function test_list_syntax_themes_for_humans (line 60) | fn test_list_syntax_themes_for_humans() {
  function test_list_syntax_themes_for_machines (line 73) | fn test_list_syntax_themes_for_machines() {

FILE: src/subcommands/parse_ansi.rs
  function parse_ansi (line 4) | pub fn parse_ansi() -> std::io::Result<()> {

FILE: src/subcommands/sample_diff.rs
  constant DIFF (line 1) | pub const DIFF: &[u8] = r#"

FILE: src/subcommands/show_colors.rs
  function show_colors (line 13) | pub fn show_colors() -> std::io::Result<()> {

FILE: src/subcommands/show_config.rs
  function show_config (line 13) | pub fn show_config(config: &config::Config, writer: &mut dyn Write) -> s...
  function format_option_value (line 170) | fn format_option_value<S>(s: S) -> String
  function test_show_config (line 195) | fn test_show_config() {

FILE: src/subcommands/show_syntax_themes.rs
  function show_syntax_themes (line 13) | pub fn show_syntax_themes() -> std::io::Result<()> {
  function _show_syntax_themes (line 55) | fn _show_syntax_themes(
  function test_show_syntax_themes (line 121) | fn test_show_syntax_themes() {

FILE: src/subcommands/show_themes.rs
  function show_themes (line 12) | pub fn show_themes(dark: bool, light: bool, color_mode: ColorMode) -> st...

FILE: src/tests/ansi_test_utils.rs
  function assert_line_has_style (line 14) | pub fn assert_line_has_style(
  function assert_line_contain_substring_style (line 35) | pub fn assert_line_contain_substring_style(
  function assert_line_does_not_contain_substring_style (line 58) | pub fn assert_line_does_not_contain_substring_style(
  function assert_line_does_not_have_style (line 75) | pub fn assert_line_does_not_have_style(
  function assert_line_has_4_bit_color_style (line 92) | pub fn assert_line_has_4_bit_color_style(
  function assert_line_has_no_color (line 109) | pub fn assert_line_has_no_color(output: &str, line_number: usize, expect...
  function assert_line_has_syntax_highlighted_substring (line 120) | pub fn assert_line_has_syntax_highlighted_substring(
  function assert_has_color_other_than_plus_color (line 142) | pub fn assert_has_color_other_than_plus_color(string: &str, config: &Con...
  function assert_has_plus_color_only (line 149) | pub fn assert_has_plus_color_only(string: &str, config: &Config) {
  function get_color_variants (line 156) | pub fn get_color_variants(string: &str, config: &Config) -> (String, Str...
  function paint_line (line 168) | pub fn paint_line(
  function _line_extract (line 204) | fn _line_extract<'a>(output: &'a str, line_number: usize, expected_prefi...
  function _line_get_substring_matching_style (line 210) | fn _line_get_substring_matching_style<'a>(
  function _line_has_style (line 228) | fn _line_has_style(
  function ansi_term_fixed_foreground_to_4_bit_color (line 253) | fn ansi_term_fixed_foreground_to_4_bit_color(color: ansi_term::Color) ->...

FILE: src/tests/integration_test_utils.rs
  function make_options_from_args_and_git_config (line 20) | pub fn make_options_from_args_and_git_config(
  function make_options_from_args_and_git_config_with_custom_env (line 34) | pub fn make_options_from_args_and_git_config_with_custom_env(
  function make_options_from_args_and_git_config_honoring_env_var_with_custom_env (line 43) | pub fn make_options_from_args_and_git_config_honoring_env_var_with_custo...
  function _make_options_from_args_and_git_config (line 52) | fn _make_options_from_args_and_git_config(
  function make_options_from_args (line 72) | pub fn make_options_from_args(args: &[&str]) -> cli::Opt {
  function make_config_from_args_and_git_config (line 77) | pub fn make_config_from_args_and_git_config(
  function make_config_from_args (line 89) | pub fn make_config_from_args(args: &[&str]) -> config::Config {
  function make_git_config (line 93) | pub fn make_git_config(
  function get_line_of_code_from_delta (line 105) | pub fn get_line_of_code_from_delta(
  function assert_lines_match_after_skip (line 125) | pub fn assert_lines_match_after_skip(skip: usize, expected: &str, have: ...
  function assert_lines_match (line 163) | pub fn assert_lines_match(expected: &str, have: &str) {
  function delineated_string (line 167) | pub fn delineated_string(txt: &str) -> String {
  type DeltaTest (line 174) | pub struct DeltaTest<'a> {
  function with_args (line 181) | pub fn with_args(args: &[&str]) -> Self {
  function with_config (line 189) | pub fn with_config(config: &'a config::Config) -> Self {
  function set_config (line 197) | pub fn set_config<F>(mut self, f: F) -> Self
  function with_calling_process (line 207) | pub fn with_calling_process(mut self, command: &str) -> Self {
  function explain_ansi (line 212) | pub fn explain_ansi(mut self) -> Self {
  function with_input (line 217) | pub fn with_input(&self, input: &str) -> DeltaTestOutput {
  type DeltaTestOutput (line 233) | pub struct DeltaTestOutput {
    method inspect (line 242) | pub fn inspect(self) -> Self {
    method inspect_raw (line 249) | pub fn inspect_raw(self) -> Self {
    method expect_after_skip (line 254) | pub fn expect_after_skip(self, skip: usize, expected: &str) -> Self {
    method expect (line 259) | pub fn expect(self, expected: &str) -> Self {
    method expect_after_header (line 263) | pub fn expect_after_header(self, expected: &str) -> Self {
    method skip_header (line 267) | pub fn skip_header(self) -> String {
    method expect_contains (line 271) | pub fn expect_contains(self, expected: &str) -> Self {
    method expect_raw_contains (line 281) | pub fn expect_raw_contains(self, expected: &str) -> Self {
    method expect_contains_once (line 291) | pub fn expect_contains_once(self, expected: &str) -> Self {
  function run_delta (line 302) | pub fn run_delta(input: &str, config: &config::Config) -> String {
  function test_lines_match_ok (line 318) | fn test_lines_match_ok() {
  function test_lines_match_no_nl (line 351) | fn test_lines_match_no_nl() {
  function test_lines_match_iter_not_consumed (line 359) | fn test_lines_match_iter_not_consumed() {
  function test_lines_match_no_indent_mark_1 (line 369) | fn test_lines_match_no_indent_mark_1() {
  function test_lines_match_no_indent_mark_2 (line 379) | fn test_lines_match_no_indent_mark_2() {
  function test_delta_test (line 388) | fn test_delta_test() {

FILE: src/tests/mod.rs
  constant TESTING (line 7) | pub const TESTING: bool = false;
  constant TESTING (line 10) | pub const TESTING: bool = true;
  function am_testing (line 14) | fn am_testing() {

FILE: src/tests/test_example_diffs.rs
  function test_added_file (line 14) | fn test_added_file() {
  function test_added_empty_file (line 21) | fn test_added_empty_file() {
  function test_added_file_directory_path_containing_space (line 28) | fn test_added_file_directory_path_containing_space() {
  function test_renamed_file (line 36) | fn test_renamed_file() {
  function test_copied_file (line 43) | fn test_copied_file() {
  function test_renamed_file_with_changes (line 50) | fn test_renamed_file_with_changes() {
  function test_recognized_file_type (line 60) | fn test_recognized_file_type() {
  function test_unrecognized_file_type_with_syntax_theme (line 73) | fn test_unrecognized_file_type_with_syntax_theme() {
  function test_unrecognized_file_type_no_syntax_theme (line 84) | fn test_unrecognized_file_type_no_syntax_theme() {
  function test_default_language_is_used_for_syntax_highlighting (line 100) | fn test_default_language_is_used_for_syntax_highlighting() {
  function test_default_language_is_not_used_when_other_language_is_detected (line 122) | fn test_default_language_is_not_used_when_other_language_is_detected() {
  function test_full_filename_used_to_detect_language (line 142) | fn test_full_filename_used_to_detect_language() {
  function test_diff_unified_two_files (line 173) | fn test_diff_unified_two_files() {
  function test_diff_unified_two_directories (line 189) | fn test_diff_unified_two_directories() {
  function test_diff_unified_concatenated (line 212) | fn test_diff_unified_concatenated() {
  function test_delta_ignores_non_diff_input (line 222) | fn test_delta_ignores_non_diff_input() {
  function test_certain_bugs_are_not_present (line 230) | fn test_certain_bugs_are_not_present() {
  function test_delta_paints_diff_when_there_is_unrecognized_initial_content (line 244) | fn test_delta_paints_diff_when_there_is_unrecognized_initial_content() {
  function test_diff_with_merge_conflict_is_not_truncated (line 257) | fn test_diff_with_merge_conflict_is_not_truncated() {
  function test_diff_with_merge_conflict_is_passed_on_unchanged_under_raw (line 264) | fn test_diff_with_merge_conflict_is_passed_on_unchanged_under_raw() {
  function test_simple_dirty_submodule_diff (line 271) | fn test_simple_dirty_submodule_diff() {
  function test_submodule_diff_log (line 285) | fn test_submodule_diff_log() {
  function test_submodule_contains_untracked_content (line 295) | fn test_submodule_contains_untracked_content() {
  function test_triple_dash_at_beginning_of_line_in_code (line 304) | fn test_triple_dash_at_beginning_of_line_in_code() {
  function test_binary_files_differ (line 313) | fn test_binary_files_differ() {
  function test_binary_file_added (line 326) | fn test_binary_file_added() {
  function test_binary_file_removed (line 338) | fn test_binary_file_removed() {
  function test_binary_files_differ_after_other (line 350) | fn test_binary_files_differ_after_other() {
  function test_diff_in_diff (line 366) | fn test_diff_in_diff() {
  function test_standalone_diff_files_are_identical (line 375) | fn test_standalone_diff_files_are_identical() {
  function test_standalone_diff_binary_files_differ (line 383) | fn test_standalone_diff_binary_files_differ() {
  function test_diff_no_index_binary_files_differ (line 391) | fn test_diff_no_index_binary_files_differ() {
  function test_commit_style_raw_no_decoration (line 401) | fn test_commit_style_raw_no_decoration() {
  function test_commit_style_colored_input_color_is_stripped_under_normal (line 422) | fn test_commit_style_colored_input_color_is_stripped_under_normal() {
  function test_commit_style_colored_input_color_is_preserved_under_raw (line 441) | fn test_commit_style_colored_input_color_is_preserved_under_raw() {
  function test_orphan_carriage_return_is_stripped (line 462) | fn test_orphan_carriage_return_is_stripped() {
  function test_commit_decoration_style_omit (line 472) | fn test_commit_decoration_style_omit() {
  function test_commit_decoration_style_empty_string (line 482) | fn test_commit_decoration_style_empty_string() {
  function _do_test_commit_style_no_decoration (line 491) | fn _do_test_commit_style_no_decoration(args: &[&str]) {
  function test_commit_style_omit (line 515) | fn test_commit_style_omit() {
  function test_commit_style_box (line 527) | fn test_commit_style_box() {
  function test_commit_style_box_ul (line 537) | fn test_commit_style_box_ul() {
  function test_commit_style_box_ol (line 549) | fn test_commit_style_box_ol() {
  function _do_test_commit_style_box (line 558) | fn _do_test_commit_style_box(args: &[&str]) {
  function _do_test_commit_style_box_ul (line 592) | fn _do_test_commit_style_box_ul(args: &[&str]) {
  function _do_test_commit_style_box_ol (line 625) | fn _do_test_commit_style_box_ol(args: &[&str]) {
  function test_commit_style_box_raw (line 660) | fn test_commit_style_box_raw() {
  function test_commit_style_underline (line 685) | fn test_commit_style_underline() {
  function _do_test_commit_style_underline (line 694) | fn _do_test_commit_style_underline(args: &[&str]) {
  function test_file_style_raw_no_decoration (line 720) | fn test_file_style_raw_no_decoration() {
  function test_file_style_colored_input_color_is_stripped_under_normal (line 750) | fn test_file_style_colored_input_color_is_stripped_under_normal() {
  function test_file_style_colored_input_color_is_preserved_under_raw (line 765) | fn test_file_style_colored_input_color_is_preserved_under_raw() {
  function test_file_decoration_style_omit (line 790) | fn test_file_decoration_style_omit() {
  function test_file_decoration_style_empty_string (line 800) | fn test_file_decoration_style_empty_string() {
  function _do_test_file_style_no_decoration (line 809) | fn _do_test_file_style_no_decoration(args: &[&str]) {
  function test_file_style_omit (line 824) | fn test_file_style_omit() {
  function test_file_style_box (line 831) | fn test_file_style_box() {
  function test_file_style_box_ul (line 841) | fn test_file_style_box_ul() {
  function test_file_style_box_ol (line 852) | fn test_file_style_box_ol() {
  function _do_test_file_style_box (line 861) | fn _do_test_file_style_box(args: &[&str]) {
  function _do_test_file_style_box_ul (line 877) | fn _do_test_file_style_box_ul(args: &[&str]) {
  function _do_test_file_style_box_ol (line 892) | fn _do_test_file_style_box_ol(args: &[&str]) {
  function test_file_style_box_raw (line 909) | fn test_file_style_box_raw() {
  function test_file_style_underline (line 927) | fn test_file_style_underline() {
  function _do_test_file_style_underline (line 936) | fn _do_test_file_style_underline(args: &[&str]) {
  function test_hunk_header_style_raw_no_decoration (line 950) | fn test_hunk_header_style_raw_no_decoration() {
  function test_hunk_header_style_raw_no_decoration_with_line_numbers (line 967) | fn test_hunk_header_style_raw_no_decoration_with_line_numbers() {
  function test_color_only_output_is_in_one_to_one_correspondence_with_input (line 993) | fn test_color_only_output_is_in_one_to_one_correspondence_with_input() {
  function _do_test_output_is_in_one_to_one_correspondence_with_input (line 1090) | fn _do_test_output_is_in_one_to_one_correspondence_with_input(args: &[&s...
  function test_file_style_with_color_only_has_style (line 1117) | fn test_file_style_with_color_only_has_style() {
  function test_hunk_header_style_with_color_only_has_style (line 1134) | fn test_hunk_header_style_with_color_only_has_style() {
  function test_hunk_header_style_with_file (line 1154) | fn test_hunk_header_style_with_file() {
  function test_hunk_header_style_with_file_no_frag (line 1183) | fn test_hunk_header_style_with_file_no_frag() {
  function test_commit_style_with_color_only_has_style (line 1206) | fn test_commit_style_with_color_only_has_style() {
  function test_hunk_header_omit_code_fragment (line 1226) | fn test_hunk_header_omit_code_fragment() {
  function test_hunk_header_style_colored_input_color_is_stripped_under_normal (line 1241) | fn test_hunk_header_style_colored_input_color_is_stripped_under_normal() {
  function test_hunk_header_style_colored_input_color_is_preserved_under_raw (line 1260) | fn test_hunk_header_style_colored_input_color_is_preserved_under_raw() {
  function test_hunk_header_decoration_style_omit (line 1281) | fn test_hunk_header_decoration_style_omit() {
  function test_hunk_header_decoration_style_none (line 1286) | fn test_hunk_header_decoration_style_none() {
  function test_hunk_header_decoration_style_empty_string (line 1291) | fn test_hunk_header_decoration_style_empty_string() {
  function _do_test_hunk_header_style_no_decoration (line 1295) | fn _do_test_hunk_header_style_no_decoration(args: &[&str]) {
  function test_hunk_header_style_omit (line 1309) | fn test_hunk_header_style_omit() {
  function test_hunk_header_style_empty_string (line 1318) | fn test_hunk_header_style_empty_string() {
  function test_hunk_header_style_none (line 1323) | fn test_hunk_header_style_none() {
  function _do_test_hunk_header_empty_style (line 1327) | fn _do_test_hunk_header_empty_style(args: &[&str]) {
  function test_hunk_header_style_box (line 1335) | fn test_hunk_header_style_box() {
  function test_hunk_header_style_box_line_number (line 1340) | fn test_hunk_header_style_box_line_number() {
  function test_hunk_header_style_box_file_line_number (line 1350) | fn test_hunk_header_style_box_file_line_number() {
  function test_hunk_header_style_box_file (line 1360) | fn test_hunk_header_style_box_file() {
  function _do_test_hunk_header_style_box (line 1369) | fn _do_test_hunk_header_style_box(args: &[&str]) {
  function _do_test_hunk_header_style_box_file (line 1396) | fn _do_test_hunk_header_style_box_file(args: &[&str]) {
  function _do_test_hunk_header_style_box_file_line_number (line 1423) | fn _do_test_hunk_header_style_box_file_line_number(args: &[&str]) {
  function test_hunk_header_style_box_raw (line 1451) | fn test_hunk_header_style_box_raw() {
  function test_hunk_header_style_underline (line 1474) | fn test_hunk_header_style_underline() {
  function _do_test_hunk_header_style_underline (line 1481) | fn _do_test_hunk_header_style_underline(args: &[&str]) {
  function test_hunk_header_style_box_with_syntax_highlighting (line 1500) | fn test_hunk_header_style_box_with_syntax_highlighting() {
  function test_removed_empty_line_highlight (line 1537) | fn test_removed_empty_line_highlight() {
  function _do_test_removed_empty_line_highlight (line 1549) | fn _do_test_removed_empty_line_highlight(
  function test_added_empty_line_highlight (line 1565) | fn test_added_empty_line_highlight() {
  function _do_test_added_empty_line_highlight (line 1577) | fn _do_test_added_empty_line_highlight(
  function _do_test_empty_line_highlight (line 1592) | fn _do_test_empty_line_highlight(
  function test_whitespace_error (line 1623) | fn test_whitespace_error() {
  function test_whitespace_unrelated_edit_text_error (line 1642) | fn test_whitespace_unrelated_edit_text_error() {
  function test_whitespace_edit_text_error (line 1661) | fn test_whitespace_edit_text_error() {
  function test_whitespace_added_empty_line_error (line 1679) | fn test_whitespace_added_empty_line_error() {
  function test_whitespace_after_text_error (line 1700) | fn test_whitespace_after_text_error() {
  function test_whitespace_complex_error (line 1730) | fn test_whitespace_complex_error() {
  function test_added_empty_line_is_not_whitespace_error (line 1818) | fn test_added_empty_line_is_not_whitespace_error() {
  function test_single_character_line_is_not_whitespace_error (line 1831) | fn test_single_character_line_is_not_whitespace_error() {
  function test_color_only_mode (line 1844) | fn test_color_only_mode() {
  function test_git_diff_is_unchanged_under_color_only (line 1859) | fn test_git_diff_is_unchanged_under_color_only() {
  function test_git_diff_U0_is_unchanged_under_color_only (line 1869) | fn test_git_diff_U0_is_unchanged_under_color_only() {
  function test_git_diff_binary_is_unchanged_under_color_only (line 1878) | fn test_git_diff_binary_is_unchanged_under_color_only() {
  function test_keep_plus_minus_markers_under_inspect_raw_lines (line 1888) | fn test_keep_plus_minus_markers_under_inspect_raw_lines() {
  function test_file_mode_change_with_rename (line 1904) | fn test_file_mode_change_with_rename() {
  function test_file_mode_change_gain_executable_bit (line 1913) | fn test_file_mode_change_gain_executable_bit() {
  function test_file_mode_change_lose_executable_bit (line 1920) | fn test_file_mode_change_lose_executable_bit() {
  function test_file_mode_change_unexpected_bits (line 1927) | fn test_file_mode_change_unexpected_bits() {
  function test_file_deleted_without_preimage (line 1934) | fn test_file_deleted_without_preimage() {
  function test_files_deleted_without_preimage (line 1941) | fn test_files_deleted_without_preimage() {
  function test_file_mode_change_with_diff (line 1949) | fn test_file_mode_change_with_diff() {
  function test_hyperlinks_commit_link_format (line 1965) | fn test_hyperlinks_commit_link_format() {
  function test_filenames_with_spaces (line 1984) | fn test_filenames_with_spaces() {
  function test_file_removal_in_log_output (line 1991) | fn test_file_removal_in_log_output() {
  function test_lines_with_syntax_width_limit (line 1998) | fn test_lines_with_syntax_width_limit() {
  function test_lines_with_syntax_width_limit_wrapping (line 2036) | fn test_lines_with_syntax_width_limit_wrapping() {
  function test_lines_with_syntax_width_unicode (line 2086) | fn test_lines_with_syntax_width_unicode() {
  function test_color_only_diff_filter_zero_style_bg (line 2141) | fn test_color_only_diff_filter_zero_style_bg() {
  constant GIT_DIFF_OF_WIDTH_81 (line 2160) | const GIT_DIFF_OF_WIDTH_81: &str = r#"
  constant GIT_DIFF_SINGLE_HUNK (line 2170) | const GIT_DIFF_SINGLE_HUNK: &str = "\
  constant GIT_DIFF_SINGLE_HUNK_NO_FRAG (line 2197) | const GIT_DIFF_SINGLE_HUNK_NO_FRAG: &str = "\
  constant GIT_DIFF_SINGLE_HUNK_WITH_ANSI_ESCAPE_SEQUENCES (line 2209) | const GIT_DIFF_SINGLE_HUNK_WITH_ANSI_ESCAPE_SEQUENCES: &str = "\
  constant GIT_DIFF_SINGLE_HUNK_WITH_SEQUENCE_OF_CR_ESCAPE_SEQUENCES_LF (line 2261) | const GIT_DIFF_SINGLE_HUNK_WITH_SEQUENCE_OF_CR_ESCAPE_SEQUENCES_LF: &str...
  constant DIFF_IN_DIFF (line 2275) | const DIFF_IN_DIFF: &str = "\
  constant ADDED_FILE_INPUT (line 2314) | const ADDED_FILE_INPUT: &str = "\
  constant ADDED_EMPTY_FILE (line 2331) | const ADDED_EMPTY_FILE: &str = "
  constant ADDED_FILES_DIRECTORY_PATH_CONTAINING_SPACE (line 2343) | const ADDED_FILES_DIRECTORY_PATH_CONTAINING_SPACE: &str = "
  constant MODIFIED_BASH_AND_CSHARP_FILES (line 2366) | const MODIFIED_BASH_AND_CSHARP_FILES: &str = "\
  constant MODIFIED_DOCKER_AND_RS_FILES (line 2395) | const MODIFIED_DOCKER_AND_RS_FILES: &str = "\
  constant RENAMED_FILE_INPUT (line 2413) | const RENAMED_FILE_INPUT: &str = "\
  constant RENAMED_FILE_WITH_CHANGES_INPUT (line 2426) | const RENAMED_FILE_WITH_CHANGES_INPUT: &str = "\
  constant DIFF_UNIFIED_TWO_FILES (line 2450) | const DIFF_UNIFIED_TWO_FILES: &str = "\
  constant DIFF_UNIFIED_TWO_DIRECTORIES (line 2469) | const DIFF_UNIFIED_TWO_DIRECTORIES: &str = "\
  constant DIFF_UNIFIED_CONCATENATED (line 2489) | const DIFF_UNIFIED_CONCATENATED: &str = "\
  constant NOT_A_DIFF_OUTPUT (line 2510) | const NOT_A_DIFF_OUTPUT: &str = "\
  constant SUBMODULE_DIRTY (line 2520) | const SUBMODULE_DIRTY: &str = "\
  constant SUBMODULE_DIFF_LOG (line 2532) | const SUBMODULE_DIFF_LOG: &str = "\
  constant SUBMODULE_DIFF_LOG_EXPECTED_OUTPUT (line 2556) | const SUBMODULE_DIFF_LOG_EXPECTED_OUTPUT: &str = "\
  constant SUBMODULE_CONTAINS_UNTRACKED_CONTENT_INPUT (line 2586) | const SUBMODULE_CONTAINS_UNTRACKED_CONTENT_INPUT: &str = "\
  constant TRIPLE_DASH_AT_BEGINNING_OF_LINE_IN_CODE (line 2601) | const TRIPLE_DASH_AT_BEGINNING_OF_LINE_IN_CODE: &str = "\
  constant BINARY_FILES_DIFFER (line 2634) | const BINARY_FILES_DIFFER: &str = "
  constant BINARY_FILE_ADDED (line 2646) | const BINARY_FILE_ADDED: &str = "
  constant BINARY_FILE_REMOVED (line 2659) | const BINARY_FILE_REMOVED: &str = "
  constant BINARY_FILES_DIFFER_AFTER_OTHER (line 2672) | const BINARY_FILES_DIFFER_AFTER_OTHER: &str = "
  constant BINARY_FILES_DIFFER_BETWEEN_OTHER (line 2682) | const BINARY_FILES_DIFFER_BETWEEN_OTHER: &str = "\
  constant DIFF_NO_INDEX_BINARY_FILES_DIFFER (line 2702) | const DIFF_NO_INDEX_BINARY_FILES_DIFFER: &str = "\
  constant GIT_DIFF_WITH_COPIED_FILE (line 2708) | const GIT_DIFF_WITH_COPIED_FILE: &str = "
  constant DIFF_WITH_UNRECOGNIZED_PRECEDING_MATERIAL_1 (line 2723) | const DIFF_WITH_UNRECOGNIZED_PRECEDING_MATERIAL_1: &str = "
  constant DIFF_WITH_UNRECOGNIZED_PRECEDING_MATERIAL_2 (line 2756) | const DIFF_WITH_UNRECOGNIZED_PRECEDING_MATERIAL_2: &str = "
  constant DIFF_WITH_MERGE_CONFLICT (line 2791) | const DIFF_WITH_MERGE_CONFLICT: &str = r#"
  constant DIFF_EXHIBITING_TRUNCATION_BUG (line 2838) | const DIFF_EXHIBITING_TRUNCATION_BUG: &str = r#"
  constant DIFF_EXHIBITING_STATE_MACHINE_PARSER_BUG (line 2851) | const DIFF_EXHIBITING_STATE_MACHINE_PARSER_BUG: &str = r"
  constant DIFF_EXHIBITING_PARSE_FILE_NAME_BUG (line 2861) | const DIFF_EXHIBITING_PARSE_FILE_NAME_BUG: &str = r"
  constant DIFF_WITH_REMOVED_EMPTY_LINE (line 2871) | const DIFF_WITH_REMOVED_EMPTY_LINE: &str = r"
  constant DIFF_WITH_ADDED_EMPTY_LINE (line 2880) | const DIFF_WITH_ADDED_EMPTY_LINE: &str = r"
  constant DIFF_WITH_SINGLE_CHARACTER_LINE (line 2889) | const DIFF_WITH_SINGLE_CHARACTER_LINE: &str = r"
  constant DIFF_WITH_WHITESPACE_ERROR (line 2905) | const DIFF_WITH_WHITESPACE_ERROR: &str = r"
  constant DIFF_WITH_REMOVED_WHITESPACE_ERROR (line 2915) | const DIFF_WITH_REMOVED_WHITESPACE_ERROR: &str = r"
  constant DIFF_WITH_WHITESPACE_UNRELATED_EDIT_ERROR (line 2925) | const DIFF_WITH_WHITESPACE_UNRELATED_EDIT_ERROR: &str = r"
  constant DIFF_WITH_WHITESPACE_EDIT_ERROR (line 2935) | const DIFF_WITH_WHITESPACE_EDIT_ERROR: &str = r"
  constant DIFF_WITH_WHITESPACE_AFTER_TEXT_ERROR (line 2945) | const DIFF_WITH_WHITESPACE_AFTER_TEXT_ERROR: &str = r"
  constant DIFF_WITH_REMOVED_WHITESPACE_AFTER_TEXT_ERROR (line 2955) | const DIFF_WITH_REMOVED_WHITESPACE_AFTER_TEXT_ERROR: &str = r"
  constant DIFF_WITH_ADDED_WHITESPACE_EMPTY_LINE_ERROR (line 2963) | const DIFF_WITH_ADDED_WHITESPACE_EMPTY_LINE_ERROR: &str = r"
  constant DIFF_WITH_WHITESPACE_COMPLEX_ERROR (line 2978) | const DIFF_WITH_WHITESPACE_COMPLEX_ERROR: &str = r"
  constant DIFF_WITH_TWO_ADDED_LINES (line 2996) | const DIFF_WITH_TWO_ADDED_LINES: &str = r#"
  constant DIFF_WITH_TWO_ADDED_LINES_CREATED_BY_GIT_DIFF_U0 (line 3012) | const DIFF_WITH_TWO_ADDED_LINES_CREATED_BY_GIT_DIFF_U0: &str = r#"
  constant GIT_DIFF_UNDER_COLOR_MOVED_DIMMED_ZEBRA_WITH_ANSI_ESCAPE_SEQUENCES (line 3023) | const GIT_DIFF_UNDER_COLOR_MOVED_DIMMED_ZEBRA_WITH_ANSI_ESCAPE_SEQUENCES...
  constant GIT_DIFF_FILE_MODE_CHANGE_WITH_RENAME (line 3054) | const GIT_DIFF_FILE_MODE_CHANGE_WITH_RENAME: &str = "
  constant GIT_DIFF_FILE_MODE_CHANGE_GAIN_EXECUTABLE_BIT (line 3063) | const GIT_DIFF_FILE_MODE_CHANGE_GAIN_EXECUTABLE_BIT: &str = "
  constant GIT_DIFF_FILE_MODE_CHANGE_LOSE_EXECUTABLE_BIT (line 3069) | const GIT_DIFF_FILE_MODE_CHANGE_LOSE_EXECUTABLE_BIT: &str = "
  constant GIT_DIFF_FILE_MODE_CHANGE_UNEXPECTED_BITS (line 3075) | const GIT_DIFF_FILE_MODE_CHANGE_UNEXPECTED_BITS: &str = "
  constant GIT_DIFF_FILE_DELETED_WITHOUT_PREIMAGE (line 3082) | const GIT_DIFF_FILE_DELETED_WITHOUT_PREIMAGE: &str = "
  constant GIT_DIFF_FILES_DELETED_WITHOUT_PREIMAGE (line 3089) | const GIT_DIFF_FILES_DELETED_WITHOUT_PREIMAGE: &str = "
  constant GIT_DIFF_FILE_MODE_CHANGE_WITH_DIFF (line 3098) | const GIT_DIFF_FILE_MODE_CHANGE_WITH_DIFF: &str = "
  constant GIT_DIFF_NO_INDEX_FILENAMES_WITH_SPACES (line 3110) | const GIT_DIFF_NO_INDEX_FILENAMES_WITH_SPACES: &str = "
  constant GIT_LOG_FILE_REMOVAL_IN_FIRST_COMMIT (line 3120) | const GIT_LOG_FILE_REMOVAL_IN_FIRST_COMMIT: &str = "
  constant GIT_DIFF_ALL_UNICODE_W_FULLWIDTH (line 3142) | const GIT_DIFF_ALL_UNICODE_W_FULLWIDTH: &str = "

FILE: src/tests/test_utils.rs
  function contains_once (line 3) | pub fn contains_once(s: &str, t: &str) -> bool {
  function print_with_line_numbers (line 11) | pub fn print_with_line_numbers(s: &str) {
  function test_contains_once_1 (line 22) | fn test_contains_once_1() {
  function test_contains_once_2 (line 27) | fn test_contains_once_2() {
  function test_contains_once_3 (line 32) | fn test_contains_once_3() {
  function test_contains_once_4 (line 37) | fn test_contains_once_4() {
  function test_contains_once_5 (line 42) | fn test_contains_once_5() {
  function test_contains_once_6 (line 47) | fn test_contains_once_6() {

FILE: src/utils/bat/assets.rs
  function load_highlighting_assets (line 12) | pub fn load_highlighting_assets() -> bat::assets::HighlightingAssets {
  function list_languages (line 17) | pub fn list_languages() -> std::io::Result<()> {

FILE: src/utils/bat/dirs.rs
  type BatProjectDirs (line 13) | pub struct BatProjectDirs {
    method new (line 18) | fn new() -> Option<BatProjectDirs> {
    method cache_dir (line 33) | pub fn cache_dir(&self) -> &Path {

FILE: src/utils/bat/less.rs
  function retrieve_less_version (line 4) | pub fn retrieve_less_version(less_path: PathBuf) -> Option<usize> {
  function parse_less_version (line 9) | fn parse_less_version(output: &[u8]) -> Option<usize> {
  function test_parse_less_version_487 (line 24) | fn test_parse_less_version_487() {
  function test_parse_less_version_529 (line 37) | fn test_parse_less_version_529() {
  function test_parse_less_version_551 (line 50) | fn test_parse_less_version_551() {
  function test_parse_less_version_wrong_program (line 63) | fn test_parse_less_version_wrong_program() {

FILE: src/utils/bat/output.rs
  type PagerCfg (line 17) | pub struct PagerCfg {
    method from (line 24) | fn from(cfg: &config::Config) -> Self {
    method from (line 33) | fn from(cfg: config::Config) -> Self {
  type PagingMode (line 40) | pub enum PagingMode {
  constant LESSUTFCHARDEF (line 47) | const LESSUTFCHARDEF: &str = "LESSUTFCHARDEF";
  type OutputType (line 50) | pub enum OutputType {
    method oneshot_write (line 67) | pub fn oneshot_write(data: String) -> io::Result<()> {
    method from_mode (line 79) | pub fn from_mode(
    method try_pager (line 95) | fn try_pager(
    method stdout (line 158) | fn stdout() -> Self {
    method handle (line 162) | pub fn handle(&mut self) -> Result<&mut dyn Write> {
  method drop (line 57) | fn drop(&mut self) {
  function _make_process_from_less_path (line 174) | fn _make_process_from_less_path(
  function _make_process_from_pager_path (line 239) | fn _make_process_from_pager_path(pager_path: PathBuf, args: &[String]) -...

FILE: src/utils/bat/terminal.rs
  function to_ansi_color (line 6) | pub fn to_ansi_color(color: highlighting::Color, true_color: bool) -> Op...
  function as_terminal_escaped (line 50) | pub fn as_terminal_escaped(

FILE: src/utils/git.rs
  function retrieve_git_version (line 3) | pub fn retrieve_git_version() -> Option<(usize, usize)> {
  function parse_git_version (line 12) | fn parse_git_version(output: &[u8]) -> Option<(usize, usize)> {
  function test_parse_git_version (line 28) | fn test_parse_git_version(#[case] input: &[u8], #[case] expected: Option...

FILE: src/utils/helpwrap.rs
  function wrap (line 23) | pub fn wrap(text: &str, width: usize, indent_with: &str, no_indent: &str...
  function simple_ascii_can_not_split (line 129) | fn simple_ascii_can_not_split() {
  function simple_ascii_just_whitespace (line 141) | fn simple_ascii_just_whitespace() {
  function simple_ascii_can_not_split_plus_whitespace (line 157) | fn simple_ascii_can_not_split_plus_whitespace() {
  function simple_ascii_keep_leading_input_indent (line 169) | fn simple_ascii_keep_leading_input_indent() {
  function simple_ascii_indent_and_bullet_points (line 187) | fn simple_ascii_indent_and_bullet_points() {
  function simple_ascii_all_overlong_after_indent (line 209) | fn simple_ascii_all_overlong_after_indent() {
  function simple_ascii_one_line (line 220) | fn simple_ascii_one_line() {
  function simple_ascii_trailing_space (line 234) | fn simple_ascii_trailing_space() {
  function simple_ascii_two_lines (line 241) | fn simple_ascii_two_lines() {
  function simple_ascii_no_indent (line 259) | fn simple_ascii_no_indent() {
  function simple_ascii_no_wrap (line 275) | fn simple_ascii_no_wrap() {
  function simple_ascii_no_both (line 292) | fn simple_ascii_no_both() {
  function simple_ascii_no_both_wrong_order (line 309) | fn simple_ascii_no_both_wrong_order() {
  function simple_ascii_much_whitespace (line 333) | fn simple_ascii_much_whitespace() {

FILE: src/utils/mod.rs
  constant DELTA_ATOMIC_ORDERING (line 15) | pub const DELTA_ATOMIC_ORDERING: std::sync::atomic::Ordering = std::sync...

FILE: src/utils/path.rs
  function absolute_path (line 8) | pub fn absolute_path(relative_path: &str, config: &Config) -> Option<Pat...
  function relativize_path_maybe (line 30) | pub fn relativize_path_maybe(path: &mut String, config: &Config) {
  function cwd_of_user_shell_process (line 54) | pub fn cwd_of_user_shell_process(
  function normalize_path (line 78) | fn normalize_path<P>(path: P) -> PathBuf
  function fake_delta_cwd_for_tests (line 109) | pub fn fake_delta_cwd_for_tests() -> PathBuf {

FILE: src/utils/process.rs
  type DeltaPid (line 11) | pub type DeltaPid = u32;
  type CallingProcess (line 14) | pub enum CallingProcess {
    method paths_in_input_are_relative_to_cwd (line 34) | pub fn paths_in_input_are_relative_to_cwd(&self) -> bool {
  constant CALLER_GUESSED (line 30) | const CALLER_GUESSED: usize = 1;
  constant CALLER_KNOWN (line 31) | const CALLER_KNOWN: usize = 2;
  type CommandLine (line 48) | pub struct CommandLine {
  function start_determining_calling_process_in_thread (line 61) | pub fn start_determining_calling_process_in_thread() {
  function set_calling_process (line 83) | pub fn set_calling_process(args: &[String]) {
  function calling_process (line 95) | pub fn calling_process() -> MutexGuard<'static, CallingProcess> {
  function calling_process (line 107) | pub fn calling_process() -> Box<CallingProcess> {
  function determine_calling_process (line 126) | fn determine_calling_process() -> CallingProcess {
  type ProcessArgs (line 134) | pub enum ProcessArgs<T> {
  function describe_calling_process (line 143) | pub fn describe_calling_process(args: &[String]) -> ProcessArgs<CallingP...
  function is_git_binary (line 225) | fn is_git_binary(git: &str) -> bool {
  function parse_command_line (line 236) | fn parse_command_line<'a>(args: impl Iterator<Item = &'a str>) -> Comman...
  type ProcInfo (line 263) | struct ProcInfo {
    method new (line 267) | fn new() -> Self {
  type ProcActions (line 281) | trait ProcActions {
    method cmd (line 282) | fn cmd(&self) -> &[String];
    method parent (line 283) | fn parent(&self) -> Option<DeltaPid>;
    method pid (line 284) | fn pid(&self) -> DeltaPid;
    method start_time (line 285) | fn start_time(&self) -> u64;
    method cmd (line 292) | fn cmd(&self) -> &[String] {
    method parent (line 295) | fn parent(&self) -> Option<DeltaPid> {
    method pid (line 298) | fn pid(&self) -> DeltaPid {
    method start_time (line 301) | fn start_time(&self) -> u64 {
    method cmd (line 703) | fn cmd(&self) -> &[String] {
    method parent (line 706) | fn parent(&self) -> Option<DeltaPid> {
    method pid (line 709) | fn pid(&self) -> DeltaPid {
    method start_time (line 712) | fn start_time(&self) -> u64 {
  type ProcessInterface (line 306) | trait ProcessInterface {
    method my_pid (line 309) | fn my_pid(&self) -> DeltaPid;
    method process (line 311) | fn process(&self, pid: DeltaPid) -> Option<&Self::Out>;
    method processes (line 312) | fn processes(&self) -> &HashMap<Pid, Self::Out>;
    method refresh_process (line 314) | fn refresh_process(&mut self, pid: DeltaPid) -> bool;
    method refresh_processes (line 315) | fn refresh_processes(&mut self);
    method parent_process (line 317) | fn parent_process(&mut self, pid: DeltaPid) -> Option<&Self::Out> {
    method naive_sibling_process (line 323) | fn naive_sibling_process(&mut self, pid: DeltaPid) -> Option<&Self::Ou...
    method find_sibling_in_refreshed_processes (line 328) | fn find_sibling_in_refreshed_processes<F, T>(
    type Out (line 402) | type Out = Process;
    method my_pid (line 404) | fn my_pid(&self) -> DeltaPid {
    method refresh_process (line 407) | fn refresh_process(&mut self, pid: DeltaPid) -> bool {
    method process (line 411) | fn process(&self, pid: DeltaPid) -> Option<&Self::Out> {
    method processes (line 414) | fn processes(&self) -> &HashMap<Pid, Self::Out> {
    method refresh_processes (line 417) | fn refresh_processes(&mut self) {
    type Out (line 741) | type Out = FakeProc;
    method my_pid (line 743) | fn my_pid(&self) -> DeltaPid {
    method process (line 746) | fn process(&self, pid: DeltaPid) -> Option<&Self::Out> {
    method processes (line 749) | fn processes(&self) -> &HashMap<Pid, Self::Out> {
    method refresh_processes (line 752) | fn refresh_processes(&mut self) {}
    method refresh_process (line 753) | fn refresh_process(&mut self, _pid: DeltaPid) -> bool {
  function calling_process_cmdline (line 423) | fn calling_process_cmdline<P, F, T>(mut info: P, extract_args: F) -> Opt...
  function iter_parents (line 535) | fn iter_parents<P, F>(info: &P, starting_pid: DeltaPid, f: F)
  type TlsState (line 573) | enum TlsState<T> {
  type FakeParentArgs (line 590) | pub struct FakeParentArgs {}
    method once (line 592) | pub fn once(args: &str) -> Self {
    method for_scope (line 595) | pub fn for_scope(args: &str) -> Self {
    method new (line 598) | fn new<F>(args: &str, initial: F, from_: &str) -> Self
    method with (line 608) | pub fn with(args: &[&str]) -> Self {
    method get (line 622) | pub fn get() -> Option<Vec<String>> {
    method are_set (line 644) | pub fn are_set() -> bool {
    method error (line 649) | fn error(where_: &str) {
  method drop (line 666) | fn drop(&mut self) {
  type FakeProc (line 684) | struct FakeProc {
    method new (line 692) | fn new(pid: DeltaPid, start_time: u64, cmd: Vec<String>, ppid: Option<...
  type MockProcInfo (line 718) | struct MockProcInfo {
    method with (line 723) | fn with(processes: &[(DeltaPid, u64, &str, Option<DeltaPid>)]) -> Self {
  function set (line 758) | fn set(arg1: &[&str]) -> HashSet<String> {
  function test_process_testing (line 763) | fn test_process_testing() {
  function test_process_testing_assert (line 801) | fn test_process_testing_assert() {
  function test_process_testing_assert_once_never_used (line 816) | fn test_process_testing_assert_once_never_used() {
  function test_process_testing_assert_for_scope_never_used (line 822) | fn test_process_testing_assert_for_scope_never_used() {
  function test_process_testing_assert_once_never_used2 (line 829) | fn test_process_testing_assert_once_never_used2() {
  function test_process_testing_scope_can_remain_unused (line 835) | fn test_process_testing_scope_can_remain_unused() {
  function test_process_testing_n_times (line 840) | fn test_process_testing_n_times() {
  function test_process_testing_n_times_unused (line 863) | fn test_process_testing_n_times_unused() {
  function test_process_testing_n_times_underused (line 869) | fn test_process_testing_n_times_underused() {
  function test_process_testing_n_times_overused (line 883) | fn test_process_testing_n_times_overused() {
  function test_describe_calling_process_blame (line 897) | fn test_describe_calling_process_blame() {
  function test_describe_calling_process_grep (line 1103) | fn test_describe_calling_process_grep() {
  function test_describe_calling_process_git_show (line 1184) | fn test_describe_calling_process_git_show() {
  function test_process_calling_cmdline (line 1217) | fn test_process_calling_cmdline() {

FILE: src/utils/regex_replacement.rs
  type RegexReplacement (line 6) | pub struct RegexReplacement {
    method from_sed_command (line 13) | pub fn from_sed_command(sed_command: &str) -> Option<Self> {
    method execute (line 52) | pub fn execute<'t>(&self, s: &'t str) -> Cow<'t, str> {
  function test_sed_command (line 66) | fn test_sed_command() {
  function test_sed_command_i_flag (line 76) | fn test_sed_command_i_flag() {
  function test_sed_command_g_flag (line 86) | fn test_sed_command_g_flag() {
  function test_sed_command_with_named_captures (line 96) | fn test_sed_command_with_named_captures() {
  function test_sed_command_invalid (line 103) | fn test_sed_command_invalid() {

FILE: src/utils/round_char_boundary.rs
  function is_utf8_char_boundary (line 6) | const fn is_utf8_char_boundary(b: u8) -> bool {
  function floor_char_boundary (line 12) | pub fn floor_char_boundary(s: &str, index: usize) -> usize {

FILE: src/utils/syntect.rs
  function syntect_color_from_ansi_name (line 8) | pub fn syntect_color_from_ansi_name(name: &str) -> Option<Color> {
  function syntect_color_from_name (line 12) | pub fn syntect_color_from_name(name: &str) -> Option<Color> {
  function syntect_color_from_ansi_number (line 23) | pub fn syntect_color_from_ansi_number(n: u8) -> Option<Color> {
  type FromAnsiTermStyle (line 27) | pub trait FromAnsiTermStyle {
    method from_ansi_term_style (line 28) | fn from_ansi_term_style(ansi_term_style: ansi_term::Style) -> Self;
    method from_ansi_term_style (line 32) | fn from_ansi_term_style(ansi_term_style: ansi_term::Style) -> Self {
    method from_ansi_term_style (line 51) | fn from_ansi_term_style(ansi_term_style: ansi_term::Style) -> Self {
  type FromAnsiTermColor (line 66) | pub trait FromAnsiTermColor {
    method from_ansi_term_color (line 67) | fn from_ansi_term_color(ansi_term_color: ansi_term::Color) -> Self;
    method from_ansi_term_color (line 71) | fn from_ansi_term_color(ansi_term_color: ansi_term::Color) -> Self {
  type FromDeltaStyle (line 87) | pub trait FromDeltaStyle {
    method from_delta_style (line 88) | fn from_delta_style(delta_style: delta_style::Style) -> Self;
    method from_delta_style (line 92) | fn from_delta_style(delta_style: delta_style::Style) -> Self {

FILE: src/utils/tabs.rs
  type TabCfg (line 4) | pub struct TabCfg {
    method new (line 9) | pub fn new(width: usize) -> Self {
    method width (line 14) | pub fn width(&self) -> usize {
    method replace (line 17) | pub fn replace(&self) -> bool {
  function expand (line 23) | pub fn expand(line: &str, tab_cfg: &TabCfg) -> String {
  function remove_prefix_and_expand (line 32) | pub fn remove_prefix_and_expand(prefix: usize, line: &str, tab_cfg: &Tab...
  function test_remove_prefix_and_expand (line 50) | fn test_remove_prefix_and_expand() {

FILE: src/utils/workarounds.rs
  constant NO_WORKAROUNDS (line 2) | const NO_WORKAROUNDS: &str = "DELTA_NO_WORKAROUNDS";
  function windows_msys2_width_fix (line 8) | pub fn windows_msys2_width_fix(height_width: (u16, u16), term_stdout: &c...
  function windows_msys2_width_fix (line 57) | pub fn windows_msys2_width_fix(height_width: (u16, u16), _: &console::Te...

FILE: src/wrapping.rs
  type WrapConfig (line 21) | pub struct WrapConfig {
    method from_opt (line 35) | pub fn from_opt(opt: &cli::Opt, inline_hint_style: Style) -> Self {
    method config_max_line_length (line 68) | pub fn config_max_line_length(
  function remove_percent_suffix (line 93) | fn remove_percent_suffix(arg: &str) -> &str {
  function ensure_display_width_1 (line 100) | fn ensure_display_width_1(what: &str, arg: String) -> String {
  function adapt_wrap_max_lines_argument (line 109) | fn adapt_wrap_max_lines_argument(arg: String) -> usize {
  type Stop (line 120) | enum Stop {
  function wrap_line (line 136) | pub fn wrap_line<'a, I, S>(
  function wrap_if_too_long (line 348) | fn wrap_if_too_long<'a, S>(
  function wrap_minusplus_block (line 381) | pub fn wrap_minusplus_block<'c: 'a, 'a>(
  function wrap_zero_block (line 579) | pub fn wrap_zero_block<'c: 'a, 'a>(
  constant W (line 682) | const W: &str = "+";
  constant WR (line 683) | const WR: &str = "<";
  constant RA (line 684) | const RA: &str = ">";
  function default_wrap_cfg_plus (line 706) | fn default_wrap_cfg_plus<'a>(args: &[&'a str]) -> Vec<&'a str> {
  function mk_wrap_cfg (line 712) | fn mk_wrap_cfg(wrap_cfg: &WrapConfig) -> Config {
  function wrap_test (line 718) | fn wrap_test<'a, I, S>(cfg: &'a Config, line: I, line_width: usize) -> V...
  function test_wrap_line_single (line 728) | fn test_wrap_line_single() {
  function test_wrap_line_align_right_1 (line 796) | fn test_wrap_line_align_right_1() {
  function test_wrap_line_align_right_2 (line 807) | fn test_wrap_line_align_right_2() {
  function test_wrap_line_newlines (line 839) | fn test_wrap_line_newlines() {
  function test_wrap_line_unicode (line 941) | fn test_wrap_line_unicode() {
  constant HUNK_ZERO_DIFF (line 976) | const HUNK_ZERO_DIFF: &str = "\
  constant HUNK_ZERO_LARGE_LINENUMBERS_DIFF (line 987) | const HUNK_ZERO_LARGE_LINENUMBERS_DIFF: &str = "\
  constant HUNK_MP_DIFF (line 998) | const HUNK_MP_DIFF: &str = "\
  constant HUNK_ALIGN_DIFF_HEADER (line 1009) | const HUNK_ALIGN_DIFF_HEADER: &str = "--- a\n+++ b\n@@ -1,1 +1,1 @@\n";
  constant HUNK_ALIGN_DIFF_SHORT (line 1010) | const HUNK_ALIGN_DIFF_SHORT: &str = ".........1.........2....\n";
  constant HUNK_ALIGN_DIFF_LONG (line 1011) | const HUNK_ALIGN_DIFF_LONG: &str =
  function test_wrap_with_unequal_hunk_zero_width (line 1015) | fn test_wrap_with_unequal_hunk_zero_width() {
  function test_wrap_with_large_hunk_zero_line_numbers (line 1041) | fn test_wrap_with_large_hunk_zero_line_numbers() {
  function test_wrap_with_keep_markers (line 1067) | fn test_wrap_with_keep_markers() {
  function test_alignment_2_lines_vs_3_lines (line 1100) | fn test_alignment_2_lines_vs_3_lines() {
  function test_alignment_1_line_vs_3_lines (line 1133) | fn test_alignment_1_line_vs_3_lines() {
  function test_wrap_max_lines_2 (line 1170) | fn test_wrap_max_lines_2() {
Condensed preview — 201 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (4,598K chars).
[
  {
    "path": ".cargo/audit.toml",
    "chars": 148,
    "preview": "# See https://github.com/rustsec/rustsec/blob/main/cargo-audit/audit.toml.example\n\n[advisories]\nignore = [\"RUSTSEC-2020-"
  },
  {
    "path": ".gitattributes",
    "chars": 144,
    "preview": "*.Makefile linguist-language=Makefile\netc/performance/* linguist-vendored\n*.rs whitespace=tab-in-indent,trailing-space,-"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug.md",
    "chars": 350,
    "preview": "---\nname: Bug\nabout: Create a bug report\ntitle: \"\\U0001F41B \"\nlabels: ''\nassignees: ''\n\n---\n\n- [ ] Please include the ra"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature.md",
    "chars": 182,
    "preview": "---\nname: Feature\nabout: Propose an improvement\ntitle: \"\\U0001F680 \"\nlabels: ''\nassignees: ''\n\n---\n\nHi, thanks for contr"
  },
  {
    "path": ".github/dependabot.yml",
    "chars": 279,
    "preview": "version: 2\nupdates:\n- package-ecosystem: cargo\n  directory: \"/\"\n  schedule:\n    interval: daily\n  open-pull-requests-lim"
  },
  {
    "path": ".github/workflows/audit.yml",
    "chars": 408,
    "preview": "name: Security audit\n\non:\n  schedule:\n    # Runs at 00:00 UTC everyday\n    - cron: '0 0 * * *'\n  push:\n    paths:\n      "
  },
  {
    "path": ".github/workflows/cd.yml",
    "chars": 3200,
    "preview": "name: Continuous Deployment\n\non:\n  push:\n    tags:\n      - '[0-9]+.[0-9]+.[0-9]+'\n\njobs:\n  publish:\n    name: Publishing"
  },
  {
    "path": ".github/workflows/ci.yml",
    "chars": 3868,
    "preview": "name: CI\n\non:\n  push:\n    branches:\n      - master\n  pull_request:\n\njobs:\n  unit_tests:\n    name: Unit tests\n    runs-on"
  },
  {
    "path": ".github/workflows/manual.yml",
    "chars": 1098,
    "preview": "name: Deploy Manual\n\non:\n  push:\n    branches:\n      - main\n    paths:\n      - \"manual/**\"\n  workflow_dispatch:\n\nconcurr"
  },
  {
    "path": ".gitignore",
    "chars": 257,
    "preview": ".ignore\n.make-sentinels\nperformance/all-benchmarks.json\nperformance/index.html\nsrc/junk.rs\n**/*.rs.bk\n/target\n\n# insta: "
  },
  {
    "path": "ARCHITECTURE.md",
    "chars": 12036,
    "preview": "The purpose of delta is to transform input received from git, diff, git blame, grep, etc to produce visually appealing o"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 962,
    "preview": "# Notes on contributing to delta\n\nFirst off, thank you for considering contributing to delta.\n\nIf your contribution is n"
  },
  {
    "path": "Cargo.toml",
    "chars": 2048,
    "preview": "[package]\nname = \"git-delta\"\nauthors = [\"Dan Davison <dandavison7@gmail.com>\"]\ncategories = [\"command-line-utilities\", \""
  },
  {
    "path": "LICENSE",
    "chars": 1051,
    "preview": "Copyright 2020 Dan Davison\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this softwar"
  },
  {
    "path": "Makefile",
    "chars": 1316,
    "preview": "build:\n\tcargo build --release\n\nformat:\n\tgit ls-files | grep '\\.rs$$' | xargs -P 0 rustfmt\n\nlint:\n\tcargo clippy\n\ntest: un"
  },
  {
    "path": "README.md",
    "chars": 7637,
    "preview": "<p align=\"center\">\n  <img width=400px src=\"https://user-images.githubusercontent.com/52205/147996902-9829bd3f-cd33-466e-"
  },
  {
    "path": "etc/bin/ansifilter",
    "chars": 31,
    "preview": "perl -pe 's/\\e\\[[0-9;]*[mK]//g'"
  },
  {
    "path": "etc/bin/check-show-config-options",
    "chars": 122,
    "preview": "#!/bin/bash\nDIR=$(dirname ${BASH_SOURCE[0]})\n\ndelta <($DIR/list-options) <(delta --show-config | awk '{print $1}' | sort"
  },
  {
    "path": "etc/bin/diagnostics",
    "chars": 477,
    "preview": "#!/bin/bash\n\ncommands=(\n    \"delta --version\"\n    \"less --version | head -n1\"\n    \"env | grep -iE '(less|pager|bat|delta"
  },
  {
    "path": "etc/bin/list-options",
    "chars": 215,
    "preview": "#!/bin/bash\n\nDIR=$(dirname ${BASH_SOURCE[0]})\n\ndelta --help | \\\n    $DIR/ansifilter | \\\n    rg ' --[^-].+ <' | \\\n    rg "
  },
  {
    "path": "etc/ci/.gitattributes",
    "chars": 20,
    "preview": "* linguist-vendored\n"
  },
  {
    "path": "etc/ci/before_deploy.sh",
    "chars": 5127,
    "preview": "#!/usr/bin/env bash\n# Building and packaging for release\n\nset -ex\n\npack() {\n    local tempdir\n    local out_dir\n    loca"
  },
  {
    "path": "etc/completion/completion.bash",
    "chars": 15851,
    "preview": "_delta() {\n    local i cur prev opts cmd\n    COMPREPLY=()\n    cur=\"${COMP_WORDS[COMP_CWORD]}\"\n    prev=\"${COMP_WORDS[COM"
  },
  {
    "path": "etc/completion/completion.fish",
    "chars": 10755,
    "preview": "complete -c delta -l blame-code-style -d 'Style string for the code section of a git blame line' -r\ncomplete -c delta -l"
  },
  {
    "path": "etc/completion/completion.zsh",
    "chars": 10173,
    "preview": "#compdef delta\n\nautoload -U is-at-least\n\n_delta() {\n    typeset -A opt_args\n    typeset -a _arguments_options\n    local "
  },
  {
    "path": "etc/docker/Makefile",
    "chars": 88,
    "preview": ".PHONY: delta-ubuntu\ndelta-ubuntu:\n\tdocker build -f ubuntu.Dockerfile -t delta-ubuntu .\n"
  },
  {
    "path": "etc/docker/README.md",
    "chars": 112,
    "preview": "The docker image built here is intended for investigating delta issues, for example when they are OS-dependent.\n"
  },
  {
    "path": "etc/docker/delta-ubuntu",
    "chars": 35,
    "preview": "docker run -i delta-ubuntu delta $@"
  },
  {
    "path": "etc/docker/ubuntu.Dockerfile",
    "chars": 327,
    "preview": "FROM ubuntu:latest\n\nRUN apt-get update && \\\n    apt-get install -y curl git less gcc\n\nRUN curl --proto '=https' --tlsv1."
  },
  {
    "path": "etc/examples/119-within-line-edits",
    "chars": 752,
    "preview": "#!/bin/bash\n\n\nrepo=$(mktemp -d)\ncd $repo\n\ngit init\ngit commit --allow-empty -m \"Initial commit\"\n\ncat > file1.js <<EOF\n{\n"
  },
  {
    "path": "etc/examples/121-unrecognized-content-before-diff-1",
    "chars": 57,
    "preview": "#!/bin/bash\ngit show -p --cc --format=  --numstat --stat\n"
  },
  {
    "path": "etc/examples/121-unrecognized-content-before-diff-2",
    "chars": 42,
    "preview": "#!/bin/bash\ngit stash show --stat --patch\n"
  },
  {
    "path": "etc/examples/125-merge-conflict-1.diff",
    "chars": 1998,
    "preview": "diff --cc src/config.rs\nindex e35d2e4,fad673e..0000000\n--- a/src/config.rs\n+++ b/src/config.rs\n@@@ -1,4 -1,5 +1,10 @@@\n+"
  },
  {
    "path": "etc/examples/125-merge-conflict-2.diff",
    "chars": 1521,
    "preview": "diff --cc Makefile\nindex 759070d,3daf9eb..0000000\n--- a/Makefile\n+++ b/Makefile\n@@@ -4,13 -4,16 +4,37 @@@ build\n  lint:\n"
  },
  {
    "path": "etc/examples/127-paths-with-spaces--added",
    "chars": 268,
    "preview": "#!/bin/bash\n\n\nrepo=$(mktemp -d)\ncd $repo\n\nmkdir \"with space\"\necho \"file1 contents\" > \"with space/file1\"\n\nmkdir \"nospace\""
  },
  {
    "path": "etc/examples/127-paths-with-spaces--renamed",
    "chars": 392,
    "preview": "#!/bin/bash\n\n\nrepo=$(mktemp -d)\ncd $repo\n\nmkdir \"with space\"\necho \"file1 contents\" > \"with space/file1\"\n\nmkdir \"nospace\""
  },
  {
    "path": "etc/examples/128-empty-file",
    "chars": 163,
    "preview": "#!/bin/bash\n\n\nrepo=$(mktemp -d)\ncd $repo\n\ngit init\ngit commit --allow-empty -m \"Initial commit\"\n\ntouch file\n\ngit add fil"
  },
  {
    "path": "etc/examples/139-file-with-space-delimited-dash.diff",
    "chars": 166,
    "preview": "diff --git a/strange - file.txt b/strange - file.txt\nnew file mode 100644\nindex 0000000..9daeafb\n--- /dev/null\n+++ b/str"
  },
  {
    "path": "etc/examples/140-within-line-edits",
    "chars": 377,
    "preview": "#!/bin/bash\n\n\nrepo=$(mktemp -d)\ncd $repo\n\ngit init\ngit commit --allow-empty -m \"Initial commit\"\n\necho \"did_emsg = FALSE;"
  },
  {
    "path": "etc/examples/140-within-line-edits-counter-example",
    "chars": 303,
    "preview": "#!/bin/bash\n\n\nrepo=$(mktemp -d)\ncd $repo\n\ngit init\ngit commit --allow-empty -m \"Initial commit\"\n\ncat > file <<EOF\naaaa a"
  },
  {
    "path": "etc/examples/189-merge-conflict.1.diff",
    "chars": 1310,
    "preview": "diff --cc src/handlers/merge_conflict.rs\nindex 8fc4116b,eb115dde..00000000\n--- a/src/handlers/merge_conflict.rs\n+++ b/sr"
  },
  {
    "path": "etc/examples/189-merge-conflict.2.diff",
    "chars": 5482,
    "preview": "\u001b[1mdiff --cc src/paint.rs\u001b[m\n\u001b[1mindex 79b44db1,0f429d5c..00000000\u001b[m\n\u001b[1m--- a/src/paint.rs\u001b[m\n\u001b[1m+++ b/src/paint.rs\u001b"
  },
  {
    "path": "etc/examples/189-merge-conflict.3.diff",
    "chars": 1518,
    "preview": "diff --cc Makefile\nindex 759070d,3daf9eb..0000000\n--- a/Makefile\n+++ b/Makefile\n@@@ -4,13 -4,16 +4,37 @@@ build\n  lint:\n"
  },
  {
    "path": "etc/examples/189-merge-conflict.4.diff",
    "chars": 580,
    "preview": "diff --cc src/handlers/merge_conflict.rs\nindex 888eee8b,7ea2e9d3..00000000\n--- a/src/handlers/merge_conflict.rs\n+++ b/sr"
  },
  {
    "path": "etc/examples/189-merge-conflict.5.diff",
    "chars": 599,
    "preview": "diff --cc src/handlers/merge_conflict.rs\nindex 888eee8b,7ea2e9d3..00000000\n--- a/src/handlers/merge_conflict.rs\n+++ b/sr"
  },
  {
    "path": "etc/examples/205-highlight-bug-1.diff",
    "chars": 112,
    "preview": "diff --git a/b b/b\nindex 1b647ff..b6467a2 100644\n--- a/b\n+++ b/b\n@@ -1 +1 @@\n-return parent_names\n+parent_names\n"
  },
  {
    "path": "etc/examples/205-highlight-bug-2.diff",
    "chars": 138,
    "preview": "diff --git i/diff-test.txt w/diff-test.txt\nindex 5fd0037..3f0bbd0 100644\n--- i/diff-test.txt\n+++ w/diff-test.txt\n@@ -1,1"
  },
  {
    "path": "etc/examples/205-highlight-bug.diff",
    "chars": 333,
    "preview": "diff --git i/diff-test.txt w/diff-test.txt\nindex 5fd0037..3f0bbd0 100644\n--- i/diff-test.txt\n+++ w/diff-test.txt\n@@ -1,6"
  },
  {
    "path": "etc/examples/308-side-by-side-tabs.diff",
    "chars": 323,
    "preview": "diff --git .config/git/config .config/git/config\nindex bc4ae2e..b058f99 100644\n--- .config/git/config\n+++ .config/git/co"
  },
  {
    "path": "etc/examples/345-keep-plus-minus-markers.diff",
    "chars": 1862,
    "preview": "commit f6086641f4cfe7c28559db99c27a964b3af31dab (HEAD -> master, origin/master)\nAuthor: Eric Nielsen <eric@amalgamar.com"
  },
  {
    "path": "etc/examples/345-keep-plus-minus-markers.gitconfig",
    "chars": 903,
    "preview": "[core]\n\tpager = delta\n[color \"diff-highlight\"]\n\toldNormal = red bold\n\toldHighlight = red bold 52\n\tnewNormal = green bold"
  },
  {
    "path": "etc/examples/388-whitespace_error_keep_plus_minus_marker",
    "chars": 144,
    "preview": "diff --git a/Cargo.toml b/Cargo.toml\nindex 93f58aea..2f945245 100644\n--- a/Cargo.toml\n+++ b/Cargo.toml\n@@ -11,6 +11,7 @@"
  },
  {
    "path": "etc/examples/55-unicode-width.diff",
    "chars": 670,
    "preview": "diff --git a/test.txt b/test.txt\nindex 66a5cb0..0e8c1b9 100644\n--- a/test.txt\n+++ b/test.txt\n@@ -1,1 +1,1 @@\n-This is an"
  },
  {
    "path": "etc/examples/56-unified-directory-diff",
    "chars": 255,
    "preview": "#!/bin/bash\nd1=$(mktemp -d)\nd2=$(mktemp -d)\nmkdir $d1 $d2\ngit show HEAD~10:./src/delta.rs > $d1/a.rs\ngit show HEAD:./src"
  },
  {
    "path": "etc/examples/60-submodule",
    "chars": 313,
    "preview": "#!/bin/bash\n\nsubmodule=$(mktemp -d)\nrepo=$(mktemp -d)\ncd $submodule\ngit init\ngit commit --allow-empty -m \"Initial commit"
  },
  {
    "path": "etc/examples/662-submodules",
    "chars": 2022,
    "preview": "#!/bin/bash\nREPO_ROOT=/tmp/submodule-diff-example\nREPO_DATE_FMT=%H:%M:%S.%N\nmkdir ${REPO_ROOT} && git -C ${REPO_ROOT} in"
  },
  {
    "path": "etc/examples/72-color-moved-2.diff",
    "chars": 219,
    "preview": "\u001b[1mdiff --git a/file.py b/file.py\u001b[m\n\u001b[1mindex f07db74..3cb162d 100644\u001b[m\n\u001b[1m--- a/file.py\u001b[m\n\u001b[1m+++ b/file.py\u001b[m\n\u001b[3"
  },
  {
    "path": "etc/examples/72-color-moved-3.diff",
    "chars": 724,
    "preview": "\u001b[33mcommit fffb6bf94087c432b6e2e29cab97bf1f8987c641\u001b[m\nAuthor: Dan Davison <dandavison7@gmail.com>\nDate:   Tue Nov 23 1"
  },
  {
    "path": "etc/examples/72-color-moved-4.diff",
    "chars": 258,
    "preview": "\u001b[1mdiff --git a/file.py b/file.py\u001b[m\n\u001b[1mindex f2f1f5e..9735c3a 100644\u001b[m\n\u001b[1m--- a/file.py\u001b[m\n\u001b[1m+++ b/file.py\u001b[m\n\u001b[3"
  },
  {
    "path": "etc/examples/72-color-moved.diff",
    "chars": 578,
    "preview": "\u001b[1mdiff --git a/a b/a\u001b[m\n\u001b[1mindex 283ba4ce..2c9304d5 100644\u001b[m\n\u001b[1m--- a/a\u001b[m\n\u001b[1m+++ b/a\u001b[m\n\u001b[36m@@ -3,12 +3,12 @@\u001b[m"
  },
  {
    "path": "etc/examples/802-color-moved.diff",
    "chars": 381,
    "preview": "\u001b[33mcommit 57e5082\u001b[m\nAuthor: Caleb Maclennan <caleb@alerque.com>\nDate:   Sat Nov 27 01:08:54 2021 +0300\n\n    Move vers"
  },
  {
    "path": "etc/examples/813-cthulhu.diff",
    "chars": 191895,
    "preview": "commit 2cde51fbd0f310c8a2c5f977e665c0ac3945b46d\nMerge: 7471c5c9f58e c097d5fdf3b5 74c375cb85d7 04c3a852f51f 5095f55d7cc3 "
  },
  {
    "path": "etc/examples/822-hunk-header-within-merge-conflict.diff",
    "chars": 21690,
    "preview": "diff --cc src/delta.rs\nindex 9a65aaa,ab08d84..0000000\n--- a/src/delta.rs\n+++ b/src/delta.rs\n@@@ -21,7 -21,7 +21,13 @@@ p"
  },
  {
    "path": "etc/examples/93-binary",
    "chars": 547,
    "preview": "# Test script written by @gibfahn in https://github.com/dandavison/delta/issues/93\ndir=/tmp/tst\nrm -fr $dir && mkdir -p "
  },
  {
    "path": "etc/examples/styles.py",
    "chars": 131,
    "preview": "# avocet avocet avocet avocet\n# bee-eater bee-eater bee-eater bee-eater\n# chaffinch chaffinch chaffinch\n# dodo dodo dodo"
  },
  {
    "path": "etc/performance/README.md",
    "chars": 32,
    "preview": "<img src=\"./visualization.svg\">\n"
  },
  {
    "path": "etc/performance/all-benchmarks.json",
    "chars": 1095537,
    "preview": "[\n  {\n    \"command\": \"/tmp/chronologer/delta/executables/5a4361fa037090adf729ab3f161832d969abc576 < /tmp/chronologer/del"
  },
  {
    "path": "etc/performance/chronologer.yaml",
    "chars": 406,
    "preview": "benchmarks_dir: /tmp/chronologer/delta/benchmarks\nbenchmark_runs: 5\nbenchmark_task: \"{executable} < /tmp/chronologer/del"
  },
  {
    "path": "etc/performance/data/hyperfine-output.json",
    "chars": 98401,
    "preview": "{\n  \"results\": [\n    {\n      \"command\": \"5a4361fa037090adf729ab3f161832d969abc576 < 23c292d3f25c67082a2ba315a187268be1a9"
  },
  {
    "path": "etc/performance/data/hyperfine-processed-output.json",
    "chars": 446031,
    "preview": "[\n  {\n    \"command\": \"5a4361fa037090adf729ab3f161832d969abc576 < 23c292d3f25c67082a2ba315a187268be1a9b0ab.gitdiff > /dev"
  },
  {
    "path": "etc/performance/index.html",
    "chars": 1203596,
    "preview": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta charset=\"utf-8\" />\n    <link rel=\"shortcut icon\" href=\"#\" />\n    <script src=\""
  },
  {
    "path": "etc/release.Makefile",
    "chars": 1939,
    "preview": "# TODO:\n# - Check for a bat upgrade as it might bring new language support/themes\n# - Update README prior to release\n# -"
  },
  {
    "path": "manual/.gitignore",
    "chars": 5,
    "preview": "book\n"
  },
  {
    "path": "manual/Makefile",
    "chars": 91,
    "preview": "build:\n\tmdbook build\n\ninit:\n\tmdbook init --ignore none --title delta\n\nserve:\n\tmdbook serve\n"
  },
  {
    "path": "manual/book.toml",
    "chars": 206,
    "preview": "[book]\nauthors = [\"Dan Davison\"]\nlanguage = \"en\"\nmultilingual = false\nsrc = \"src\"\ntitle = \"delta\"\n\n[output.html]\ngit-rep"
  },
  {
    "path": "manual/src/SUMMARY.md",
    "chars": 2131,
    "preview": "# Summary\n\n- [Introduction](./introduction.md)\n- [Get started](./get-started.md)\n- [Features](./features.md)\n- [Installa"
  },
  {
    "path": "manual/src/build-delta-from-source.md",
    "chars": 371,
    "preview": "# Build delta from source\n\nYou'll need to [install the rust tools](https://www.rust-lang.org/learn/get-started). Then:\n\n"
  },
  {
    "path": "manual/src/choosing-colors-styles.md",
    "chars": 853,
    "preview": "# Choosing colors (styles)\n\nDelta detects your terminal background color automatically and chooses appropriate default c"
  },
  {
    "path": "manual/src/color-moved-support.md",
    "chars": 3662,
    "preview": "# `--color-moved` support\n\nRecent versions of Git (≥ v2.17, April 2018) are able to detect moved blocks of code and styl"
  },
  {
    "path": "manual/src/comparisons-with-other-tools.md",
    "chars": 1553,
    "preview": "# Comparisons with other tools\n\n(`delta --light`)\n\n<table>\n  <tr>\n    <td>\n      delta vs. git\n    </td>\n    <td>\n      "
  },
  {
    "path": "manual/src/configuration.md",
    "chars": 2070,
    "preview": "# Configuration\n\n## Git config file\n\nDelta uses [git config](https://git-scm.com/docs/git-config#_configuration_file) (`"
  },
  {
    "path": "manual/src/custom-themes.md",
    "chars": 1723,
    "preview": "# Custom themes\n\nA \"theme\" in delta is just a collection of settings grouped together in a named [feature](./features-na"
  },
  {
    "path": "manual/src/delta-configs-used-in-screenshots.md",
    "chars": 738,
    "preview": "# Delta configs used in screenshots\n\n## Side-by-side view\n\n[https://github.com/vuejs/vue/commit/7ec4627902020cccd7b3f4fb"
  },
  {
    "path": "manual/src/diff-highlight-and-diff-so-fancy-emulation.md",
    "chars": 1382,
    "preview": "# diff-highlight and diff-so-fancy emulation\n\nUse `--diff-highlight` or `--diff-so-fancy` to activate the respective emu"
  },
  {
    "path": "manual/src/environment-variables.md",
    "chars": 2581,
    "preview": "# Environment variables\n\n## Git environment variables\n\nThe `GIT_PAGER` environment variable must either not be set at al"
  },
  {
    "path": "manual/src/features-named-groups-of-settings.md",
    "chars": 1580,
    "preview": "# \"Features\": named groups of settings\n\nAll delta options can go under the `[delta]` section in your git config file. Ho"
  },
  {
    "path": "manual/src/features.md",
    "chars": 2437,
    "preview": "# Features\n\n- Language syntax highlighting with color themes\n- Within-line highlights based on a Levenshtein edit infere"
  },
  {
    "path": "manual/src/full---help-output.md",
    "chars": 38855,
    "preview": "# Full --help output\n\n```txt\nA viewer for git and diff output\n\nUsage: delta [OPTIONS] [MINUS_FILE] [PLUS_FILE]\n\nArgument"
  },
  {
    "path": "manual/src/get-started.md",
    "chars": 360,
    "preview": "# Get started\n\n[Install](./installation.md) delta and add this to your `~/.gitconfig`:\n\n```gitconfig\n[core]\n    pager = "
  },
  {
    "path": "manual/src/git-blame.md",
    "chars": 477,
    "preview": "# Git blame\n\nSet delta as the pager for `blame` in the `[pager]` section of your gitconfig: see the [example gitconfig]("
  },
  {
    "path": "manual/src/grep.md",
    "chars": 974,
    "preview": "# Grep\n\nDelta applies syntax-highlighting and other enhancements to standard grep output such as from [ripgrep](https://"
  },
  {
    "path": "manual/src/how-delta-works.md",
    "chars": 1011,
    "preview": "# How delta works\n\nIf you configure delta in gitconfig as above, then git will automatically send its output to delta.\nD"
  },
  {
    "path": "manual/src/hyperlinks.md",
    "chars": 3732,
    "preview": "# Hyperlinks\n\nDelta uses [terminal hyperlinks](https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda) to tu"
  },
  {
    "path": "manual/src/installation.md",
    "chars": 4519,
    "preview": "# Installation\n\nYou can download an executable for your system:\n[Linux (glibc)](https://github.com/dandavison/delta/rele"
  },
  {
    "path": "manual/src/introduction.md",
    "chars": 894,
    "preview": "# A syntax-highlighting pager for git, diff, and grep output\n\nCode evolves, and we all spend time studying diffs. Delta "
  },
  {
    "path": "manual/src/line-numbers.md",
    "chars": 480,
    "preview": "# Line numbers\n\n```gitconfig\n[delta]\n    line-numbers = true\n```\n\n<table><tr><td><img width=400px src=\"https://user-imag"
  },
  {
    "path": "manual/src/merge-conflicts.md",
    "chars": 897,
    "preview": "# Merge conflicts\n\nConsider setting [`merge.conflictStyle`](https://git-scm.com/docs/git-config#Documentation/git-config"
  },
  {
    "path": "manual/src/navigation-keybindings-for-large-diffs.md",
    "chars": 320,
    "preview": "# Navigation keybindings for large diffs\n\nUse the `navigate` feature to activate navigation keybindings. In this mode, p"
  },
  {
    "path": "manual/src/related-projects.md",
    "chars": 1337,
    "preview": "# Related projects\n\n## Used by delta\n\n- [alacritty/vte](https://github.com/alacritty/vte)\n- [mitsuhiko/console](https://"
  },
  {
    "path": "manual/src/side-by-side-view.md",
    "chars": 1831,
    "preview": "# Side-by-side view\n\n```gitconfig\n[delta]\n    side-by-side = true\n```\n\nBy default, side-by-side view has line-numbers ac"
  },
  {
    "path": "manual/src/supported-languages-and-themes.md",
    "chars": 1278,
    "preview": "# Supported languages and themes\n\nTo list the supported languages and color themes, use `delta --list-languages` and `de"
  },
  {
    "path": "manual/src/tips-and-tricks/24-bit-color-truecolor.md",
    "chars": 771,
    "preview": "# 24 bit color (truecolor)\n\nDelta looks best if your terminal application supports 24 bit colors. See <https://github.co"
  },
  {
    "path": "manual/src/tips-and-tricks/export-to-html.md",
    "chars": 480,
    "preview": "# Save output with colors to HTML/PDF etc\n\nInstall [ansifilter](https://formulae.brew.sh/formula/ansifilter).\n\n```sh\ngit"
  },
  {
    "path": "manual/src/tips-and-tricks/mouse-scrolling.md",
    "chars": 619,
    "preview": "# Mouse scrolling\n\nIf mouse scrolling isn't working correctly, ensure that you have the most recent version of `less`.\n\n"
  },
  {
    "path": "manual/src/tips-and-tricks/shell-completion.md",
    "chars": 515,
    "preview": "# Generating completion files for various shells\n\nDelta can generate completion files for various shells.\nUse the `--gen"
  },
  {
    "path": "manual/src/tips-and-tricks/tips-and-tricks.md",
    "chars": 16,
    "preview": "# Tips & tricks\n"
  },
  {
    "path": "manual/src/tips-and-tricks/toggling-delta-features.md",
    "chars": 1110,
    "preview": "To toggle features such as `side-by-side` on and off, you need to *not* turn on `line-numbers` or `side-by-side` etc in "
  },
  {
    "path": "manual/src/tips-and-tricks/using-delta-on-windows.md",
    "chars": 362,
    "preview": "# Using Delta on Windows\n\nDelta works on Windows. However, it is essential to use a recent version of `less.exe`: you ca"
  },
  {
    "path": "manual/src/tips-and-tricks/using-delta-with-gnu-screen.md",
    "chars": 1585,
    "preview": "# Using Delta with GNU Screen\n\nTrue color output in GNU Screen is currently only possible when using a development build"
  },
  {
    "path": "manual/src/tips-and-tricks/using-delta-with-magit.md",
    "chars": 344,
    "preview": "# Using Delta with Magit\n\nDelta can be used when displaying diffs in the Magit git client: see [magit-delta](https://git"
  },
  {
    "path": "manual/src/tips-and-tricks/using-delta-with-tmux.md",
    "chars": 796,
    "preview": "# Using Delta with tmux\n\nIf you're using tmux, it's worth checking that 24 bit color is working correctly. For example, "
  },
  {
    "path": "manual/src/tips-and-tricks/using-delta-with-vscode.md",
    "chars": 552,
    "preview": "# Using Delta with VSCode\n\nAll Delta features work correctly in VSCode's terminal emulator (please open an issue if that"
  },
  {
    "path": "manual/src/tips-and-tricks.md",
    "chars": 277,
    "preview": "# Tips & tricks\n\nDelta has a number of options to configure the appearance and behavior of the user interface, and integ"
  },
  {
    "path": "manual/src/usage.md",
    "chars": 745,
    "preview": "# Usage\n\nThe main way to use delta is to configure it as the pager for git: see [Configuration](./configuration.md).\n\nDe"
  },
  {
    "path": "src/align.rs",
    "chars": 13033,
    "preview": "use std::cmp::max;\nuse std::collections::VecDeque;\n\nconst DELETION_COST: usize = 2;\nconst INSERTION_COST: usize = 2;\n// "
  },
  {
    "path": "src/ansi/console_tests.rs",
    "chars": 2859,
    "preview": "// This file contains some unit tests copied from the `console` project:\n// https://github.com/mitsuhiko/console\n//\n// T"
  },
  {
    "path": "src/ansi/iterator.rs",
    "chars": 17817,
    "preview": "use anstyle_parse::{Params, ParamsIter};\nuse core::str::Bytes;\nuse std::convert::TryFrom;\nuse std::iter;\n\npub struct Ans"
  },
  {
    "path": "src/ansi/mod.rs",
    "chars": 14211,
    "preview": "mod console_tests;\nmod iterator;\n\nuse std::borrow::Cow;\n\nuse ansi_term::Style;\nuse itertools::Itertools;\nuse unicode_seg"
  },
  {
    "path": "src/cli.rs",
    "chars": 55041,
    "preview": "use std::collections::{HashMap, HashSet};\nuse std::ffi::OsString;\nuse std::path::{Path, PathBuf};\n\nuse bat::assets::High"
  },
  {
    "path": "src/color.rs",
    "chars": 6254,
    "preview": "use std::collections::HashMap;\nuse std::str::FromStr;\n\nuse ansi_term::Color;\nuse lazy_static::lazy_static;\nuse syntect::"
  },
  {
    "path": "src/colors.rs",
    "chars": 6833,
    "preview": "pub fn color_groups() -> Vec<(&'static str, Vec<(&'static str, &'static str)>)> {\n    vec![\n        (\n            \"Blue\""
  },
  {
    "path": "src/config.rs",
    "chars": 19855,
    "preview": "use std::collections::HashMap;\nuse std::path::PathBuf;\n\nuse clap::parser::ValueSource;\nuse regex::Regex;\nuse syntect::hi"
  },
  {
    "path": "src/delta.rs",
    "chars": 12019,
    "preview": "use std::borrow::Cow;\nuse std::collections::HashMap;\nuse std::io::{self, BufRead, IsTerminal, Write};\n\nuse bytelines::By"
  },
  {
    "path": "src/edits.rs",
    "chars": 33778,
    "preview": "use regex::Regex;\n\nuse unicode_segmentation::UnicodeSegmentation;\nuse unicode_width::UnicodeWidthStr;\n\nuse crate::align;"
  },
  {
    "path": "src/env.rs",
    "chars": 4040,
    "preview": "use std::env;\n\nconst COLORTERM: &str = \"COLORTERM\";\nconst BAT_THEME: &str = \"BAT_THEME\";\nconst GIT_CONFIG_PARAMETERS: &s"
  },
  {
    "path": "src/features/color_only.rs",
    "chars": 535,
    "preview": "use std::collections::HashSet;\n\nuse crate::features::raw;\nuse crate::features::OptionValueFunction;\n\n/// color-only is l"
  },
  {
    "path": "src/features/diff_highlight.rs",
    "chars": 3317,
    "preview": "use crate::features::raw;\nuse crate::features::OptionValueFunction;\n\npub fn make_feature() -> Vec<(String, OptionValueFu"
  },
  {
    "path": "src/features/diff_so_fancy.rs",
    "chars": 4020,
    "preview": "use crate::features::diff_highlight;\nuse crate::features::OptionValueFunction;\n\npub fn make_feature() -> Vec<(String, Op"
  },
  {
    "path": "src/features/hyperlinks.rs",
    "chars": 24265,
    "preview": "use std::borrow::Cow;\nuse std::path::Path;\n\nuse lazy_static::lazy_static;\nuse regex::{Match, Matches, Regex};\n\nuse crate"
  },
  {
    "path": "src/features/line_numbers.rs",
    "chars": 32368,
    "preview": "use std::cmp::max;\n\nuse lazy_static::lazy_static;\nuse regex::Regex;\n\nuse crate::color::ColorMode::*;\nuse crate::config;\n"
  },
  {
    "path": "src/features/mod.rs",
    "chars": 16000,
    "preview": "use std::collections::HashMap;\n\nuse crate::cli;\nuse crate::git_config::GitConfig;\nuse crate::options::option_value::Prov"
  },
  {
    "path": "src/features/navigate.rs",
    "chars": 9148,
    "preview": "use std::io::Write;\n#[cfg(target_os = \"windows\")]\nuse std::io::{Error, ErrorKind};\nuse std::path::PathBuf;\n\nuse crate::f"
  },
  {
    "path": "src/features/raw.rs",
    "chars": 1723,
    "preview": "use crate::features::OptionValueFunction;\n\npub fn make_feature() -> Vec<(String, OptionValueFunction)> {\n    builtin_fea"
  },
  {
    "path": "src/features/side_by_side.rs",
    "chars": 27252,
    "preview": "use itertools::Itertools;\nuse syntect::highlighting::Style as SyntectStyle;\nuse unicode_width::UnicodeWidthStr;\n\nuse cra"
  },
  {
    "path": "src/format.rs",
    "chars": 18136,
    "preview": "use std::convert::{TryFrom, TryInto};\n\nuse regex::Regex;\nuse smol_str::SmolStr;\nuse unicode_segmentation::UnicodeSegment"
  },
  {
    "path": "src/git_config/mod.rs",
    "chars": 10237,
    "preview": "mod remote;\n\npub use remote::GitRemoteRepo;\n\nuse crate::env::DeltaEnv;\nuse regex::Regex;\nuse std::cell::OnceCell;\nuse st"
  },
  {
    "path": "src/git_config/remote.rs",
    "chars": 9509,
    "preview": "use std::result::Result;\nuse std::str::FromStr;\n\nuse lazy_static::lazy_static;\nuse regex::Regex;\n\nuse crate::errors::*;\n"
  },
  {
    "path": "src/handlers/blame.rs",
    "chars": 20582,
    "preview": "use chrono::{DateTime, FixedOffset};\nuse lazy_static::lazy_static;\nuse regex::Regex;\nuse std::borrow::Cow;\nuse unicode_w"
  },
  {
    "path": "src/handlers/commit_meta.rs",
    "chars": 2028,
    "preview": "use std::borrow::Cow;\n\nuse super::draw;\nuse crate::delta::{State, StateMachine};\nuse crate::features;\n\nimpl StateMachine"
  },
  {
    "path": "src/handlers/diff_header.rs",
    "chars": 31734,
    "preview": "use std::borrow::Cow;\nuse std::path::Path;\n\nuse unicode_segmentation::UnicodeSegmentation;\n\nuse super::draw;\nuse crate::"
  },
  {
    "path": "src/handlers/diff_header_diff.rs",
    "chars": 2145,
    "preview": "use crate::delta::{DiffType, InMergeConflict, MergeParents, State, StateMachine};\nuse crate::handlers::diff_header::{get"
  },
  {
    "path": "src/handlers/diff_header_misc.rs",
    "chars": 1905,
    "preview": "use crate::delta::{DiffType, Source, State, StateMachine};\nuse crate::utils::path::relativize_path_maybe;\n\nimpl StateMac"
  },
  {
    "path": "src/handlers/diff_stat.rs",
    "chars": 3673,
    "preview": "use lazy_static::lazy_static;\nuse regex::Regex;\nuse std::borrow::Cow;\n\nuse crate::config::Config;\nuse crate::delta::{Sta"
  },
  {
    "path": "src/handlers/draw.rs",
    "chars": 8318,
    "preview": "use std::cmp::max;\nuse std::io::Write;\n\nuse crate::ansi;\nuse crate::cli::Width;\nuse crate::style::{DecorationStyle, Styl"
  },
  {
    "path": "src/handlers/git_show_file.rs",
    "chars": 1214,
    "preview": "use crate::delta::{State, StateMachine};\nuse crate::paint::{BgShouldFill, StyleSectionSpecifier};\nuse crate::utils::proc"
  },
  {
    "path": "src/handlers/grep.rs",
    "chars": 46973,
    "preview": "use std::borrow::Cow;\n\nuse lazy_static::lazy_static;\nuse regex::Regex;\nuse serde::Deserialize;\n\nuse crate::ansi;\nuse cra"
  },
  {
    "path": "src/handlers/hunk.rs",
    "chars": 14423,
    "preview": "use std::cmp::min;\n\nuse lazy_static::lazy_static;\n\nuse crate::cli;\nuse crate::config::{delta_unreachable, Config};\nuse c"
  },
  {
    "path": "src/handlers/hunk_header.rs",
    "chars": 24412,
    "preview": "// A module for constructing and writing the hunk header.\n//\n// The structure of the hunk header output by delta is\n// `"
  },
  {
    "path": "src/handlers/merge_conflict.rs",
    "chars": 49403,
    "preview": "use std::ops::{Index, IndexMut};\n\nuse itertools::Itertools;\nuse unicode_segmentation::UnicodeSegmentation;\n\nuse super::d"
  },
  {
    "path": "src/handlers/mod.rs",
    "chars": 1849,
    "preview": "/// This module contains functions handling input lines encountered during the\n/// main `StateMachine::consume()` loop.\n"
  },
  {
    "path": "src/handlers/ripgrep_json.rs",
    "chars": 11969,
    "preview": "// See https://github.com/BurntSushi/ripgrep\n// This module implements handling of `rg --json` output. It is called by t"
  },
  {
    "path": "src/handlers/submodule.rs",
    "chars": 2092,
    "preview": "use lazy_static::lazy_static;\nuse regex::Regex;\n\nuse crate::delta::{State, StateMachine};\n\nimpl StateMachine<'_> {\n    #"
  },
  {
    "path": "src/main.rs",
    "chars": 10225,
    "preview": "mod align;\nmod ansi;\nmod cli;\nmod color;\nmod colors;\nmod config;\nmod delta;\nmod edits;\nmod env;\nmod features;\nmod format"
  },
  {
    "path": "src/minusplus.rs",
    "chars": 1195,
    "preview": "use std::ops::{Index, IndexMut};\n\n/// Represent data related to removed/minus and added/plus lines which\n/// can be inde"
  },
  {
    "path": "src/options/get.rs",
    "chars": 11679,
    "preview": "use std::collections::HashMap;\n\nuse crate::cli;\nuse crate::features;\nuse crate::git_config::{self, GitConfigGet};\nuse cr"
  },
  {
    "path": "src/options/mod.rs",
    "chars": 63,
    "preview": "pub mod get;\npub mod option_value;\npub mod set;\npub mod theme;\n"
  },
  {
    "path": "src/options/option_value.rs",
    "chars": 2343,
    "preview": "use crate::config::delta_unreachable;\n\n/// A value associated with a Delta command-line option name.\npub enum OptionValu"
  },
  {
    "path": "src/options/set.rs",
    "chars": 31856,
    "preview": "use std::collections::{HashMap, HashSet, VecDeque};\nuse std::convert::TryInto;\nuse std::result::Result;\nuse std::str::Fr"
  },
  {
    "path": "src/options/theme.rs",
    "chars": 7450,
    "preview": "//! Delta doesn't have a formal concept of a \"theme\". What it has is\n//!\n//! 1. The choice of \"theme\". This is the langu"
  },
  {
    "path": "src/paint.rs",
    "chars": 45536,
    "preview": "use std::borrow::Cow;\nuse std::collections::HashMap;\nuse std::io::Write;\n\nuse ansi_term::ANSIString;\nuse itertools::Iter"
  },
  {
    "path": "src/parse_style.rs",
    "chars": 20727,
    "preview": "use bitflags::bitflags;\n\nuse crate::color;\nuse crate::config::delta_unreachable;\nuse crate::fatal;\nuse crate::git_config"
  },
  {
    "path": "src/parse_styles.rs",
    "chars": 20825,
    "preview": "use std::collections::{HashMap, HashSet};\n\nuse crate::cli;\nuse crate::color;\nuse crate::fatal;\nuse crate::git_config::Gi"
  },
  {
    "path": "src/style.rs",
    "chars": 19178,
    "preview": "use std::borrow::Cow;\nuse std::fmt;\nuse std::hash::{Hash, Hasher};\n\nuse lazy_static::lazy_static;\n\nuse crate::ansi;\nuse "
  },
  {
    "path": "src/subcommands/diff.rs",
    "chars": 4976,
    "preview": "use std::path::Path;\n\nuse crate::config::{self};\n\nuse crate::utils::git::retrieve_git_version;\n\nuse crate::subcommands::"
  },
  {
    "path": "src/subcommands/external.rs",
    "chars": 9255,
    "preview": "use crate::cli::Opt;\nuse clap::CommandFactory;\nuse clap::{ArgMatches, Error};\nuse std::ffi::{OsStr, OsString};\n\nconst RG"
  },
  {
    "path": "src/subcommands/generate_completion.rs",
    "chars": 347,
    "preview": "use clap::CommandFactory;\nuse clap_complete::{generate, Shell};\n\nuse crate::cli;\n\npub fn generate_completion_file(shell:"
  },
  {
    "path": "src/subcommands/list_syntax_themes.rs",
    "chars": 2488,
    "preview": "use std::io::{self, IsTerminal, Write};\n\nuse itertools::Itertools;\n\nuse crate::{options::theme::is_light_syntax_theme, u"
  },
  {
    "path": "src/subcommands/mod.rs",
    "chars": 463,
    "preview": "// internal subcommands:\npub mod generate_completion;\npub mod list_syntax_themes;\npub mod parse_ansi;\nmod sample_diff;\np"
  },
  {
    "path": "src/subcommands/parse_ansi.rs",
    "chars": 389,
    "preview": "use std::io::{self, BufRead};\n\n#[cfg(not(tarpaulin_include))]\npub fn parse_ansi() -> std::io::Result<()> {\n    use crate"
  },
  {
    "path": "src/subcommands/sample_diff.rs",
    "chars": 3965,
    "preview": "pub const DIFF: &[u8] = r#\"\ncommit 7ec4627902020cccd7b3f4fbc63e1b0d6b9798cd\nAuthor: Evan You <yyx990803@gmail.com>\nDate:"
  },
  {
    "path": "src/subcommands/show_colors.rs",
    "chars": 2862,
    "preview": "use crate::cli;\nuse crate::color;\nuse crate::colors;\nuse crate::config;\nuse crate::delta;\nuse crate::env::DeltaEnv;\nuse "
  },
  {
    "path": "src/subcommands/show_config.rs",
    "chars": 8884,
    "preview": "use std::io::Write;\n\nuse itertools::Itertools;\n\nuse crate::cli;\nuse crate::config;\nuse crate::features::side_by_side::{L"
  },
  {
    "path": "src/subcommands/show_syntax_themes.rs",
    "chars": 4061,
    "preview": "use crate::cli;\nuse crate::color::{ColorMode, ColorMode::*};\nuse crate::config;\nuse crate::delta;\nuse crate::env::DeltaE"
  },
  {
    "path": "src/subcommands/show_themes.rs",
    "chars": 2423,
    "preview": "use std::io::{self, ErrorKind, IsTerminal, Read};\n\nuse crate::cli;\nuse crate::color::ColorMode;\nuse crate::config;\nuse c"
  },
  {
    "path": "src/tests/ansi_test_utils.rs",
    "chars": 8998,
    "preview": "#[cfg(test)]\n#[allow(clippy::module_inception)]\npub mod ansi_test_utils {\n    use ansi_term;\n\n    use crate::ansi;\n    u"
  },
  {
    "path": "src/tests/integration_test_utils.rs",
    "chars": 11460,
    "preview": "#![cfg(test)]\n\nuse std::borrow::Cow;\nuse std::fs::File;\nuse std::io::{BufReader, Write};\nuse std::path::Path;\n\nuse bytel"
  },
  {
    "path": "src/tests/mod.rs",
    "chars": 296,
    "preview": "pub mod ansi_test_utils;\npub mod integration_test_utils;\npub mod test_example_diffs;\npub mod test_utils;\n\n#[cfg(not(test"
  },
  {
    "path": "src/tests/test_example_diffs.rs",
    "chars": 100810,
    "preview": "#[cfg(test)]\nmod tests {\n    use crate::ansi::{self, strip_ansi_codes};\n    use crate::cli::InspectRawLines;\n    use cra"
  },
  {
    "path": "src/tests/test_utils.rs",
    "chars": 1020,
    "preview": "#![cfg(test)]\n/// Return true iff `s` contains exactly one occurrence of substring `t`.\npub fn contains_once(s: &str, t:"
  },
  {
    "path": "src/utils/bat/LICENSE",
    "chars": 1406,
    "preview": "Files under this directory (i.e. src/bat_utils/) originated as copies of\nfiles from the `bat` project (https://github.co"
  },
  {
    "path": "src/utils/bat/assets.rs",
    "chars": 2655,
    "preview": "// Based on code from https://github.com/sharkdp/bat a1b9334a44a2c652f52dddaa83dbacba57372468\n// See src/utils/bat/LICEN"
  },
  {
    "path": "src/utils/bat/dirs.rs",
    "chars": 1294,
    "preview": "// Based on code from https://github.com/sharkdp/bat e981e974076a926a38f124b7d8746de2ca5f0a28\n// See src/utils/bat/LICEN"
  },
  {
    "path": "src/utils/bat/less.rs",
    "chars": 2066,
    "preview": "use std::path::PathBuf;\nuse std::process::Command;\n\npub fn retrieve_less_version(less_path: PathBuf) -> Option<usize> {\n"
  },
  {
    "path": "src/utils/bat/mod.rs",
    "chars": 74,
    "preview": "pub mod assets;\npub mod dirs;\nmod less;\npub mod output;\npub mod terminal;\n"
  },
  {
    "path": "src/utils/bat/output.rs",
    "chars": 8317,
    "preview": "// https://github.com/sharkdp/bat a1b9334a44a2c652f52dddaa83dbacba57372468\n// src/output.rs\n// See src/utils/bat/LICENSE"
  },
  {
    "path": "src/utils/bat/terminal.rs",
    "chars": 3084,
    "preview": "use ansi_term::Color::{self, Fixed, RGB};\nuse ansi_term::{self, Style};\n\nuse syntect::highlighting::{self, FontStyle};\n\n"
  },
  {
    "path": "src/utils/git.rs",
    "chars": 1008,
    "preview": "use std::process::Command;\n\npub fn retrieve_git_version() -> Option<(usize, usize)> {\n    if let Ok(git_path) = grep_cli"
  },
  {
    "path": "src/utils/helpwrap.rs",
    "chars": 10440,
    "preview": "#![allow(clippy::comparison_to_empty)] // no_indent != \"\", instead of !no_indent.is_empty()\n\nuse crate::ansi::measure_te"
  },
  {
    "path": "src/utils/mod.rs",
    "chars": 465,
    "preview": "#[cfg(not(tarpaulin_include))]\npub mod bat;\npub mod git;\npub mod helpwrap;\npub mod path;\npub mod process;\npub mod regex_"
  },
  {
    "path": "src/utils/path.rs",
    "chars": 4353,
    "preview": "use std::path::{Component, Path, PathBuf};\n\nuse crate::config::Config;\n\nuse super::process::calling_process;\n\n// Infer a"
  },
  {
    "path": "src/utils/process.rs",
    "chars": 45138,
    "preview": "use std::collections::{HashMap, HashSet};\nuse std::path::Path;\nuse std::sync::atomic::AtomicUsize;\nuse std::sync::{Arc, "
  },
  {
    "path": "src/utils/regex_replacement.rs",
    "chars": 3597,
    "preview": "use std::borrow::Cow;\n\nuse regex::{Regex, RegexBuilder};\n\n#[derive(Clone, Debug)]\npub struct RegexReplacement {\n    rege"
  },
  {
    "path": "src/utils/round_char_boundary.rs",
    "chars": 774,
    "preview": "// Taken from https://github.com/rust-lang/rust/pull/86497\n// TODO: Remove when this is in the version of the Rust stand"
  },
  {
    "path": "src/utils/syntect.rs",
    "chars": 3340,
    "preview": "use std::str::FromStr;\n\nuse syntect::highlighting::{Color, FontStyle, Style};\n\nuse crate::color;\nuse crate::style as del"
  },
  {
    "path": "src/utils/tabs.rs",
    "chars": 1990,
    "preview": "use unicode_segmentation::UnicodeSegmentation;\n\n#[derive(Debug, Clone)]\npub struct TabCfg {\n    replacement: String,\n}\n\n"
  },
  {
    "path": "src/utils/workarounds.rs",
    "chars": 2358,
    "preview": "// env var which should disable workarounds\nconst NO_WORKAROUNDS: &str = \"DELTA_NO_WORKAROUNDS\";\n\n// Work around a bug i"
  },
  {
    "path": "src/wrapping.rs",
    "chars": 42076,
    "preview": "use syntect::highlighting::Style as SyntectStyle;\nuse unicode_segmentation::UnicodeSegmentation;\nuse unicode_width::Unic"
  },
  {
    "path": "tests/test_deprecated_options",
    "chars": 328,
    "preview": "#!/bin/bash\n\n# if first arg provided, use it, otherwise default to release\nDELTA_BIN=${1:-./target/release/delta}\nDELTA="
  },
  {
    "path": "tests/test_navigate_less_history_file",
    "chars": 1562,
    "preview": "#!/bin/bash\n\nset -e\n\ncleanup() {\n    rm -r \"$TEMPDIR\"\n}\n\ndie() {\n    echo \"$1\" 1>&2\n    cleanup\n    exit 1\n}\n\nDELTA=\"${1"
  },
  {
    "path": "tests/test_raw_output_matches_git_on_full_repo_history",
    "chars": 344,
    "preview": "#!/bin/bash\n\n# if first arg provided, use it, otherwise default to release\nDELTA_BIN=${1:-./target/release/delta}\nDELTA="
  }
]

// ... and 1 more files (download for full content)

About this extraction

This page contains the full source code of the dandavison/delta GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 201 files (4.1 MB), approximately 1.1M tokens, and a symbol index with 1308 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!