xplr/en/messages.html
2023-04-22 12:24:15 +00:00

1280 lines
65 KiB
HTML

<!DOCTYPE HTML>
<html lang="en" class="sidebar-visible no-js dark">
<head>
<!-- Book generated using mdBook -->
<meta charset="UTF-8">
<title>Full List of Messages - xplr book</title>
<!-- Custom HTML head -->
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<meta name="description" content="A hackable, minimal, fast TUI file explorer">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="theme-color" content="#ffffff" />
<link rel="shortcut icon" href="favicon.png">
<link rel="stylesheet" href="css/variables.css">
<link rel="stylesheet" href="css/general.css">
<link rel="stylesheet" href="css/chrome.css">
<link rel="stylesheet" href="css/print.css" media="print">
<!-- Fonts -->
<link rel="stylesheet" href="FontAwesome/css/font-awesome.css">
<link rel="stylesheet" href="fonts/fonts.css">
<!-- Highlight.js Stylesheets -->
<link rel="stylesheet" href="highlight.css">
<link rel="stylesheet" href="tomorrow-night.css">
<link rel="stylesheet" href="ayu-highlight.css">
<!-- Custom theme stylesheets -->
<!-- EthicalAds -->
<script async src="https://media.ethicalads.io/media/client/ethicalads.min.js"></script>
</head>
<body>
<!-- Provide site root to javascript -->
<script type="text/javascript">
var path_to_root = "";
var default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "coal" : "dark";
</script>
<!-- Work around some values being stored in localStorage wrapped in quotes -->
<script type="text/javascript">
try {
var theme = localStorage.getItem('mdbook-theme');
var sidebar = localStorage.getItem('mdbook-sidebar');
if (theme.startsWith('"') && theme.endsWith('"')) {
localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1));
}
if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
}
} catch (e) { }
</script>
<!-- Set the theme before any content is loaded, prevents flash -->
<script type="text/javascript">
var theme;
try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { }
if (theme === null || theme === undefined) { theme = default_theme; }
var html = document.querySelector('html');
html.classList.remove('no-js')
html.classList.remove('dark')
html.classList.add(theme);
html.classList.add('js');
</script>
<!-- Hide / unhide sidebar before it is displayed -->
<script type="text/javascript">
var html = document.querySelector('html');
var sidebar = 'hidden';
if (document.body.clientWidth >= 1080) {
try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
sidebar = sidebar || 'visible';
}
html.classList.remove('sidebar-visible');
html.classList.add("sidebar-" + sidebar);
</script>
<nav id="sidebar" class="sidebar" aria-label="Table of contents">
<div class="sidebar-scrollbox">
<ol class="chapter"><li class="chapter-item expanded "><a href="introduction.html"><strong aria-hidden="true">1.</strong> Introduction</a></li><li class="chapter-item expanded "><a href="quickstart.html"><strong aria-hidden="true">2.</strong> Quickstart</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="install.html"><strong aria-hidden="true">2.1.</strong> Install</a></li><li class="chapter-item expanded "><a href="post-install.html"><strong aria-hidden="true">2.2.</strong> Post Install</a></li></ol></li><li class="chapter-item expanded "><a href="configuration.html"><strong aria-hidden="true">3.</strong> Configuration</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="general-config.html"><strong aria-hidden="true">3.1.</strong> General</a></li><li class="chapter-item expanded "><a href="node_types.html"><strong aria-hidden="true">3.2.</strong> Node Types</a></li><li class="chapter-item expanded "><a href="layouts.html"><strong aria-hidden="true">3.3.</strong> Layouts</a></li><li class="chapter-item expanded "><a href="modes.html"><strong aria-hidden="true">3.4.</strong> Modes</a></li></ol></li><li class="chapter-item expanded "><a href="concept.html"><strong aria-hidden="true">4.</strong> Concept</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="key-bindings.html"><strong aria-hidden="true">4.1.</strong> Key Bindings</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="configure-key-bindings.html"><strong aria-hidden="true">4.1.1.</strong> Configure Key Bindings</a></li><li class="chapter-item expanded "><a href="default-key-bindings.html"><strong aria-hidden="true">4.1.2.</strong> Default Key Bindings</a></li><li class="chapter-item expanded "><a href="debug-key-bindings.html"><strong aria-hidden="true">4.1.3.</strong> Debug Key Bindings</a></li></ol></li><li class="chapter-item expanded "><a href="node-type.html"><strong aria-hidden="true">4.2.</strong> Node Type</a></li><li class="chapter-item expanded "><a href="layout.html"><strong aria-hidden="true">4.3.</strong> Layout</a></li><li class="chapter-item expanded "><a href="mode.html"><strong aria-hidden="true">4.4.</strong> Mode</a></li><li class="chapter-item expanded "><a href="message.html"><strong aria-hidden="true">4.5.</strong> Message</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="messages.html" class="active"><strong aria-hidden="true">4.5.1.</strong> Full List of Messages</a></li><li class="chapter-item expanded "><a href="input-operation.html"><strong aria-hidden="true">4.5.2.</strong> Input Operation</a></li></ol></li><li class="chapter-item expanded "><a href="borders.html"><strong aria-hidden="true">4.6.</strong> Borders</a></li><li class="chapter-item expanded "><a href="style.html"><strong aria-hidden="true">4.7.</strong> Style</a></li><li class="chapter-item expanded "><a href="searching.html"><strong aria-hidden="true">4.8.</strong> Searching</a></li><li class="chapter-item expanded "><a href="sorting.html"><strong aria-hidden="true">4.9.</strong> Sorting</a></li><li class="chapter-item expanded "><a href="filtering.html"><strong aria-hidden="true">4.10.</strong> Filtering</a></li><li class="chapter-item expanded "><a href="column-renderer.html"><strong aria-hidden="true">4.11.</strong> Column Renderer</a></li><li class="chapter-item expanded "><a href="lua-function-calls.html"><strong aria-hidden="true">4.12.</strong> Lua Function Calls</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="xplr.util.html"><strong aria-hidden="true">4.12.1.</strong> xplr.util</a></li></ol></li><li class="chapter-item expanded "><a href="environment-variables-and-pipes.html"><strong aria-hidden="true">4.13.</strong> Environment Variables and Pipes</a></li></ol></li><li class="chapter-item expanded "><a href="awesome-hacks.html"><strong aria-hidden="true">5.</strong> Awesome Hacks</a></li><li class="chapter-item expanded "><a href="plugin.html"><strong aria-hidden="true">6.</strong> Plugin</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="installing-plugins.html"><strong aria-hidden="true">6.1.</strong> Installing Plugins</a></li><li class="chapter-item expanded "><a href="writing-plugins.html"><strong aria-hidden="true">6.2.</strong> Writing Plugins</a></li><li class="chapter-item expanded "><a href="awesome-plugins.html"><strong aria-hidden="true">6.3.</strong> Awesome Plugins</a></li></ol></li><li class="chapter-item expanded "><a href="integration.html"><strong aria-hidden="true">7.</strong> Integration</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="awesome-integrations.html"><strong aria-hidden="true">7.1.</strong> Awesome Integrations</a></li></ol></li><li class="chapter-item expanded "><a href="alternatives.html"><strong aria-hidden="true">8.</strong> Alternatives</a></li><li class="chapter-item expanded "><a href="upgrade-guide.html"><strong aria-hidden="true">9.</strong> Upgrade Guide</a></li><li class="chapter-item expanded "><a href="community.html"><strong aria-hidden="true">10.</strong> Community</a></li><li class="chapter-item expanded "><a href="contribute.html"><strong aria-hidden="true">11.</strong> Contribute</a></li></ol>
<!-- EthicalAds -->
<div
id="docs-sidebar-bottom"
class="dark flat"
data-ea-publisher="xplrdev"
data-ea-type="image"
></div>
</div>
<div id="sidebar-resize-handle" class="sidebar-resize-handle"></div>
</nav>
<div id="page-wrapper" class="page-wrapper">
<div class="page">
<div id="menu-bar-hover-placeholder"></div>
<div id="menu-bar" class="menu-bar sticky bordered">
<div class="left-buttons">
<button id="sidebar-toggle" class="icon-button" type="button" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar">
<i class="fa fa-bars"></i>
</button>
<button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list">
<i class="fa fa-paint-brush"></i>
</button>
<ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu">
<li role="none"><button role="menuitem" class="theme" id="light">Light</button></li>
<li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li>
<li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li>
<li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li>
<li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li>
</ul>
<button id="search-toggle" class="icon-button" type="button" title="Search. (Shortkey: s)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="S" aria-controls="searchbar">
<i class="fa fa-search"></i>
</button>
</div>
<h1 class="menu-title">xplr book</h1>
<div class="right-buttons">
<a href="print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i>
</a>
<a href="https://github.com/sayanarijit/xplr" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i>
</a>
<a href="https://github.com/sayanarijit/xplr/edit/main/docs/en/src/messages.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i>
</a>
</div>
</div>
<div id="search-wrapper" class="hidden">
<form id="searchbar-outer" class="searchbar-outer">
<input type="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header">
</form>
<div id="searchresults-outer" class="searchresults-outer hidden">
<div id="searchresults-header" class="searchresults-header"></div>
<ul id="searchresults">
</ul>
</div>
</div>
<!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM -->
<script type="text/javascript">
document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) {
link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
});
</script>
<div id="content" class="content">
<main>
<h1 id="full-list-of-messages"><a class="header" href="#full-list-of-messages">Full List of Messages</a></h1>
<p>xplr <a href="message.html">messages</a> categorized based on their purpose.</p>
<h2 id="categories"><a class="header" href="#categories">Categories</a></h2>
<ul>
<li><a href="#exploring">Exploring</a></li>
<li><a href="#screen">Screen</a></li>
<li><a href="#navigation">Navigation</a></li>
<li><a href="#virtual-root">Virtual Root</a></li>
<li><a href="#reading-input">Reading Input</a></li>
<li><a href="#switching-mode">Switching Mode</a></li>
<li><a href="#switching-layout">Switching Layout</a></li>
<li><a href="#executing-commands">Executing Commands</a></li>
<li><a href="#calling-lua-functions">Calling Lua Functions</a></li>
<li><a href="#select-operations">Select Operations</a></li>
<li><a href="#filter-operations">Filter Operations</a></li>
<li><a href="#sort-operations">Sort Operations</a></li>
<li><a href="#search-operations">Search Operations</a></li>
<li><a href="#mouse-operations">Mouse Operations</a></li>
<li><a href="#fifo-operations">Fifo Operations</a></li>
<li><a href="#logging">Logging</a></li>
<li><a href="#debugging">Debugging</a></li>
<li><a href="#quit-options">Quit Options</a></li>
</ul>
<h3 id="exploring"><a class="header" href="#exploring">Exploring</a></h3>
<h4 id="explorepwd"><a class="header" href="#explorepwd">ExplorePwd</a></h4>
<p>Explore the present working directory and register the filtered nodes.
This operation is expensive. So, try to avoid using it too often.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;ExplorePwd&quot;</code></li>
<li>YAML: <code>ExplorePwd</code></li>
</ul>
<h4 id="explorepwdasync"><a class="header" href="#explorepwdasync">ExplorePwdAsync</a></h4>
<p>Explore the present working directory and register the filtered nodes
asynchronously. This operation happens asynchronously. That means, the
xplr directory buffers won't be updated immediately. Hence, it needs to
be used with care and probably with special checks in place. To explore
$PWD synchronously, use <code>ExplorePwd</code> instead.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;ExplorePwdAsync&quot;</code></li>
<li>YAML: <code>ExplorePwdAsync</code></li>
</ul>
<h4 id="exploreparentsasync"><a class="header" href="#exploreparentsasync">ExploreParentsAsync</a></h4>
<p>Explore the present working directory along with its parents and
register the filtered nodes. This operation happens asynchronously.
That means, the xplr directory buffers won't be updated immediately.
Hence, it needs to be used with care and probably with special checks
in place. To explore just the <code>$PWD</code> synchronously, use <code>ExplorePwd</code>
instead.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;ExploreParentsAsync&quot;</code></li>
<li>YAML: <code>ExploreParentsAsync</code></li>
</ul>
<h3 id="screen"><a class="header" href="#screen">Screen</a></h3>
<h4 id="clearscreen"><a class="header" href="#clearscreen">ClearScreen</a></h4>
<p>Clear the screen.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;ClearScreen&quot;</code></li>
<li>YAML: <code>ClearScreen</code></li>
</ul>
<h4 id="refresh"><a class="header" href="#refresh">Refresh</a></h4>
<p>Refresh the screen.
But it will not re-explore the directory if the working directory is
the same. If there is some change in the working directory and you want
to re-explore it, use the <code>Explore</code> message instead.
Also, it will not clear the screen. Use <code>ClearScreen</code> for that.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;Refresh&quot;</code></li>
<li>YAML: <code>Refresh</code></li>
</ul>
<h3 id="navigation"><a class="header" href="#navigation">Navigation</a></h3>
<h4 id="focusnext"><a class="header" href="#focusnext">FocusNext</a></h4>
<p>Focus next node.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;FocusNext&quot;</code></li>
<li>YAML: <code>FocusNext</code></li>
</ul>
<h4 id="focusnextselection"><a class="header" href="#focusnextselection">FocusNextSelection</a></h4>
<p>Focus on the next selected node.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;FocusNextSelection&quot;</code></li>
<li>YAML: <code>FocusNextSelection</code></li>
</ul>
<h4 id="focusnextbyrelativeindex"><a class="header" href="#focusnextbyrelativeindex">FocusNextByRelativeIndex</a></h4>
<p>Focus on the <code>n</code>th node relative to the current focus where <code>n</code> is a
given value.</p>
<p>Type: { FocusNextByRelativeIndex = int }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ FocusNextByRelativeIndex = 2 }</code></li>
<li>YAML: <code>FocusNextByRelativeIndex: 2</code></li>
</ul>
<h4 id="focusnextbyrelativeindexfrominput"><a class="header" href="#focusnextbyrelativeindexfrominput">FocusNextByRelativeIndexFromInput</a></h4>
<p>Focus on the <code>n</code>th node relative to the current focus where <code>n</code> is read
from the input buffer.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;FocusNextByRelativeIndexFromInput&quot;</code></li>
<li>YAML: <code>FocusNextByRelativeIndexFromInput</code></li>
</ul>
<h4 id="focusprevious"><a class="header" href="#focusprevious">FocusPrevious</a></h4>
<p>Focus on the previous item.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;FocusPrevious&quot;</code></li>
<li>YAML: <code>FocusPrevious</code></li>
</ul>
<h4 id="focuspreviousselection"><a class="header" href="#focuspreviousselection">FocusPreviousSelection</a></h4>
<p>Focus on the previous selection item.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;FocusPreviousSelection&quot;</code></li>
<li>YAML: <code>FocusPreviousSelection</code></li>
</ul>
<h4 id="focuspreviousbyrelativeindex"><a class="header" href="#focuspreviousbyrelativeindex">FocusPreviousByRelativeIndex</a></h4>
<p>Focus on the <code>-n</code>th node relative to the current focus where <code>n</code> is a
given value.</p>
<p>Type: { FocusPreviousByRelativeIndex = int }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ FocusPreviousByRelativeIndex = 2 }</code></li>
<li>YAML: <code>FocusPreviousByRelativeIndex: 2</code></li>
</ul>
<h4 id="focuspreviousbyrelativeindexfrominput"><a class="header" href="#focuspreviousbyrelativeindexfrominput">FocusPreviousByRelativeIndexFromInput</a></h4>
<p>Focus on the <code>-n</code>th node relative to the current focus where <code>n</code> is
read from the input buffer.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;FocusPreviousByRelativeIndexFromInput&quot;</code></li>
<li>YAML: <code>FocusPreviousByRelativeIndexFromInput</code></li>
</ul>
<h4 id="focusfirst"><a class="header" href="#focusfirst">FocusFirst</a></h4>
<p>Focus on the first node.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;FocusFirst&quot;</code></li>
<li>YAML: <code>FocusFirst</code></li>
</ul>
<h4 id="focuslast"><a class="header" href="#focuslast">FocusLast</a></h4>
<p>Focus on the last node.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;FocusLast&quot;</code></li>
<li>YAML: <code>FocusLast</code></li>
</ul>
<h4 id="focuspath"><a class="header" href="#focuspath">FocusPath</a></h4>
<p>Focus on the given path.</p>
<p>Type: { FocusPath = &quot;string&quot; }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ FocusPath = &quot;/path/to/file&quot; }</code></li>
<li>YAML: <code>FocusPath: /path/to/file</code></li>
</ul>
<h4 id="focuspathfrominput"><a class="header" href="#focuspathfrominput">FocusPathFromInput</a></h4>
<p>Focus on the path read from input buffer.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;FocusPathFromInput&quot;</code></li>
<li>YAML: <code>FocusPathFromInput</code></li>
</ul>
<h4 id="focusbyindex"><a class="header" href="#focusbyindex">FocusByIndex</a></h4>
<p>Focus on the absolute <code>n</code>th node where <code>n</code> is a given value.</p>
<p>Type: { FocusByIndex = int }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ FocusByIndex = 2 }</code></li>
<li>YAML: <code>FocusByIndex: 2</code></li>
</ul>
<h4 id="focusbyindexfrominput"><a class="header" href="#focusbyindexfrominput">FocusByIndexFromInput</a></h4>
<p>Focus on the absolute <code>n</code>th node where <code>n</code> is read from the input buffer.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;FocusByIndexFromInput&quot;</code></li>
<li>YAML: <code>FocusByIndexFromInput</code></li>
</ul>
<h4 id="focusbyfilename"><a class="header" href="#focusbyfilename">FocusByFileName</a></h4>
<p>Focus on the file by name from the present working directory.</p>
<p>Type: { FocusByFileName = &quot;string&quot; }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ FocusByFileName = &quot;filename.ext&quot; }</code></li>
<li>YAML: <code>FocusByFileName: filename.ext</code></li>
</ul>
<h4 id="scrollup"><a class="header" href="#scrollup">ScrollUp</a></h4>
<p>Scroll up by terminal height.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;ScrollUp&quot;</code></li>
<li>YAML: <code>ScrollUp</code></li>
</ul>
<h4 id="scrolldown"><a class="header" href="#scrolldown">ScrollDown</a></h4>
<p>Scroll down by terminal height.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;ScrollDown&quot;</code></li>
<li>YAML: <code>ScrollDown</code></li>
</ul>
<h4 id="scrolluphalf"><a class="header" href="#scrolluphalf">ScrollUpHalf</a></h4>
<p>Scroll up by half of terminal height.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;ScrollUpHalf&quot;</code></li>
<li>YAML: <code>ScrollUpHalf</code></li>
</ul>
<h4 id="scrolldownhalf"><a class="header" href="#scrolldownhalf">ScrollDownHalf</a></h4>
<p>Scroll down by half of terminal height.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;ScrollDownHalf&quot;</code></li>
<li>YAML: <code>ScrollDownHalf</code></li>
</ul>
<h4 id="changedirectory"><a class="header" href="#changedirectory">ChangeDirectory</a></h4>
<p>Change the present working directory ($PWD)</p>
<p>Type: { ChangeDirectory = &quot;string&quot; }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ ChangeDirectory = &quot;/path/to/directory&quot; }</code></li>
<li>YAML: <code>ChangeDirectory: /path/to/directory</code></li>
</ul>
<h4 id="enter"><a class="header" href="#enter">Enter</a></h4>
<p>Enter into the currently focused path if it's a directory.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;Enter&quot;</code></li>
<li>YAML: <code>Enter</code></li>
</ul>
<h4 id="back"><a class="header" href="#back">Back</a></h4>
<p>Go back to the parent directory.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;Back&quot;</code></li>
<li>YAML: <code>Back</code></li>
</ul>
<h4 id="lastvisitedpath"><a class="header" href="#lastvisitedpath">LastVisitedPath</a></h4>
<p>Go to the last path visited.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;LastVisitedPath&quot;</code></li>
<li>YAML: <code>LastVisitedPath</code></li>
</ul>
<h4 id="nextvisitedpath"><a class="header" href="#nextvisitedpath">NextVisitedPath</a></h4>
<p>Go to the next path visited.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;NextVisitedPath&quot;</code></li>
<li>YAML: <code>NextVisitedPath</code></li>
</ul>
<h4 id="followsymlink"><a class="header" href="#followsymlink">FollowSymlink</a></h4>
<p>Follow the symlink under focus to its actual location.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;FollowSymlink&quot;</code></li>
<li>YAML: <code>FollowSymlink</code></li>
</ul>
<h3 id="virtual-root"><a class="header" href="#virtual-root">Virtual Root</a></h3>
<h4 id="setvroot"><a class="header" href="#setvroot">SetVroot</a></h4>
<p>Sets the virtual root for isolating xplr navigation, similar to
<code>--vroot</code>, but temporary (can be reset back to initial value).
If the $PWD is outside the vroot, xplr will automatically enter vroot.</p>
<p>Type: { SetVroot = &quot;string&quot; }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ SetVroot = &quot;/tmp&quot; }</code></li>
<li>YAML: <code>SetVroot: /tmp</code></li>
</ul>
<h4 id="unsetvroot"><a class="header" href="#unsetvroot">UnsetVroot</a></h4>
<p>Unset the virtual root temporarily (can be reset back to the initial
value).</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;UnsetVroot&quot;</code></li>
<li>YAML: <code>UnsetVroot</code></li>
</ul>
<h4 id="togglevroot"><a class="header" href="#togglevroot">ToggleVroot</a></h4>
<p>Toggle virtual root between unset, initial value and $PWD.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;ToggleVroot&quot;</code></li>
<li>YAML: <code>ToggleVroot</code></li>
</ul>
<h4 id="resetvroot"><a class="header" href="#resetvroot">ResetVroot</a></h4>
<p>Reset the virtual root back to the initial value.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;ResetVroot&quot;</code></li>
<li>YAML: <code>ResetVroot</code></li>
</ul>
<h3 id="reading-input"><a class="header" href="#reading-input">Reading Input</a></h3>
<h4 id="setinputprompt"><a class="header" href="#setinputprompt">SetInputPrompt</a></h4>
<p>Set the input prompt temporarily, until the input buffer is reset.</p>
<p>Type: { SetInputPrompt = string }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ SetInputPrompt = &quot;&quot; }</code></li>
<li>YAML: <code>SetInputPrompt: →</code></li>
</ul>
<h4 id="updateinputbuffer"><a class="header" href="#updateinputbuffer">UpdateInputBuffer</a></h4>
<p>Update the input buffer using cursor based operations.</p>
<p>Type: { UpdateInputBuffer = <a href="https://xplr.dev/en/input-operation">Input Operation</a> }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ UpdateInputBuffer = &quot;GoToPreviousWord&quot; }</code></li>
<li>YAML: <code>UpdateInputBuffer: GoToPreviousWord</code></li>
</ul>
<h4 id="updateinputbufferfromkey"><a class="header" href="#updateinputbufferfromkey">UpdateInputBufferFromKey</a></h4>
<p>Update the input buffer from the key read from keyboard input.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;UpdateInputBufferFromKey&quot;</code></li>
<li>YAML: <code>UpdateInputBufferFromKey</code></li>
</ul>
<h4 id="bufferinput"><a class="header" href="#bufferinput">BufferInput</a></h4>
<p>Append/buffer the given string into the input buffer.</p>
<p>Type: { BufferInput = &quot;string&quot; }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ BufferInput = &quot;foo&quot; }</code></li>
<li>YAML: <code>BufferInput: foo</code></li>
</ul>
<h4 id="bufferinputfromkey"><a class="header" href="#bufferinputfromkey">BufferInputFromKey</a></h4>
<p>Append/buffer the character read from a keyboard input into the
input buffer.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;BufferInputFromKey&quot;</code></li>
<li>YAML: <code>BufferInputFromKey</code></li>
</ul>
<h4 id="setinputbuffer"><a class="header" href="#setinputbuffer">SetInputBuffer</a></h4>
<p>Set/rewrite the input buffer with the given string.
When the input buffer is not-null (even if empty string)
it will show in the UI.</p>
<p>Type: { SetInputBuffer = &quot;string&quot; }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ SetInputBuffer = &quot;foo&quot; }</code></li>
<li>YAML: <code>SetInputBuffer: foo</code></li>
</ul>
<h4 id="removeinputbufferlastcharacter"><a class="header" href="#removeinputbufferlastcharacter">RemoveInputBufferLastCharacter</a></h4>
<p>Remove input buffer's last character.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;RemoveInputBufferLastCharacter&quot;</code></li>
<li>YAML: <code>RemoveInputBufferLastCharacter</code></li>
</ul>
<h4 id="removeinputbufferlastword"><a class="header" href="#removeinputbufferlastword">RemoveInputBufferLastWord</a></h4>
<p>Remove input buffer's last word.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;RemoveInputBufferLastWord&quot;</code></li>
<li>YAML: <code>RemoveInputBufferLastWord</code></li>
</ul>
<h4 id="resetinputbuffer"><a class="header" href="#resetinputbuffer">ResetInputBuffer</a></h4>
<p>Reset the input buffer back to null. It will not show in the UI.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;ResetInputBuffer&quot;</code></li>
<li>YAML: <code>ResetInputBuffer</code></li>
</ul>
<h3 id="switching-mode"><a class="header" href="#switching-mode">Switching Mode</a></h3>
<h4 id="switchmode"><a class="header" href="#switchmode">SwitchMode</a></h4>
<p>Switch input <a href="https://xplr.dev/en/modes">mode</a>.</p>
<p>Type : { SwitchMode = &quot;string&quot; }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ SwitchMode = &quot;default&quot; }</code></li>
<li>YAML: SwitchMode: default</li>
</ul>
<blockquote>
<p><strong>NOTE:</strong> To be specific about which mode to switch to, use
<code>SwitchModeBuiltin</code> or <code>SwitchModeCustom</code> instead.</p>
</blockquote>
<h4 id="switchmodekeepinginputbuffer"><a class="header" href="#switchmodekeepinginputbuffer">SwitchModeKeepingInputBuffer</a></h4>
<p>Switch input <a href="https://xplr.dev/en/modes">mode</a>.
It keeps the input buffer.</p>
<p>Type: { SwitchModeKeepingInputBuffer = &quot;string&quot; }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ SwitchModeKeepingInputBuffer = &quot;default&quot; }</code></li>
<li>YAML: <code>SwitchModeKeepingInputBuffer: default</code></li>
</ul>
<blockquote>
<p><strong>NOTE:</strong> To be specific about which mode to switch to, use
<code>SwitchModeBuiltinKeepingInputBuffer</code> or
<code>SwitchModeCustomKeepingInputBuffer</code> instead.</p>
</blockquote>
<h4 id="switchmodebuiltin"><a class="header" href="#switchmodebuiltin">SwitchModeBuiltin</a></h4>
<p>Switch to a <a href="https://xplr.dev/en/modes#builtin">builtin mode</a>.
It clears the input buffer.</p>
<p>Type: { SwitchModeBuiltin = &quot;string&quot; }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ SwitchModeBuiltin = &quot;default&quot; }</code></li>
<li>YAML: <code>SwitchModeBuiltin: default</code></li>
</ul>
<h4 id="switchmodebuiltinkeepinginputbuffer"><a class="header" href="#switchmodebuiltinkeepinginputbuffer">SwitchModeBuiltinKeepingInputBuffer</a></h4>
<p>Switch to a <a href="https://xplr.dev/en/modes#builtin">builtin mode</a>.
It keeps the input buffer.</p>
<p>Type: { SwitchModeBuiltinKeepingInputBuffer = &quot;string&quot; }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ SwitchModeBuiltinKeepingInputBuffer = &quot;default&quot; }</code></li>
<li>YAML: <code>SwitchModeBuiltinKeepingInputBuffer: default</code></li>
</ul>
<h4 id="switchmodecustom"><a class="header" href="#switchmodecustom">SwitchModeCustom</a></h4>
<p>Switch to a <a href="https://xplr.dev/en/modes#custom">custom mode</a>.
It clears the input buffer.</p>
<p>Type: { SwitchModeCustom = &quot;string&quot; }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ SwitchModeCustom = &quot;my_custom_mode&quot; }</code></li>
<li>YAML: <code>SwitchModeCustom: my_custom_mode</code></li>
</ul>
<h4 id="switchmodecustomkeepinginputbuffer"><a class="header" href="#switchmodecustomkeepinginputbuffer">SwitchModeCustomKeepingInputBuffer</a></h4>
<p>Switch to a <a href="https://xplr.dev/en/modes#custom">custom mode</a>.
It keeps the input buffer.</p>
<p>Type: { SwitchModeCustomKeepingInputBuffer = &quot;string&quot; }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ SwitchModeCustomKeepingInputBuffer = &quot;my_custom_mode&quot; }</code></li>
<li>YAML: <code>SwitchModeCustomKeepingInputBuffer: my_custom_mode</code></li>
</ul>
<h4 id="popmode"><a class="header" href="#popmode">PopMode</a></h4>
<p>Pop the last mode from the history and switch to it.
It clears the input buffer.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;PopMode&quot;</code></li>
<li>YAML: <code>PopMode</code></li>
</ul>
<h4 id="popmodekeepinginputbuffer"><a class="header" href="#popmodekeepinginputbuffer">PopModeKeepingInputBuffer</a></h4>
<p>Pop the last mode from the history and switch to it.
It keeps the input buffer.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>PopModeKeepingInputBuffer</code></li>
<li>YAML: <code>PopModeKeepingInputBuffer</code></li>
</ul>
<h3 id="switching-layout"><a class="header" href="#switching-layout">Switching Layout</a></h3>
<h4 id="switchlayout"><a class="header" href="#switchlayout">SwitchLayout</a></h4>
<p>Switch <a href="https://xplr.dev/en/layouts">layout</a>.</p>
<p>Type: { SwitchLayout = &quot;string&quot; }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ SwitchLayout = &quot;default&quot; }</code></li>
<li>YAML: <code>SwitchLayout: default</code></li>
</ul>
<blockquote>
<p><strong>NOTE:</strong> To be specific about which layout to switch to, use <code>SwitchLayoutBuiltin</code> or
<code>SwitchLayoutCustom</code> instead.</p>
</blockquote>
<h4 id="switchlayoutbuiltin"><a class="header" href="#switchlayoutbuiltin">SwitchLayoutBuiltin</a></h4>
<p>Switch to a <a href="https://xplr.dev/en/layouts#builtin">builtin layout</a>.</p>
<p>Type: { SwitchLayoutBuiltin = &quot;string&quot; }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ SwitchLayoutBuiltin = &quot;default&quot; }</code></li>
<li>YAML: <code>SwitchLayoutBuiltin: default</code></li>
</ul>
<h4 id="switchlayoutcustom"><a class="header" href="#switchlayoutcustom">SwitchLayoutCustom</a></h4>
<p>Switch to a <a href="https://xplr.dev/en/layouts#custom">custom layout</a>.</p>
<p>Type: { SwitchLayoutCustom = &quot;string&quot; }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ SwitchLayoutCustom = &quot;my_custom_layout&quot; }</code></li>
<li>YAML: <code>SwitchLayoutCustom: my_custom_layout</code></li>
</ul>
<h3 id="executing-commands"><a class="header" href="#executing-commands">Executing Commands</a></h3>
<h4 id="call"><a class="header" href="#call">Call</a></h4>
<p>Like <code>Call0</code>, but it uses <code>\n</code> as the delimiter in input/output pipes,
hence it cannot handle files with <code>\n</code> in the name.
You may want to use <code>Call0</code> instead.</p>
<h4 id="call0"><a class="header" href="#call0">Call0</a></h4>
<p>Call a shell command with the given arguments.
Note that the arguments will be shell-escaped.
So to read the variables, the <code>-c</code> option of the shell
can be used.
You may need to pass <code>ExplorePwd</code> depending on the expectation.</p>
<p>Type: { Call0 = { command = &quot;string&quot;, args = { &quot;list&quot;, &quot;of&quot;, &quot;string&quot; } }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ Call0 = { command = &quot;bash&quot;, args = { &quot;-c&quot;, &quot;read -p test&quot; } } }</code></li>
<li>YAML: <code>Call0: { command: bash, args: [&quot;-c&quot;, &quot;read -p test&quot;] }</code></li>
</ul>
<h4 id="callsilently"><a class="header" href="#callsilently">CallSilently</a></h4>
<p>Like <code>CallSilently0</code>, but it uses <code>\n</code> as the delimiter in input/output
pipes, hence it cannot handle files with <code>\n</code> in the name.
You may want to use <code>CallSilently0</code> instead.</p>
<h4 id="callsilently0"><a class="header" href="#callsilently0">CallSilently0</a></h4>
<p>Like <code>Call0</code> but without the flicker. The stdin, stdout
stderr will be piped to null. So it's non-interactive.</p>
<p>Type: { CallSilently0 = { command = &quot;string&quot;, args = {&quot;list&quot;, &quot;of&quot;, &quot;string&quot;} } }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ CallSilently0 = { command = &quot;tput&quot;, args = { &quot;bell&quot; } } }</code></li>
<li>YAML: <code>CallSilently0: { command: tput, args: [&quot;bell&quot;] }</code></li>
</ul>
<h4 id="bashexec"><a class="header" href="#bashexec">BashExec</a></h4>
<p>Like <code>BashExec0</code>, but it uses <code>\n</code> as the delimiter in input/output
pipes, hence it cannot handle files with <code>\n</code> in the name.
You may want to use <code>BashExec0</code> instead.</p>
<h4 id="bashexec0"><a class="header" href="#bashexec0">BashExec0</a></h4>
<p>An alias to <code>Call: {command: bash, args: [&quot;-c&quot;, &quot;{string}&quot;], silent: false}</code>
where <code>{string}</code> is the given value.</p>
<p>Type: { BashExec0 = &quot;string&quot; }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ BashExec0 = &quot;read -p test&quot; }</code></li>
<li>YAML: <code>BashExec0: &quot;read -p test&quot;</code></li>
</ul>
<h4 id="bashexecsilently"><a class="header" href="#bashexecsilently">BashExecSilently</a></h4>
<p>Like <code>BashExecSilently0</code>, but it uses <code>\n</code> as the delimiter in
input/output pipes, hence it cannot handle files with <code>\n</code> in the name.
You may want to use <code>BashExecSilently0</code> instead.</p>
<h4 id="bashexecsilently0"><a class="header" href="#bashexecsilently0">BashExecSilently0</a></h4>
<p>Like <code>BashExec0</code> but without the flicker. The stdin, stdout
stderr will be piped to null. So it's non-interactive.</p>
<p>Type: { BashExecSilently0 = &quot;string&quot; }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ BashExecSilently0 = &quot;tput bell&quot; }</code></li>
<li>YAML: <code>BashExecSilently0: &quot;tput bell&quot;</code></li>
</ul>
<h3 id="calling-lua-functions"><a class="header" href="#calling-lua-functions">Calling Lua Functions</a></h3>
<h4 id="calllua"><a class="header" href="#calllua">CallLua</a></h4>
<p>Call a Lua function.</p>
<p>A <a href="https://xplr.dev/en/lua-function-calls#lua-context">Lua Context</a>
object will be passed to the function as argument.
The function can optionally return a list of messages for xplr to
handle after the executing the function.</p>
<p>Type: { CallLua = &quot;string&quot; }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ CallLua = &quot;custom.some_custom_funtion&quot; }</code></li>
<li>YAML: <code>CallLua: custom.some_custom_funtion</code></li>
</ul>
<h4 id="callluasilently"><a class="header" href="#callluasilently">CallLuaSilently</a></h4>
<p>Like <code>CallLua</code> but without the flicker. The stdin, stdout
stderr will be piped to null. So it's non-interactive.</p>
<p>Type: { CallLuaSilently = &quot;string&quot; }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ CallLuaSilently = &quot;custom.some_custom_function&quot; }</code></li>
<li>YAML: <code>CallLuaSilently: custom.some_custom_function</code></li>
</ul>
<h4 id="luaeval"><a class="header" href="#luaeval">LuaEval</a></h4>
<p>Execute Lua code without needing to define a function.</p>
<p>If the <code>string</code> is a callable, xplr will try to call it with with the
<a href="https://xplr.dev/en/lua-function-calls#lua-context">Lua Context</a>
argument.</p>
<p>Type: { LuaEval = &quot;string&quot; }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ LuaEval = [[return { { LogInfo = io.read() } }]] }</code></li>
<li>Lua: <code>{ LuaEval = [[function(app) return { { LogInfo = app.pwd } } end]] }</code></li>
<li>YAML: <code>LuaEval: &quot;return { { LogInfo = io.read() } }&quot;</code></li>
<li>YAML: <code>LuaEval: &quot;function(app) return { { LogInfo = app.pwd } } end&quot;</code></li>
</ul>
<h4 id="luaevalsilently"><a class="header" href="#luaevalsilently">LuaEvalSilently</a></h4>
<p>Like <code>LuaEval</code> but without the flicker. The stdin, stdout
stderr will be piped to null. So it's non-interactive.</p>
<p>Type: { LuaEvalSilently = &quot;string&quot; }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ LuaEvalSilently = [[return { { LogInfo = &quot;foo&quot; } }]] }</code></li>
<li>YAML: <code>LuaEvalSilently: &quot;return { { LogInfo = 'foo' } }&quot;</code></li>
</ul>
<h3 id="select-operations"><a class="header" href="#select-operations">Select Operations</a></h3>
<h4 id="select"><a class="header" href="#select">Select</a></h4>
<p>Select the focused node.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;Select&quot;</code></li>
<li>YAML: <code>Select</code></li>
</ul>
<h4 id="selectall"><a class="header" href="#selectall">SelectAll</a></h4>
<p>Select all the visible nodes.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;SelectAll&quot;</code></li>
<li>YAML: <code>SelectAll</code></li>
</ul>
<h4 id="selectpath"><a class="header" href="#selectpath">SelectPath</a></h4>
<p>Select the given path.</p>
<p>Type: { SelectPath = &quot;string&quot; }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ SelectPath = &quot;/path/to/file&quot; }</code></li>
<li>YAML: <code>SelectPath: /path/to/file</code></li>
</ul>
<h4 id="unselect"><a class="header" href="#unselect">UnSelect</a></h4>
<p>Unselect the focused node.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;UnSelect&quot;</code></li>
<li>YAML: <code>UnSelect</code></li>
</ul>
<h4 id="unselectall"><a class="header" href="#unselectall">UnSelectAll</a></h4>
<p>Unselect all the visible nodes.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;UnSelectAll&quot;</code></li>
<li>YAML: <code>UnSelectAll</code></li>
</ul>
<h4 id="unselectpath"><a class="header" href="#unselectpath">UnSelectPath</a></h4>
<p>UnSelect the given path.</p>
<p>Type: { UnSelectPath = &quot;string)&quot; }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ UnSelectPath = &quot;/path/to/file&quot; }</code></li>
<li>YAML: <code>UnSelectPath: /path/to/file</code></li>
</ul>
<h4 id="toggleselection"><a class="header" href="#toggleselection">ToggleSelection</a></h4>
<p>Toggle selection on the focused node.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;ToggleSelection&quot;</code></li>
<li>YAML <code>ToggleSelection</code></li>
</ul>
<h4 id="toggleselectall"><a class="header" href="#toggleselectall">ToggleSelectAll</a></h4>
<p>Toggle between select all and unselect all.
Example:</p>
<ul>
<li>Lua: <code>&quot;ToggleSelectAll&quot;</code></li>
<li>YAML: <code>ToggleSelectAll</code></li>
</ul>
<h4 id="toggleselectionbypath"><a class="header" href="#toggleselectionbypath">ToggleSelectionByPath</a></h4>
<p>Toggle selection by file path.</p>
<p>Type: { ToggleSelectionByPath = &quot;string&quot; }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ ToggleSelectionByPath = &quot;/path/to/file&quot; }</code></li>
<li>YAML: <code>ToggleSelectionByPath: /path/to/file</code></li>
</ul>
<h4 id="clearselection"><a class="header" href="#clearselection">ClearSelection</a></h4>
<p>Clear the selection.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;ClearSelection&quot;</code></li>
<li>YAML: <code>ClearSelection</code></li>
</ul>
<h3 id="filter-operations"><a class="header" href="#filter-operations">Filter Operations</a></h3>
<h4 id="addnodefilter"><a class="header" href="#addnodefilter">AddNodeFilter</a></h4>
<p>Add a <a href="https://xplr.dev/en/filtering#filter">filter</a> to exclude nodes
while exploring directories.
You need to call <code>ExplorePwd</code> or <code>ExplorePwdAsync</code> explicitly.
Filters get automatically cleared when changing directories.</p>
<p>Type: { AddNodeFilter = { filter = <a href="https://xplr.dev/en/filtering#filter">Filter</a>, input = &quot;string&quot; }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ AddNodeFilter = { filter = &quot;RelativePathDoesStartWith&quot;, input = &quot;foo&quot; } }</code></li>
<li>YAML: <code>AddNodeFilter: { filter: RelativePathDoesStartWith, input: foo }</code></li>
</ul>
<h4 id="removenodefilter"><a class="header" href="#removenodefilter">RemoveNodeFilter</a></h4>
<p>Remove an existing <a href="https://xplr.dev/en/filtering#filter">filter</a>.
You need to call <code>ExplorePwd</code> or <code>ExplorePwdAsync</code> explicitly.</p>
<p>Type: { RemoveNodeFilter = { filter = <a href="https://xplr.dev/en/filtering">Filter</a>, input = &quot;string&quot; }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ RemoveNodeFilter: { filter: &quot;RelativePathDoesStartWith&quot;, input: &quot;foo&quot; } }</code></li>
<li>YAML: <code>RemoveNodeFilter: { filter: RelativePathDoesStartWith, input: foo }</code></li>
</ul>
<h4 id="togglenodefilter"><a class="header" href="#togglenodefilter">ToggleNodeFilter</a></h4>
<p>Remove a <a href="https://xplr.dev/en/filtering#filter">filter</a> if it exists,
else, add a it.
You need to call <code>ExplorePwd</code> or <code>ExplorePwdAsync</code> explicitly.</p>
<p>Type: { ToggleNodeFilter = { filter = <a href="https://xplr.dev/en/filtering">Filter</a>, input = &quot;string&quot; }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ ToggleNodeFilter = { filter = &quot;RelativePathDoesStartWith&quot;, input = &quot;foo&quot; } }</code></li>
<li>YAML: <code>ToggleNodeFilter: { filter: RelativePathDoesStartWith, input: foo }</code></li>
</ul>
<h4 id="addnodefilterfrominput"><a class="header" href="#addnodefilterfrominput">AddNodeFilterFromInput</a></h4>
<p>Add a node <a href="https://xplr.dev/en/filtering#filter">filter</a> reading the
input from the buffer.
You need to call <code>ExplorePwd</code> or <code>ExplorePwdAsync</code> explicitly.</p>
<p>Type: { AddNodeFilterFromInput = <a href="https://xplr.dev/en/filtering">Filter</a> }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ AddNodeFilterFromInput = &quot;RelativePathDoesStartWith&quot; }</code></li>
<li>YAML: <code>AddNodeFilterFromInput: RelativePathDoesStartWith</code></li>
</ul>
<h4 id="removenodefilterfrominput"><a class="header" href="#removenodefilterfrominput">RemoveNodeFilterFromInput</a></h4>
<p>Remove a node <a href="https://xplr.dev/en/filtering#filter">filter</a> reading
the input from the buffer.
You need to call <code>ExplorePwd</code> or <code>ExplorePwdAsync</code> explicitly.</p>
<p>Type: { RemoveNodeFilterFromInput = <a href="https://xplr.dev/en/filtering">Filter</a> }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ RemoveNodeFilterFromInput = &quot;RelativePathDoesStartWith&quot; }</code></li>
<li>YAML: <code>RemoveNodeFilterFromInput: RelativePathDoesStartWith</code></li>
</ul>
<h4 id="removelastnodefilter"><a class="header" href="#removelastnodefilter">RemoveLastNodeFilter</a></h4>
<p>Remove the last node <a href="https://xplr.dev/en/filtering">filter</a>.
You need to call <code>ExplorePwd</code> or <code>ExplorePwdAsync</code> explicitly.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;RemoveLastNodeFilter&quot;</code></li>
<li>YAML: <code>RemoveLastNodeFilter</code></li>
</ul>
<h4 id="resetnodefilters"><a class="header" href="#resetnodefilters">ResetNodeFilters</a></h4>
<p>Reset the node <a href="https://xplr.dev/en/filtering">filters</a> back to the
default configuration.
You need to call <code>ExplorePwd</code> or <code>ExplorePwdAsync</code> explicitly.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;ResetNodeFilters&quot;</code></li>
<li>YAML: <code>ResetNodeFilters</code></li>
</ul>
<h4 id="clearnodefilters"><a class="header" href="#clearnodefilters">ClearNodeFilters</a></h4>
<p>Clear all the node <a href="https://xplr.dev/en/filtering">filters</a>.
You need to call <code>ExplorePwd</code> or <code>ExplorePwdAsync</code> explicitly.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;ClearNodeFilters&quot;</code></li>
<li>YAML: <code>ClearNodeFilters</code></li>
</ul>
<h3 id="sort-operations"><a class="header" href="#sort-operations">Sort Operations</a></h3>
<h4 id="addnodesorter"><a class="header" href="#addnodesorter">AddNodeSorter</a></h4>
<p>Add a <a href="https://xplr.dev/en/sorting#sorter">sorter</a> to sort nodes while
exploring directories.
You need to call <code>ExplorePwd</code> or <code>ExplorePwdAsync</code> explicitly.</p>
<p>Type: { AddNodeSorter = { sorter = <a href="https://xplr.dev/en/sorting#sorter">Sorter</a>, reverse = bool } }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ AddNodeSorter = { sorter = &quot;ByRelativePath&quot;, reverse = false } }</code></li>
<li>YAML: <code>AddNodeSorter: { sorter: ByRelativePath, reverse: false }</code></li>
</ul>
<h4 id="removenodesorter"><a class="header" href="#removenodesorter">RemoveNodeSorter</a></h4>
<p>Remove an existing <a href="https://xplr.dev/en/sorting#sorter">sorter</a>.
You need to call <code>ExplorePwd</code> or <code>ExplorePwdAsync</code> explicitly.</p>
<p>Type: { RemoveNodeSorter = <a href="https://xplr.dev/en/sorting#sorter">Sorter</a> }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ RemoveNodeSorter = &quot;ByRelativePath&quot; }</code></li>
<li>YAML: <code>RemoveNodeSorter: ByRelativePath</code></li>
</ul>
<h4 id="reversenodesorter"><a class="header" href="#reversenodesorter">ReverseNodeSorter</a></h4>
<p>Reverse a node <a href="https://xplr.dev/en/sorting#sorter">sorter</a>.
You need to call <code>ExplorePwd</code> or <code>ExplorePwdAsync</code> explicitly.</p>
<p>Type: { ReverseNodeSorter = <a href="https://xplr.dev/en/sorting#sorter">Sorter</a> }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ ReverseNodeSorter = &quot;ByRelativePath&quot; }</code></li>
<li>YAML: <code>ReverseNodeSorter: ByRelativePath</code></li>
</ul>
<h4 id="togglenodesorter"><a class="header" href="#togglenodesorter">ToggleNodeSorter</a></h4>
<p>Remove a <a href="https://xplr.dev/en/sorting#sorter">sorter</a> if it exists,
else, add a it.
You need to call <code>ExplorePwd</code> or <code>ExplorePwdAsync</code> explicitly.</p>
<p>Type: { ToggleNodeSorter = { sorter = <a href="https://xplr.dev/en/sorting#sorter">Sorter</a>, reverse = bool } }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ ToggleSorterSorter: { sorter = &quot;ByRelativePath&quot;, reverse = false } }</code></li>
<li>YAML: <code>ToggleSorterSorter: {sorter: ByRelativePath, reverse: false }</code></li>
</ul>
<h4 id="reversenodesorters"><a class="header" href="#reversenodesorters">ReverseNodeSorters</a></h4>
<p>Reverse the node <a href="https://xplr.dev/en/sorting#sorter">sorters</a>.
You need to call <code>ExplorePwd</code> or <code>ExplorePwdAsync</code> explicitly.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;ReverseNodeSorters&quot;</code></li>
<li>YAML: <code>ReverseNodeSorters</code></li>
</ul>
<h4 id="removelastnodesorter"><a class="header" href="#removelastnodesorter">RemoveLastNodeSorter</a></h4>
<p>Remove the last node <a href="https://xplr.dev/en/sorting#sorter">sorter</a>.
You need to call <code>ExplorePwd</code> or <code>ExplorePwdAsync</code> explicitly.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;RemoveLastNodeSorter&quot;</code></li>
<li>YAML: <code>RemoveLastNodeSorter</code></li>
</ul>
<h4 id="resetnodesorters"><a class="header" href="#resetnodesorters">ResetNodeSorters</a></h4>
<p>Reset the node <a href="https://xplr.dev/en/sorting#sorter">sorters</a> back to
the default configuration.
You need to call <code>ExplorePwd</code> or <code>ExplorePwdAsync</code> explicitly.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;ResetNodeSorters&quot;</code></li>
<li>YAML: <code>ResetNodeSorters</code></li>
</ul>
<h4 id="clearnodesorters"><a class="header" href="#clearnodesorters">ClearNodeSorters</a></h4>
<p>Clear all the node <a href="https://xplr.dev/en/sorting#sorter">sorters</a>.
You need to call <code>ExplorePwd</code> or <code>ExplorePwdAsync</code> explicitly.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;ClearNodeSorters&quot;</code></li>
<li>YAML: <code>ClearNodeSorters</code></li>
</ul>
<h3 id="search-operations"><a class="header" href="#search-operations">Search Operations</a></h3>
<h4 id="search"><a class="header" href="#search">Search</a></h4>
<p>Search files using the current or default (fuzzy) search algorithm.
You need to call <code>ExplorePwd</code> or <code>ExplorePwdAsync</code> explicitly.
It gets reset automatically when changing directory.</p>
<p>Type: { Search = &quot;string&quot; }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ Search = &quot;pattern&quot; }</code></li>
<li>YAML: <code>Search: pattern</code></li>
</ul>
<h4 id="searchfrominput"><a class="header" href="#searchfrominput">SearchFromInput</a></h4>
<p>Calls <code>Search</code> with the input taken from the input buffer.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;SearchFromInput&quot;</code></li>
<li>YAML: <code>SearchFromInput</code></li>
</ul>
<h4 id="searchfuzzy"><a class="header" href="#searchfuzzy">SearchFuzzy</a></h4>
<p>Search files using fuzzy match algorithm.
It keeps the filters, but overrides the sorters.
You need to call <code>ExplorePwd</code> or <code>ExplorePwdAsync</code> explicitly.
It gets reset automatically when changing directory.</p>
<p>Type: { SearchFuzzy = &quot;string&quot; }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ SearchFuzzy = &quot;pattern&quot; }</code></li>
<li>YAML: <code>SearchFuzzy: pattern</code></li>
</ul>
<h4 id="searchfuzzyfrominput"><a class="header" href="#searchfuzzyfrominput">SearchFuzzyFromInput</a></h4>
<p>Calls <code>SearchFuzzy</code> with the input taken from the input buffer.
You need to call <code>ExplorePwd</code> or <code>ExplorePwdAsync</code> explicitly.
It gets reset automatically when changing directory.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;SearchFuzzyFromInput&quot;</code></li>
<li>YAML: <code>SearchFuzzyFromInput</code></li>
</ul>
<h4 id="searchfuzzyunordered"><a class="header" href="#searchfuzzyunordered">SearchFuzzyUnordered</a></h4>
<p>Like <code>SearchFuzzy</code>, but doesn't not perform rank based sorting.
You need to call <code>ExplorePwd</code> or <code>ExplorePwdAsync</code> explicitly.
It gets reset automatically when changing directory.</p>
<p>Type: { SearchFuzzyUnordered = &quot;string&quot; }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ SearchFuzzyUnordered = &quot;pattern&quot; }</code></li>
<li>YAML: <code>SearchFuzzyUnordered: pattern</code></li>
</ul>
<h4 id="searchfuzzyunorderedfrominput"><a class="header" href="#searchfuzzyunorderedfrominput">SearchFuzzyUnorderedFromInput</a></h4>
<p>Calls <code>SearchFuzzyUnordered</code> with the input taken from the input buffer.
You need to call <code>ExplorePwd</code> or <code>ExplorePwdAsync</code> explicitly.
It gets reset automatically when changing directory.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;SearchFuzzyUnorderedFromInput&quot;</code></li>
<li>YAML: <code>SearchFuzzyUnorderedFromInput</code></li>
</ul>
<h4 id="searchregex"><a class="header" href="#searchregex">SearchRegex</a></h4>
<p>Search files using regex match algorithm.
It keeps the filters, but overrides the sorters.
You need to call <code>ExplorePwd</code> or <code>ExplorePwdAsync</code> explicitly.
It gets reset automatically when changing directory.</p>
<p>Type: { SearchRegex = &quot;string&quot; }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ SearchRegex = &quot;pattern&quot; }</code></li>
<li>YAML: <code>SearchRegex: pattern</code></li>
</ul>
<h4 id="searchregexfrominput"><a class="header" href="#searchregexfrominput">SearchRegexFromInput</a></h4>
<p>Calls <code>SearchRegex</code> with the input taken from the input buffer.
You need to call <code>ExplorePwd</code> or <code>ExplorePwdAsync</code> explicitly.
It gets reset automatically when changing directory.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;SearchRegexFromInput&quot;</code></li>
<li>YAML: <code>SearchRegexFromInput</code></li>
</ul>
<h4 id="searchregexunordered"><a class="header" href="#searchregexunordered">SearchRegexUnordered</a></h4>
<p>Like <code>SearchRegex</code>, but doesn't not perform rank based sorting.
You need to call <code>ExplorePwd</code> or <code>ExplorePwdAsync</code> explicitly.
It gets reset automatically when changing directory.</p>
<p>Type: { SearchRegexUnordered = &quot;string&quot; }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ SearchRegexUnordered = &quot;pattern&quot; }</code></li>
<li>YAML: <code>SearchRegexUnordered: pattern</code></li>
</ul>
<h4 id="searchregexunorderedfrominput"><a class="header" href="#searchregexunorderedfrominput">SearchRegexUnorderedFromInput</a></h4>
<p>Calls <code>SearchRegexUnordered</code> with the input taken from the input buffer.
You need to call <code>ExplorePwd</code> or <code>ExplorePwdAsync</code> explicitly.
It gets reset automatically when changing directory.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;SearchRegexUnorderedFromInput&quot;</code></li>
<li>YAML: <code>SearchRegexUnorderedFromInput</code></li>
</ul>
<h4 id="togglesearchalgorithm"><a class="header" href="#togglesearchalgorithm">ToggleSearchAlgorithm</a></h4>
<p>Toggles between different search algorithms, without changing the input
buffer
You need to call <code>ExplorePwd</code> or <code>ExplorePwdAsync</code> explicitly.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;ToggleSearchAlgorithm&quot;</code></li>
<li>YAML: <code>ToggleSearchAlgorithm</code></li>
</ul>
<h4 id="enablesearchorder"><a class="header" href="#enablesearchorder">EnableSearchOrder</a></h4>
<p>Enables ranked search without changing the input buffer.
You need to call <code>ExplorePwd</code> or <code>ExplorePwdAsync</code> explicitly.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;EnableOrderedSearch&quot;</code></li>
<li>YAML: <code>EnableSearchOrder</code></li>
</ul>
<h4 id="disablesearchorder"><a class="header" href="#disablesearchorder">DisableSearchOrder</a></h4>
<p>Disabled ranked search without changing the input buffer.
You need to call <code>ExplorePwd</code> or <code>ExplorePwdAsync</code> explicitly.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;DisableSearchOrder&quot;</code></li>
<li>YAML: <code>DisableSearchOrder</code></li>
</ul>
<h4 id="togglesearchorder"><a class="header" href="#togglesearchorder">ToggleSearchOrder</a></h4>
<p>Toggles ranked search without changing the input buffer.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;ToggleSearchOrder&quot;</code></li>
<li>YAML: <code>ToggleSearchOrder</code></li>
</ul>
<h4 id="acceptsearch"><a class="header" href="#acceptsearch">AcceptSearch</a></h4>
<p>Accepts the search by keeping the latest focus while in search mode.
Automatically calls <code>ExplorePwd</code>.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;AcceptSearch&quot;</code></li>
<li>YAML: <code>AcceptSearch</code></li>
</ul>
<h4 id="cancelsearch"><a class="header" href="#cancelsearch">CancelSearch</a></h4>
<p>Cancels the search by discarding the latest focus and recovering
the focus before search.
Automatically calls <code>ExplorePwd</code>.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;CancelSearch&quot;</code></li>
<li>YAML: <code>CancelSearch</code></li>
</ul>
<h3 id="mouse-operations"><a class="header" href="#mouse-operations">Mouse Operations</a></h3>
<h4 id="enablemouse"><a class="header" href="#enablemouse">EnableMouse</a></h4>
<p>Enable mouse</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;EnableMouse&quot;</code></li>
<li>YAML: <code>EnableMouse</code></li>
</ul>
<h4 id="disablemouse"><a class="header" href="#disablemouse">DisableMouse</a></h4>
<p>Disable mouse</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;DisableMouse&quot;</code></li>
<li>YAML: <code>DisableMouse</code></li>
</ul>
<h4 id="togglemouse"><a class="header" href="#togglemouse">ToggleMouse</a></h4>
<p>Toggle mouse</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;ToggleMouse&quot;</code></li>
<li>YAML: <code>ToggleMouse</code></li>
</ul>
<h3 id="fifo-operations"><a class="header" href="#fifo-operations">Fifo Operations</a></h3>
<h4 id="startfifo"><a class="header" href="#startfifo">StartFifo</a></h4>
<p>Start piping the focused path to the given fifo path</p>
<p>Type: { StartFifo = &quot;string&quot; }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ StartFifo = &quot;/tmp/xplr.fifo }</code></li>
<li>YAML: <code>StartFifo: /tmp/xplr.fifo</code></li>
</ul>
<h4 id="stopfifo"><a class="header" href="#stopfifo">StopFifo</a></h4>
<p>Close the active fifo and stop piping.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;StopFifo&quot;</code></li>
<li>YAML: <code>StopFifo</code></li>
</ul>
<h4 id="togglefifo"><a class="header" href="#togglefifo">ToggleFifo</a></h4>
<p>Toggle between {Start|Stop}Fifo</p>
<p>Type: { ToggleFifo = &quot;string&quot; }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ ToggleFifo = &quot;/path/to/fifo&quot; }</code></li>
<li>YAML: <code>ToggleFifo: /path/to/fifo</code></li>
</ul>
<h3 id="logging"><a class="header" href="#logging">Logging</a></h3>
<h4 id="loginfo"><a class="header" href="#loginfo">LogInfo</a></h4>
<p>Log information message.</p>
<p>Type: { LogInfo = &quot;string&quot; }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ LogInfo = &quot;launching satellite&quot; }</code></li>
<li>YAML: <code>LogInfo: launching satellite</code></li>
</ul>
<h4 id="logsuccess"><a class="header" href="#logsuccess">LogSuccess</a></h4>
<p>Log a success message.</p>
<p>Type: { LogSuccess = &quot;String&quot; }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ LogSuccess = &quot;satellite reached destination&quot; }</code></li>
<li>YAML: <code>LogSuccess: satellite reached destination</code></li>
</ul>
<h4 id="logwarning"><a class="header" href="#logwarning">LogWarning</a></h4>
<p>Log an warning message.</p>
<p>Type: { LogWarning = &quot;string&quot; }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ LogWarning = &quot;satellite is heating&quot; }</code></li>
<li>YAML: <code>LogWarning: satellite is heating</code></li>
</ul>
<h4 id="logerror"><a class="header" href="#logerror">LogError</a></h4>
<p>Log an error message.</p>
<p>Type: { LogError = &quot;string&quot; }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ LogError = &quot;satellite crashed&quot; }</code></li>
<li>YAML: <code>LogError: satellite crashed</code></li>
</ul>
<h3 id="debugging"><a class="header" href="#debugging">Debugging</a></h3>
<h4 id="debug"><a class="header" href="#debug">Debug</a></h4>
<p>Write the application state to a file, without quitting. Also helpful
for debugging.</p>
<p>Type: { Debug = &quot;string&quot; }</p>
<p>Example:</p>
<ul>
<li>Lua: <code>{ Debug = &quot;/path/to/file&quot; }</code></li>
<li>YAML: <code>Debug: /path/to/file</code></li>
</ul>
<h3 id="quit-options"><a class="header" href="#quit-options">Quit Options</a></h3>
<h4 id="quit"><a class="header" href="#quit">Quit</a></h4>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;Quit&quot;</code></li>
<li>YAML: <code>Quit</code></li>
</ul>
<p>Quit with returncode zero (success).</p>
<h4 id="printpwdandquit"><a class="header" href="#printpwdandquit">PrintPwdAndQuit</a></h4>
<p>Print $PWD and quit.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;PrintPwdAndQuit&quot;</code></li>
<li>YAML: <code>PrintPwdAndQuit</code></li>
</ul>
<h4 id="printfocuspathandquit"><a class="header" href="#printfocuspathandquit">PrintFocusPathAndQuit</a></h4>
<p>Print the path under focus and quit. It can be empty string if there's
nothing to focus.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;PrintFocusPathAndQuit&quot;</code></li>
<li>YAML: <code>PrintFocusPathAndQuit</code></li>
</ul>
<h4 id="printselectionandquit"><a class="header" href="#printselectionandquit">PrintSelectionAndQuit</a></h4>
<p>Print the selected paths and quit. It can be empty is no path is
selected.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;PrintSelectionAndQuit&quot;</code></li>
<li>YAML: <code>PrintSelectionAndQuit</code></li>
</ul>
<h4 id="printresultandquit"><a class="header" href="#printresultandquit">PrintResultAndQuit</a></h4>
<p>Print the selected paths if it's not empty, else, print the focused
node's path.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;PrintResultAndQuit&quot;</code></li>
<li>YAML: <code>PrintResultAndQuit</code></li>
</ul>
<h4 id="printappstateandquit"><a class="header" href="#printappstateandquit">PrintAppStateAndQuit</a></h4>
<p>Print the state of application in YAML format. Helpful for debugging or
generating the default configuration file.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;PrintAppStateAndQuit&quot;</code></li>
<li>YAML: <code>PrintAppStateAndQuit</code></li>
</ul>
<h4 id="terminate"><a class="header" href="#terminate">Terminate</a></h4>
<p>Terminate the application with a non-zero return code.</p>
<p>Example:</p>
<ul>
<li>Lua: <code>&quot;Terminate&quot;</code></li>
<li>YAML: <code>Terminate</code></li>
</ul>
<h2 id="also-see"><a class="header" href="#also-see">Also See:</a></h2>
<ul>
<li><a href="message.html">Message</a></li>
</ul>
</main>
<nav class="nav-wrapper" aria-label="Page navigation">
<!-- Mobile navigation buttons -->
<a rel="prev" href="message.html" class="mobile-nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
<i class="fa fa-angle-left"></i>
</a>
<a rel="next" href="input-operation.html" class="mobile-nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
<i class="fa fa-angle-right"></i>
</a>
<div style="clear: both"></div>
</nav>
</div>
</div>
<nav class="nav-wide-wrapper" aria-label="Page navigation">
<a rel="prev" href="message.html" class="nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
<i class="fa fa-angle-left"></i>
</a>
<a rel="next" href="input-operation.html" class="nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
<i class="fa fa-angle-right"></i>
</a>
</nav>
</div>
<script type="text/javascript">
window.playground_copyable = true;
</script>
<script src="elasticlunr.min.js" type="text/javascript" charset="utf-8"></script>
<script src="mark.min.js" type="text/javascript" charset="utf-8"></script>
<script src="searcher.js" type="text/javascript" charset="utf-8"></script>
<script src="clipboard.min.js" type="text/javascript" charset="utf-8"></script>
<script src="highlight.js" type="text/javascript" charset="utf-8"></script>
<script src="book.js" type="text/javascript" charset="utf-8"></script>
<!-- Custom JS scripts -->
</body>
</html>