Skip to content

johannes-wolf/rpnspire

Repository files navigation

rpnspire

rpnspire logo

An RPN interface for the TI Nspire CX

As I really liked the rpn application for the TI-89 but could not find a usable RPN implementation for the TI nSpire, I've created rpnSpire, a powerful RPN implementation with many features such as searchable menus, autocompletion, an application framework in lua, a matrix editor, and many more.

Install

Use the latest build from the GitHub actions and put it under MyWidgets on your nspire CX.

Build

Building rpnspire depends on luabundler (install from npm) and luna.

make tns

Usage

The input field of rpnspire supports autocompletion for functions, variables and units. To trigger completion, press tab. Completion uses characters left to the cursor as compeltions prefix. Typing so<tab> will present you the first entry of a list of completion candidates starting with so. Pressing tab multiple times loops through all candidates. To accept a completion press hit enter. Completions are sorted by use (see config/stats.lua). Typing with the completion pop-up open, further filters the candidates.

RPN-Mode

RPN-mode is the default mode of rpnspire. In RPN-mode, pressing an operator or function key submits the current input and directly evaluates the operator or function pressed. If the cursor is not at the last position, input mode is set to non-rpn (alg) automatically.

Calling functions from RPN-mode is done by just entering the function name without parentheses. To set the argument for variable argument functions, use parentheses.

Matrix Editor

RPNspire features a matrix editor to write and edit matrixes.

Settings

See config/config.lua, to adjust defaults.

Bindings

See config/bindings.lua, to configure your own bindings.

rpnspire uses key-sequences for its bindings. .e means: Press . and then press e. The current sequence of keys pressed (that are part of a binding) is displayed by a dialog at the top of the screen.

Input

Key Function
.u Undo
.r Redo
left Move cursor left; if empty: roll up
right Move cursor right; if empty: roll down
up Focus stack
down Swap stack 1 & 2
enter Submit input; if empty: dup 1
tab Start completion for current input
.left Roll up beginning
.right Roll down end
Key Function
.= Store Y in X
.+-*/^ Push dot operator
.s Store interactive
.x Solve interactive
.e Edit last expression
.l Push list
., Join X and Y as Vector or List (depending on type of Y)
./ Explode interactive
------------------------------ ---------------------------------------------------------
.v Display variables
.a Display apps/tool
.b Display bindings
.m Open matrix editor
.return Show command palette editor

Stack

Key Function
left Roll stack up (1)
right Roll stack down (1)
up Move selection up
down Move selection down, focus input if out of bounds
backspace Delete selected item
enter Duplicate selected item
c Copy selected expression to input
r Copy selected result to input
7 Select bottom (oldest)
3 Select top (newest)
tab/escape Focus input

Matrix

Grid

Key Function
.left Move to column 1
.right Move to last column
.up Move to first row
.down Move to last row
= Evaluate cell
ctx Show context menu

Edit

Key Function
, Submit input and move to next column
enter Submit input and move to next row

Features

  • RPN interface supporting (nearly) all of the nspires operators
  • Stack manipulation functions (See global keybindings)
  • Undo and redo (.u/r)
  • Autocompletion for functions, variables and units
  • Nested keyboard shortcuts

What is not working

  • It is not possible to call TI-Basic Apps from Lua