Skip to main content

A modern replacement for cat and bat

Project description

                         ___    _________________   ______________  __
                        /   |  / ____/ ____/  _/ | / /  _/_  __/\ \/ /
                       / /| | / /_  / /_   / //  |/ // /  / /    \  / 
                      / ___ |/ __/ / __/ _/ // /|  // /  / /     / /  
                     /_/  |_/_/   /_/   /___/_/ |_/___/ /_/     /_/   

The ultimate, highly-aesthetic replacement for cat and bat.

Python Version License: MIT Code Style: Black


🚀 Overview

Affinity is a next-generation terminal tool designed for developers who want the rich viewing experience of modern IDEs (like VS Code) directly in their command line.

Say goodbye to plain text dumps. Affinity parses your code, wraps it in beautiful Unicode borders, syntax-highlights every token flawlessly, and visually connects logical code blocks using intelligent vertical scope guides.


✨ Spectacular Features

Feature Description
🎨 VS Code Scope Guides Intelligent vertical indentation guides that dynamically track scopes.
🌈 Syntax Highlighting Real-time, hierarchical token parsing powered by Pygments.
📦 Unicode UI Frames Beautiful frames that seamlessly resize to your terminal width without breaking.
🌲 Directory Viewer Automatically renders beautiful file trees when passed a directory instead of a file.
🎭 Theme Engine First-class support for Monokai, Dracula, One Dark, Nord, Solarized, and more.
🔍 Search Highlighting Find occurrences instantly within files via the --search flag.
🎯 Focus Mode Jump straight to the context you need with --line <num> highlighting.
Auto-Wrapping Long lines gracefully wrap to the next line keeping your UI boxed flawlessly.

💻 Installation

We provide an extremely straightforward installation suite. No system-level package conflicts, no dependency hell.

Automated Setup (Recommended)

Simply clone this repository and run the startup script. It bypasses environment headaches and securely installs the package exclusively for your local user.

# Securely install and configure Affinity
./start.sh

Note: The script will automatically add ~/.local/bin to your PATH if it isn't already there!

Uninstallation

To cleanly wipe Affinity and all its artifacts from your system:

# Remove Affinity and clean up build artifacts
./remove.sh

🛠️ CLI Usage

Affinity was designed with an intuitive, human-first command-line interface.

# 📖 Basic File Viewing
affinity main.py

# 🌲 View an entire directory tree
affinity src/

# 🧛 Use a specific color theme
affinity main.py --theme dracula

# 🔍 Highlight search terms in the file
affinity config.yaml --search "database"

# 🎯 Highlight a specific line
affinity server.rs --line 145

# 🚫 Disable all formatting (acts like standard 'cat')
affinity data.txt --plain

# ℹ️ View all available CLI options
affinity --help

⚙️ Configuration

Tired of passing the --theme flag every time? Affinity supports permanent user configuration.

Simply create a file at ~/.config/affinity/config.toml:

# Default configuration
theme = "dracula"
line_numbers = true
wrap = true
scope_guides = true

🧬 Architecture

Affinity achieves its stunning visuals by bridging Pygments (for robust token lexing) and Rich (for terminal ANSI rendering).

Unlike standard bat, Affinity intercepts the token stream and injects calculated characters at precise indentation boundaries by reading mathematical spaces, ensuring that syntax colors (spans) are perfectly preserved even when slicing text arrays on the fly.


🤝 Contributing

We welcome contributions from developers across the globe!

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

❓ FAQ

Q: Does Affinity support binary files?
A: Yes! Affinity detects binary signatures automatically and gracefully prevents terminal garbage output.

Q: Why not just use bat?
A: bat is incredible, but Affinity goes a step further by natively rendering VS Code-like vertical indentation guides. This makes reading heavily nested Python or YAML files infinitely easier in the terminal.


Built with ❤️ for developers everywhere.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

affinity_code_viewer-0.1.0.tar.gz (11.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

affinity_code_viewer-0.1.0-py3-none-any.whl (12.0 kB view details)

Uploaded Python 3

File details

Details for the file affinity_code_viewer-0.1.0.tar.gz.

File metadata

  • Download URL: affinity_code_viewer-0.1.0.tar.gz
  • Upload date:
  • Size: 11.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for affinity_code_viewer-0.1.0.tar.gz
Algorithm Hash digest
SHA256 af52cc2772db7341c62f2f592f7521584ea218fc05470fc876ebd3b4c2f6603a
MD5 dd45440d312cee7381dc8c8dac774369
BLAKE2b-256 3fdf7a474c03d6c73c55ca1a4ff7c0a59a4588eaf81d77f44b257aff3f723d6d

See more details on using hashes here.

File details

Details for the file affinity_code_viewer-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for affinity_code_viewer-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ca0e43cf5f0ca57b1efee07eb289cfaf45f9f93ec486b1c31493d6d0d4ec29fe
MD5 7eae1dfdbe228f77fe7b74c61fad220b
BLAKE2b-256 95d1558cc86e90490d7eac868108845cc793ed67f16b1c85f2f7a4dd5cc5622a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page