txtr (texitor) banner

txtr (texitor)

8 devlogs
8h 13m 31s

A Vim-style LaTeX TUI editor. Designed for rapid LaTeX editing.

Repository

Loading README...

eee

txtr devlog - 08/03/26

syntax highlighting!!
was a pretty simple implementation but its there now. still working on fixing a few things like highlighting \ commands whilst inside math mode $$.

other than that, not much to really talk about lol.

changelog

  • docs(main): update readme (09ceccf)
  • feat(main): basic syntax highlighting for latex (WIP) (91dea07)
Attachment
0
eee

txtr devlog - 07/03/26

finished the command mode logic and integrated it into the status bar. Commands can also be used simultaneously ie “wq” saves and quits.
this now allows for the running of commands like

  • w - save
  • q - quit
    etc
    This means that txtr can be used as an actual text editor now.
    nearly finished with syntax highlighting too

changelog

  • feat(ui): finish the basic text editor (7e4057d)
  • feat(ui): add status bar and command modre (12c9573)
Attachment
0
eee

txtr devlog - 05/03/26

finally have an actual text editor (although file saving isnt quite there yet lol)
finished off the editor and statusbar widgets today. visual mode selection highlighting landed in editor.py, then the rest of the editor rendering got polished up gutter, cursor, cursorline, the works. statusbar is now complete with the mode pill, filename, modified dot and cursor position. also started a theme config file (colors.toml) so colours can eventually be swapped out without touching code -c atppuccin mocha as the default for now.

changelog

  • chore(main): update .gitignore to hide pycache folder in texitor dir (e65266d)
  • feat(ui): editor.py - highlighting text when in visual mode (b98ada5)
  • feat(config): add theme config file (WIP) (059141a)
  • feat(ui): finish the basic text editor (7e4057d)
Attachment
Attachment
0
eee

txtr devlog - 04/03/26

  • wrapped up the core keybind logic and fixed a few bugs that crept in from earlier stuff i did with the buffer/modes.
  • also moved onto the ui layer properly - got the full key dispatch and all normal mode action handlers done and into app.py (yank, del, paste, undo/redo, visual selection, replace char, indent etc) - will be adding indent indicators soon (those lil lines).
  • built out the main editor widget with line gutter, cursor block, cursorline highlight and visual selection rendering in both char and line-wise modes.
  • statusbar is getting there too, added mode pill, filename with modified indicator and cursor pos.

changelog

  • feat(core): keybinds logic finished (dd360d8)
  • style(main): update main program file (9f31346)
  • feat(ui): add action handlers and key dispatch (028f2af)
  • feat(ui): statusbar base variables/definitions (4da4c40)
  • docs(ui): statusbar additions (1011f05)
  • feat(ui): nearly done with gutter for editor logic (1cf2bcd)
Attachment
0
eee
  • Mostly sorted all of the key handling logic for the text editor
    –> the biggest thing was figuring out how to capture commands that are multiple commands ie g g etc

(no meaningfuk code output rn so im just putting an ss of code)

Changelog

  • other(main): remove random files (4282bb3)
  • feat(ui): key handling logic in app.py (91f6920)
Attachment
0
eee

txtr - first decent bit of progress

its official, the spaghetti code of my classes and functions has now become organised spaghetti

  • updated the main file so txtr actually does something when called (although still no ui yet)

  • finished the modes logic:

  • INSERT - text goes into the buffer (where you actually edit files as you would normally)

  • NORMAL - default mode, each keypress is a command

  • VISUAL - selection of characters

  • VISUAL LINE - same as visual but line by line

  • COMMAND (WIP) - the : command prompt, hardly ready yet.

  • Also added some vim inspired keybinds (heavily inspired as this is a vim-style editor and its what im used to)

  • The basic things include:
    gg and G - jump to start/end
    u/ctrl r - undo/redo
    and a lot more, theyre all in the repo :)

  • Also cleaned up some buffer code and fixed a little bit of logic :)
    (and i managed to make it actually install as a pip package this time)

Changelog

  • feat(core): open files that havent yet been made (a39216a)
  • chore(core): edit some stuff in buffer, add waffle to the comments lol (392e58b)
  • did i even change anything? (48102fc)
  • feat(core): add some keybinds (3337575)
  • feat(core): finish off modes logic (d2646ad)
  • feat(ui): add texitor app base - the main class for pulling together all of my spaghetti code (7385245)
Attachment
0
eee

the buffer is pretty much sorted, the main logic for deletions, undo/redo (i love stacks), file writing/opening etc is done.

  • havent done any of the frontend work yet but need to sort out all the modes (insert, visual and normal) beforehand.
  • will be using textual as my tui package for this project because curses truly is cursed.
  • also added a main.py file for testing purposes and to check the pyproject logic is correct and i can actualy install it as a pip package, so far, so good.

Changelog

  • feat(core): add buffer — lines, cursor, undo/redo, file i / o (c5d3033)
  • feat(core): add main.py for pyproject + pip package (6bb3c27)
Attachment
0
eee

New project!! (lantern is still going dw)

  • This is my first devlog for txtr (aka texitor).

  • txtr/texitor will be a Vim-style text editor, specifically designed for incredibly fast LaTeX typesetting or in more simple terms, writing cool math equations way faster than you could hand write them :)

  • So far, I have created the initial structure of the project, created a pyproject.toml file for the pip package that this will eventually be distributed as and also have begun to code some core logic such as the buffer and modes (insert, visual, normal etc).

Changelog

  • refactor(main): initial commit (b04035c)
  • fix(core): use setuptools.build_meta for broader compatibility (df0b76f)
  • docs(main): update .gitignore to ignore egg dir for texitor (c3fe1b6)

(no code output yet so heres a ss of the repo lol)

Attachment
0