Steamers are akin to that of Telescope's Pickers. A "steamer" is the
class structure used by builtins to create new windows/buffers for the
user to interact with. This code was simply migrated across from
presser@new and refactored to adopt a class-like OOP paradigm.
steamers@new is a wrapper function accessed by builtins to invoke the
class constructor Steamers@new. Allows to greater control and
flexibility of window/buffer options.
Module is responsible for implementing a lazy-loader for any new tool
which is defined in table@modules. This function makes use of a
lazy-loading strategy (needs citation).
Script defines all tools available by presser.nvim, which are
lazy-loaded and executed when called by the user.
Function presser@find_replace has undergone major refactorisation:
- Keymaps have been updated to respect new codebase structure.
- A new OOP implementation is being experimented for constructing
windows, giving future flexibility. Consult presser/steamers.lua.
- Function now calls the class@streamers and invokes the
streamers@new() method. This constructs the windows/buffers which
was originally done via call to presser@new().
- This function is NOT directly accessed, but via proxy
table@builtins which lazy-loads function.
Any new tools which are created for presser are to be defined in this
file and lazy-loaded. Module may be renamed in future for theming
consistency.
All functions originally defined in presser/init.lua and part of
table@presser which were related to performing a specific action,
have be migrated to this file.
Function definitions have remained the same
- presser@start_buffer has been renamed
actions@buf_put_cursor_at() to allow for more generic
use-cases which the function name did not imply. Call this
function to place the cursor into any buffer in the GCM by its
label name.
File has undergone refactor to reduce overall expected responsibility
which was temporary for kickstarting the extension.
The presser/init.lua script will now, and only now, be responsible for
handling and setting up configuration of presser itself (extensibility
to be concluded in future). Now, the script defines presser@setup()
which is to be called by a user in their Neovim config script. This
function currently defines one user command which allows for executing
the builtins@find_replace.
Most functions which were defined in table@presser have been migrated to
a new location presser/actions, defined in table@actions.
The function definition presser@find_replace has been migrated to
presser.builtins (in builtins@find_replace).
Consult other commits related to migrations for more info about specific
refactors.
File has been moved to subdirectory.
Note: TBR = To Be Refactored/Restructured.
- changed `ctx` to `gcm` as import for context manager module.
- gcm/GCM = global context manager
- all associations with this variable have been updated
respectfully.
- func@new is no longer responsible for creating a new context in the
GCM. This is now handled per built-in.
- call to gcm@update now respects newly modified GCM structure.
- Added presser@move_next_buffer:
- temporary function to experiment moving between buffers which
are marked as `allowed = true` in the GCM.
- TBR.
- Added func@read_buffer:
- reads the contents of all buffers in the GCM.
- returns a table storing all collected buffer contents.
- TBR.
- Added presser@execute:
- temporary function which calls func@read_buffer and performs a
vim substitute as per the built-in presser@find_replace.
- TBR.
- Added func@start_buffer:
- place the cursor in an initial buffer by name.
- TBR. Should be func@put_cursor_in_buf (or similar).
- Updated keymap to store more keys for experimenting.
- Calculate the centre of the current window height (should check for
split windows in future, or determine terminal size).
- Changed ordering of window creation. Windows created in order they are
rendered.
- Added diagram for global context manager (GCM) structure.
- Removed local func@get_ctx_head (unused).
- Updated func@M.update:
- function takes 2 parameter arguments (see docstring).
- constructs new record for the given context in the GCM to keep
record of a newly constructed window buffer.
- function updates the GCM with the new record.
- Updated func@M.flush:
- handles for new structure of records in the GCM.
- see docstring for info.
Added a context manager for handling and managing windows/buffers
constructed by built-ins. This was handled by the `new()` function in
presser/init.lua but is now a dedicated module.