textual-code 0.0.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,19 @@
1
+ {
2
+ "name": "textual-code",
3
+ "dockerComposeFile": "docker-compose.dev.yml",
4
+ "service": "app",
5
+ "workspaceFolder": "/app",
6
+ "remoteUser": "appuser",
7
+ "customizations": {
8
+ "vscode": {
9
+ "extensions": [
10
+ "charliermarsh.ruff",
11
+ "esbenp.prettier-vscode",
12
+ "GitHub.copilot",
13
+ "mhutchie.git-graph",
14
+ "ms-python.python",
15
+ "Textualize.textual-syntax-highlighter"
16
+ ]
17
+ }
18
+ }
19
+ }
@@ -0,0 +1,2 @@
1
+ .venv
2
+ dist/
@@ -0,0 +1,21 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ # Publish on any tag starting with a `v`, e.g. v1.2.3
7
+ - v*
8
+
9
+ jobs:
10
+ pypi:
11
+ name: Publish to PyPI
12
+ runs-on: ubuntu-latest
13
+ environment:
14
+ name: release
15
+ permissions:
16
+ id-token: write
17
+ steps:
18
+ - uses: actions/checkout@v4
19
+ - uses: astral-sh/setup-uv@v3
20
+ - run: uv build
21
+ - run: uv publish --trusted-publishing always
@@ -0,0 +1,2 @@
1
+ .venv
2
+ *.py[co]
@@ -0,0 +1,13 @@
1
+ repos:
2
+ - repo: local
3
+ hooks:
4
+ - id: ruff-check
5
+ name: ruff check
6
+ entry: ruff check --force-exclude --fix
7
+ language: python
8
+ types_or: [python, pyi, jupyter]
9
+ - id: ruff-format
10
+ name: ruff format
11
+ entry: ruff format --force-exclude
12
+ language: python
13
+ types_or: [python, pyi, jupyter]
@@ -0,0 +1 @@
1
+ 3.12
@@ -0,0 +1,25 @@
1
+ {
2
+ "editor.formatOnSave": true,
3
+ "terminal.integrated.sendKeybindingsToShell": true,
4
+ "[python]": {
5
+ "editor.formatOnSave": true,
6
+ "editor.codeActionsOnSave": {
7
+ "source.fixAll": "explicit",
8
+ "source.organizeImports": "explicit"
9
+ },
10
+ "editor.defaultFormatter": "charliermarsh.ruff"
11
+ },
12
+ "python.testing.pytestArgs": [
13
+ "--rootdir",
14
+ "${workspaceFolder}/src"
15
+ ],
16
+ "python.testing.unittestEnabled": false,
17
+ "python.testing.pytestEnabled": true,
18
+ "python.analysis.extraPaths": [
19
+ "${workspaceFolder}/src"
20
+ ],
21
+ "python.autoComplete.extraPaths": [
22
+ "${workspaceFolder}/src"
23
+ ],
24
+ "python.analysis.typeCheckingMode": "basic"
25
+ }
@@ -0,0 +1,17 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [0.0.2] - 2025-01-07
11
+
12
+ ### Added
13
+
14
+ - Add basic text editing features
15
+
16
+ [unreleased]: https://github.com/rishubil/textual-code/compare/v0.0.2...HEAD
17
+ [0.0.2]: https://github.com/olivierlacan/keep-a-changelog/releases/tag/v0.0.2
@@ -0,0 +1,20 @@
1
+ FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim AS builder
2
+ ENV UV_COMPILE_BYTECODE=1
3
+ ENV UV_LINK_MODE=copy
4
+ WORKDIR /app
5
+ RUN --mount=type=cache,target=/root/.cache/uv \
6
+ --mount=type=bind,source=uv.lock,target=uv.lock \
7
+ --mount=type=bind,source=pyproject.toml,target=pyproject.toml \
8
+ uv sync --frozen --no-install-project --no-dev
9
+ ADD . /app
10
+ RUN --mount=type=cache,target=/root/.cache/uv \
11
+ uv sync --frozen --no-dev
12
+
13
+ FROM python:3.12-slim-bookworm
14
+ WORKDIR /app
15
+ COPY --from=builder --chown=1000:1000 /app /app
16
+ RUN addgroup --system --gid 1000 appuser \
17
+ && adduser --home /home/appuser --system --uid 1000 --gid 1000 appuser
18
+ USER appuser
19
+ ENV PATH="/app/.venv/bin:$PATH"
20
+ ENTRYPOINT ["textual-code"]
@@ -0,0 +1,21 @@
1
+ FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim AS builder
2
+ ENV UV_COMPILE_BYTECODE=1
3
+ ENV UV_LINK_MODE=copy
4
+ ENV SHELL /bin/bash
5
+ WORKDIR /app
6
+ RUN apt update && apt install -y --no-install-recommends \
7
+ openssh-client \
8
+ git \
9
+ && rm -rf /var/lib/apt/lists/*
10
+ RUN mkdir -p /app && chown 1000:1000 /app
11
+ RUN addgroup --system --gid 1000 appuser \
12
+ && adduser --home /home/appuser --system --uid 1000 --gid 1000 appuser
13
+ USER appuser
14
+ RUN --mount=type=cache,target=/home/appuser/.cache/uv,uid=1000,gid=1000 \
15
+ --mount=type=bind,source=uv.lock,target=uv.lock \
16
+ --mount=type=bind,source=pyproject.toml,target=pyproject.toml \
17
+ uv sync --frozen --no-install-project --no-dev
18
+ ADD . /app
19
+ RUN --mount=type=cache,target=/home/appuser/.cache/uv,uid=1000,gid=1000 \
20
+ uv sync --frozen --no-dev
21
+ ENV PATH="/app/.venv/bin:$PATH"
@@ -0,0 +1,175 @@
1
+ Metadata-Version: 2.4
2
+ Name: textual-code
3
+ Version: 0.0.2
4
+ Summary: Code editor for who don't know how to use vi
5
+ Project-URL: Repository, https://github.com/rishubil/textual-code.git
6
+ Project-URL: Changelog, https://github.com/rishubil/textual-code/blob/master/CHANGELOG.md
7
+ Author-email: Nesswit <rishubil@gmail.com>
8
+ Classifier: Development Status :: 3 - Alpha
9
+ Classifier: Environment :: Console
10
+ Classifier: Intended Audience :: Developers
11
+ Classifier: License :: OSI Approved :: MIT License
12
+ Classifier: Operating System :: MacOS
13
+ Classifier: Operating System :: Microsoft :: Windows :: Windows 10
14
+ Classifier: Operating System :: Microsoft :: Windows :: Windows 11
15
+ Classifier: Operating System :: POSIX :: Linux
16
+ Classifier: Programming Language :: Python :: 3.12
17
+ Classifier: Topic :: Text Editors
18
+ Requires-Python: >=3.12
19
+ Requires-Dist: textual[syntax]>=1.0.0
20
+ Description-Content-Type: text/markdown
21
+
22
+ # Textual Code
23
+
24
+ Code editor for who don't know how to use vi
25
+
26
+ ![Screenshot](docs/preview.svg)
27
+
28
+ > [!WARNING]
29
+ > This project is in the early stages of development.
30
+ > It is not ready for use yet.
31
+
32
+ ## What is Textual Code?
33
+
34
+ Textual Code is a TUI-based code editor that feels familiar right from the start.
35
+
36
+ You’ve probably had to SSH into a server at some point just to tweak a few lines of code.
37
+ However, vi or Emacs can be overkill for quick fixes, requiring you to remember a whole host of commands for even the simplest changes.
38
+ Furthermore, nano doesn’t always provide enough features for comfortable coding, and setting up a GUI editor on a remote server can be a real hassle.
39
+
40
+ That’s why Textual Code was created.
41
+ You likely use a GUI editor like VS Code or Sublime Text in your day-to-day work, and Textual Code offers a similar experience with no learning curve.
42
+ It behaves much like any other code editor you’re used to.
43
+
44
+ We’re not asking you to switch to Textual Code as your main editor.
45
+ Just remember it’s there when you need to jump onto a server and make a few quick edits.
46
+ It’s that simple.
47
+
48
+ ## Features
49
+
50
+ > [!WARNING]
51
+ > This project is in the early stages of development.
52
+ > the features listed below are not yet implemented or are only partially implemented.
53
+
54
+ - Commonly used shortcuts, such as `Ctrl+S` to save and `Ctrl+F` to search
55
+ - Command palette for quick access to all features, and no need to remember shortcuts
56
+ - Multiple cursors
57
+ - Mouse support
58
+ - Find and replace from workspace
59
+ - Explore files in the sidebar
60
+ - Open files to tabs
61
+ - Syntax highlighting
62
+
63
+ ## TODO
64
+
65
+ - [ ] Explore files
66
+ - [x] Show the files in the sidebar
67
+ - [ ] Open a specific folder from the command palette
68
+ - [ ] Open a specific folder from command arguments
69
+ - [ ] Create
70
+ - [ ] Create a new file from the sidebar
71
+ - [ ] Create a new file from the command palette
72
+ - [ ] Create a new folder from the sidebar
73
+ - [ ] Create a new folder from the command palette
74
+ - [ ] Open file
75
+ - [x] Open a specific file from the sidebar
76
+ - [x] Open files to tabs
77
+ - [x] Open new file from the command palette
78
+ - [x] Open new file from shortcut
79
+ - [ ] Open a specific file from the command palette
80
+ - [ ] Open a specific file from command arguments
81
+ - [ ] Save file
82
+ - [x] Save the current file
83
+ - [x] Save as the current file
84
+ - [x] Save the current file from shortcut
85
+ - [x] Save the current file from the command palette
86
+ - [ ] Save all files
87
+ - [ ] Close file
88
+ - [x] Close the current file
89
+ - [x] Close the current file from shortcut
90
+ - [x] Close the current file from the command palette
91
+ - [x] Ask to save the file before closing
92
+ - [ ] Close all files
93
+ - [ ] Delete
94
+ - [x] Delete the current file
95
+ - [x] Delete the current file from the command palette
96
+ - [ ] Delete a specific file from the sidebar
97
+ - [ ] Delete a specific file from the command palette
98
+ - [ ] Delete a specific folder from the sidebar
99
+ - [ ] Delete a specific folder from the command palette
100
+ - [x] Ask to confirm before deleting
101
+ - [ ] Edit file
102
+ - [x] Basic text editing
103
+ - [ ] Multiple cursors
104
+ - [ ] Code completion
105
+ - [ ] Syntax highlighting
106
+ - [x] Detect the language from the file extension
107
+ - [ ] Change the language
108
+ - [ ] Add more languages
109
+ - [ ] Change Indentation size and style
110
+ - [ ] Change line ending
111
+ - [ ] Change encoding
112
+ - [ ] Show line and column numbers
113
+ - [ ] Goto line and column
114
+ - [ ] Search and replace
115
+ - [ ] Plain Search
116
+ - [ ] Regex search
117
+ - [ ] Replace all
118
+ - [ ] Select all occurrences
119
+ - [ ] In the current file
120
+ - [ ] In all files
121
+ - [ ] Markdown preview
122
+ - [ ] Show the markdown preview
123
+ - [ ] Live preview
124
+ - [ ] Split view
125
+ - [ ] Split the view horizontally
126
+ - [ ] Split the view vertically
127
+ - [ ] Close the split view
128
+ - [ ] Resize the split view
129
+ - [ ] Move the focus to the split view
130
+ - [ ] Move tabs between split views
131
+ - [ ] Sidebar
132
+ - [x] Show the sidebar
133
+ - [ ] Hide the sidebar
134
+ - [ ] Resize the sidebar
135
+ - [ ] Setting
136
+ - [ ] Themes
137
+ - [ ] UI
138
+ - [ ] Syntax highlighting
139
+ - [ ] Shortcuts
140
+ - [ ] Editor
141
+ - [ ] default indentation size and style
142
+ - [ ] default line ending
143
+ - [ ] default encoding
144
+ - [ ] Etc
145
+ - [ ] Support EditorConfig
146
+ - [ ] Release
147
+ - [ ] Package the project
148
+ - [ ] Make the project available on PyPI
149
+
150
+ ## Usage
151
+
152
+ Textual Code is not available on PyPI yet.
153
+
154
+ You can run the code using Docker.
155
+
156
+ ```bash
157
+ docker compose build app
158
+ docker compose run --rm app
159
+ ```
160
+
161
+ ## Development
162
+
163
+ (You need to use devcontainer to run the code)
164
+
165
+ To open the textual console, run the following command:
166
+
167
+ ```bash
168
+ uv run textual console
169
+ ```
170
+
171
+ Then, you can run the following command to run the code:
172
+
173
+ ```bash
174
+ uv run textual run --dev textual_code:main
175
+ ```
@@ -0,0 +1,154 @@
1
+ # Textual Code
2
+
3
+ Code editor for who don't know how to use vi
4
+
5
+ ![Screenshot](docs/preview.svg)
6
+
7
+ > [!WARNING]
8
+ > This project is in the early stages of development.
9
+ > It is not ready for use yet.
10
+
11
+ ## What is Textual Code?
12
+
13
+ Textual Code is a TUI-based code editor that feels familiar right from the start.
14
+
15
+ You’ve probably had to SSH into a server at some point just to tweak a few lines of code.
16
+ However, vi or Emacs can be overkill for quick fixes, requiring you to remember a whole host of commands for even the simplest changes.
17
+ Furthermore, nano doesn’t always provide enough features for comfortable coding, and setting up a GUI editor on a remote server can be a real hassle.
18
+
19
+ That’s why Textual Code was created.
20
+ You likely use a GUI editor like VS Code or Sublime Text in your day-to-day work, and Textual Code offers a similar experience with no learning curve.
21
+ It behaves much like any other code editor you’re used to.
22
+
23
+ We’re not asking you to switch to Textual Code as your main editor.
24
+ Just remember it’s there when you need to jump onto a server and make a few quick edits.
25
+ It’s that simple.
26
+
27
+ ## Features
28
+
29
+ > [!WARNING]
30
+ > This project is in the early stages of development.
31
+ > the features listed below are not yet implemented or are only partially implemented.
32
+
33
+ - Commonly used shortcuts, such as `Ctrl+S` to save and `Ctrl+F` to search
34
+ - Command palette for quick access to all features, and no need to remember shortcuts
35
+ - Multiple cursors
36
+ - Mouse support
37
+ - Find and replace from workspace
38
+ - Explore files in the sidebar
39
+ - Open files to tabs
40
+ - Syntax highlighting
41
+
42
+ ## TODO
43
+
44
+ - [ ] Explore files
45
+ - [x] Show the files in the sidebar
46
+ - [ ] Open a specific folder from the command palette
47
+ - [ ] Open a specific folder from command arguments
48
+ - [ ] Create
49
+ - [ ] Create a new file from the sidebar
50
+ - [ ] Create a new file from the command palette
51
+ - [ ] Create a new folder from the sidebar
52
+ - [ ] Create a new folder from the command palette
53
+ - [ ] Open file
54
+ - [x] Open a specific file from the sidebar
55
+ - [x] Open files to tabs
56
+ - [x] Open new file from the command palette
57
+ - [x] Open new file from shortcut
58
+ - [ ] Open a specific file from the command palette
59
+ - [ ] Open a specific file from command arguments
60
+ - [ ] Save file
61
+ - [x] Save the current file
62
+ - [x] Save as the current file
63
+ - [x] Save the current file from shortcut
64
+ - [x] Save the current file from the command palette
65
+ - [ ] Save all files
66
+ - [ ] Close file
67
+ - [x] Close the current file
68
+ - [x] Close the current file from shortcut
69
+ - [x] Close the current file from the command palette
70
+ - [x] Ask to save the file before closing
71
+ - [ ] Close all files
72
+ - [ ] Delete
73
+ - [x] Delete the current file
74
+ - [x] Delete the current file from the command palette
75
+ - [ ] Delete a specific file from the sidebar
76
+ - [ ] Delete a specific file from the command palette
77
+ - [ ] Delete a specific folder from the sidebar
78
+ - [ ] Delete a specific folder from the command palette
79
+ - [x] Ask to confirm before deleting
80
+ - [ ] Edit file
81
+ - [x] Basic text editing
82
+ - [ ] Multiple cursors
83
+ - [ ] Code completion
84
+ - [ ] Syntax highlighting
85
+ - [x] Detect the language from the file extension
86
+ - [ ] Change the language
87
+ - [ ] Add more languages
88
+ - [ ] Change Indentation size and style
89
+ - [ ] Change line ending
90
+ - [ ] Change encoding
91
+ - [ ] Show line and column numbers
92
+ - [ ] Goto line and column
93
+ - [ ] Search and replace
94
+ - [ ] Plain Search
95
+ - [ ] Regex search
96
+ - [ ] Replace all
97
+ - [ ] Select all occurrences
98
+ - [ ] In the current file
99
+ - [ ] In all files
100
+ - [ ] Markdown preview
101
+ - [ ] Show the markdown preview
102
+ - [ ] Live preview
103
+ - [ ] Split view
104
+ - [ ] Split the view horizontally
105
+ - [ ] Split the view vertically
106
+ - [ ] Close the split view
107
+ - [ ] Resize the split view
108
+ - [ ] Move the focus to the split view
109
+ - [ ] Move tabs between split views
110
+ - [ ] Sidebar
111
+ - [x] Show the sidebar
112
+ - [ ] Hide the sidebar
113
+ - [ ] Resize the sidebar
114
+ - [ ] Setting
115
+ - [ ] Themes
116
+ - [ ] UI
117
+ - [ ] Syntax highlighting
118
+ - [ ] Shortcuts
119
+ - [ ] Editor
120
+ - [ ] default indentation size and style
121
+ - [ ] default line ending
122
+ - [ ] default encoding
123
+ - [ ] Etc
124
+ - [ ] Support EditorConfig
125
+ - [ ] Release
126
+ - [ ] Package the project
127
+ - [ ] Make the project available on PyPI
128
+
129
+ ## Usage
130
+
131
+ Textual Code is not available on PyPI yet.
132
+
133
+ You can run the code using Docker.
134
+
135
+ ```bash
136
+ docker compose build app
137
+ docker compose run --rm app
138
+ ```
139
+
140
+ ## Development
141
+
142
+ (You need to use devcontainer to run the code)
143
+
144
+ To open the textual console, run the following command:
145
+
146
+ ```bash
147
+ uv run textual console
148
+ ```
149
+
150
+ Then, you can run the following command to run the code:
151
+
152
+ ```bash
153
+ uv run textual run --dev textual_code:main
154
+ ```
@@ -0,0 +1,9 @@
1
+ services:
2
+ app:
3
+ build:
4
+ context: .
5
+ dockerfile: Dockerfile.dev
6
+ user: 1000:1000
7
+ command: sleep infinity
8
+ volumes:
9
+ - .:/app
@@ -0,0 +1,4 @@
1
+ services:
2
+ app:
3
+ build: .
4
+ user: 1000:1000