Unnamed repository; edit this file 'description' to name the repository.
-rw-r--r--.github/workflows/gh-pages.yml2
-rw-r--r--book/src/generated/static-cmd.md4
-rw-r--r--book/theme/index.hbs254
-rw-r--r--helix-term/src/commands.rs4
4 files changed, 153 insertions, 111 deletions
diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml
index cf42047a..26130c98 100644
--- a/.github/workflows/gh-pages.yml
+++ b/.github/workflows/gh-pages.yml
@@ -17,7 +17,7 @@ jobs:
uses: peaceiris/actions-mdbook@v2
with:
# mdbook-version: 'latest'
- mdbook-version: '0.4.43'
+ mdbook-version: '0.5.2'
- run: mdbook build book
diff --git a/book/src/generated/static-cmd.md b/book/src/generated/static-cmd.md
index 1b347290..c4fab8bc 100644
--- a/book/src/generated/static-cmd.md
+++ b/book/src/generated/static-cmd.md
@@ -130,9 +130,9 @@
| `add_newline_below` | Add newline below | normal: `` ]<space> ``, select: `` ]<space> `` |
| `goto_type_definition` | Goto type definition | normal: `` gy ``, select: `` gy `` |
| `goto_implementation` | Goto implementation | normal: `` gi ``, select: `` gi `` |
-| `goto_file_start` | Goto line number <n> else file start | normal: `` gg `` |
+| `goto_file_start` | Goto line number `<n>` else file start | normal: `` gg `` |
| `goto_file_end` | Goto file end | |
-| `extend_to_file_start` | Extend to line number<n> else file start | select: `` gg `` |
+| `extend_to_file_start` | Extend to line number `<n>` else file start | select: `` gg `` |
| `extend_to_file_end` | Extend to file end | |
| `goto_file` | Goto files/URLs in selections | normal: `` gf ``, select: `` gf `` |
| `goto_file_hsplit` | Goto files in selections (hsplit) | normal: `` <C-w>f ``, `` <space>wf ``, select: `` <C-w>f ``, `` <space>wf `` |
diff --git a/book/theme/index.hbs b/book/theme/index.hbs
index 0a46ac64..2fb49c86 100644
--- a/book/theme/index.hbs
+++ b/book/theme/index.hbs
@@ -20,32 +20,29 @@
<meta name="theme-color" content="#ffffff">
{{#if favicon_svg}}
- <link rel="icon" href="{{ path_to_root }}favicon.svg">
+ <link rel="icon" href="{{ resource "favicon.svg" }}">
{{/if}}
{{#if favicon_png}}
- <link rel="shortcut icon" href="{{ path_to_root }}favicon.png">
+ <link rel="shortcut icon" href="{{ resource "favicon.png" }}">
{{/if}}
- <link rel="stylesheet" href="{{ path_to_root }}css/variables.css">
- <link rel="stylesheet" href="{{ path_to_root }}css/general.css">
- <link rel="stylesheet" href="{{ path_to_root }}css/chrome.css">
+ <link rel="stylesheet" href="{{ resource "css/variables.css" }}">
+ <link rel="stylesheet" href="{{ resource "css/general.css" }}">
+ <link rel="stylesheet" href="{{ resource "css/chrome.css" }}">
{{#if print_enable}}
- <link rel="stylesheet" href="{{ path_to_root }}css/print.css" media="print">
+ <link rel="stylesheet" href="{{ resource "css/print.css" }}" media="print">
{{/if}}
<!-- Fonts -->
- <link rel="stylesheet" href="{{ path_to_root }}FontAwesome/css/font-awesome.css">
- {{#if copy_fonts}}
- <link rel="stylesheet" href="{{ path_to_root }}fonts/fonts.css">
- {{/if}}
+ <link rel="stylesheet" href="{{ resource "fonts/fonts.css" }}">
<!-- Highlight.js Stylesheets -->
- <link rel="stylesheet" href="{{ path_to_root }}highlight.css">
- <link rel="stylesheet" href="{{ path_to_root }}tomorrow-night.css">
- <link rel="stylesheet" href="{{ path_to_root }}ayu-highlight.css">
+ <link rel="stylesheet" id="mdbook-highlight-css" href="{{ resource "highlight.css" }}">
+ <link rel="stylesheet" id="mdbook-tomorrow-night-css" href="{{ resource "tomorrow-night.css" }}">
+ <link rel="stylesheet" id="mdbook-ayu-highlight-css" href="{{ resource "ayu-highlight.css" }}">
<!-- Custom theme stylesheets -->
{{#each additional_css}}
- <link rel="stylesheet" href="{{ ../path_to_root }}{{ this }}">
+ <link rel="stylesheet" href="{{ resource this }}">
{{/each}}
{{#if mathjax_support}}
@@ -53,21 +50,38 @@
<script async src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
{{/if}}
- <!-- Provide site root to javascript -->
+ <!-- Provide site root and default themes to javascript -->
<script>
- var path_to_root = "{{ path_to_root }}";
- var default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "{{ preferred_dark_theme }}" : "{{ default_theme }}";
+ const path_to_root = "{{ path_to_root }}";
+ const default_light_theme = "{{ default_theme }}";
+ const default_dark_theme = "{{ preferred_dark_theme }}";
+ {{#if search_js}}
+ window.path_to_searchindex_js = "{{ resource "searchindex.js" }}";
+ {{/if}}
</script>
<!-- Start loading toc.js asap -->
- <script src="{{ path_to_root }}toc.js"></script>
+ <script src="{{ resource "toc.js" }}"></script>
</head>
<body>
- <div id="body-container">
+ <div id="mdbook-help-container">
+ <div id="mdbook-help-popup">
+ <h2 class="mdbook-help-title">Keyboard shortcuts</h2>
+ <div>
+ <p>Press <kbd>←</kbd> or <kbd>→</kbd> to navigate between chapters</p>
+ {{#if search_enabled}}
+ <p>Press <kbd>S</kbd> or <kbd>/</kbd> to search in the book</p>
+ {{/if}}
+ <p>Press <kbd>?</kbd> to show this help</p>
+ <p>Press <kbd>Esc</kbd> to hide this help</p>
+ </div>
+ </div>
+ </div>
+ <div id="mdbook-body-container">
<!-- Work around some values being stored in localStorage wrapped in quotes -->
<script>
try {
- var theme = localStorage.getItem('mdbook-theme');
- var sidebar = localStorage.getItem('mdbook-sidebar');
+ let theme = localStorage.getItem('mdbook-theme');
+ let sidebar = localStorage.getItem('mdbook-sidebar');
if (theme.startsWith('"') && theme.endsWith('"')) {
localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1));
@@ -81,7 +95,8 @@
<!-- Set the theme before any content is loaded, prevents flash -->
<script>
- var theme;
+ const default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? default_dark_theme : default_light_theme;
+ let theme;
try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { }
if (theme === null || theme === undefined) { theme = default_theme; }
const html = document.documentElement;
@@ -90,58 +105,62 @@
html.classList.add("js");
</script>
- <input type="checkbox" id="sidebar-toggle-anchor" class="hidden">
+ <input type="checkbox" id="mdbook-sidebar-toggle-anchor" class="hidden">
<!-- Hide / unhide sidebar before it is displayed -->
<script>
- var sidebar = null;
- var sidebar_toggle = document.getElementById("sidebar-toggle-anchor");
+ let sidebar = null;
+ const sidebar_toggle = document.getElementById("mdbook-sidebar-toggle-anchor");
if (document.body.clientWidth >= 1080) {
try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
sidebar = sidebar || 'visible';
} else {
sidebar = 'hidden';
+ sidebar_toggle.checked = false;
+ }
+ if (sidebar === 'visible') {
+ sidebar_toggle.checked = true;
+ } else {
+ html.classList.remove('sidebar-visible');
}
- sidebar_toggle.checked = sidebar === 'visible';
- html.classList.remove('sidebar-visible');
- html.classList.add("sidebar-" + sidebar);
</script>
- <nav id="sidebar" class="sidebar" aria-label="Table of contents">
+ <nav id="mdbook-sidebar" class="sidebar" aria-label="Table of contents">
<!-- populated by js -->
<mdbook-sidebar-scrollbox class="sidebar-scrollbox"></mdbook-sidebar-scrollbox>
<noscript>
<iframe class="sidebar-iframe-outer" src="{{ path_to_root }}toc.html"></iframe>
</noscript>
- <div id="sidebar-resize-handle" class="sidebar-resize-handle">
+ <div id="mdbook-sidebar-resize-handle" class="sidebar-resize-handle">
<div class="sidebar-resize-indicator"></div>
</div>
</nav>
- <div id="page-wrapper" class="page-wrapper">
+ <div id="mdbook-page-wrapper" class="page-wrapper">
<div class="page">
{{> header}}
- <div id="menu-bar-hover-placeholder"></div>
- <div id="menu-bar" class="menu-bar sticky">
+ <div id="mdbook-menu-bar-hover-placeholder"></div>
+ <div id="mdbook-menu-bar" class="menu-bar sticky">
<div class="left-buttons">
- <label id="sidebar-toggle" class="icon-button" for="sidebar-toggle-anchor" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar">
- <i class="fa fa-bars"></i>
+ <label id="mdbook-sidebar-toggle" class="icon-button" for="mdbook-sidebar-toggle-anchor" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="mdbook-sidebar">
+ {{fa "solid" "bars"}}
</label>
- <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 id="mdbook-theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="mdbook-theme-list">
+ {{fa "solid" "paintbrush"}}
</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 id="mdbook-theme-list" class="theme-popup" aria-label="Themes" role="menu">
+ <li role="none"><button role="menuitem" class="theme" id="mdbook-theme-default_theme">Auto</button></li>
+ <li role="none"><button role="menuitem" class="theme" id="mdbook-theme-light">Light</button></li>
+ <li role="none"><button role="menuitem" class="theme" id="mdbook-theme-rust">Rust</button></li>
+ <li role="none"><button role="menuitem" class="theme" id="mdbook-theme-coal">Coal</button></li>
+ <li role="none"><button role="menuitem" class="theme" id="mdbook-theme-navy">Navy</button></li>
+ <li role="none"><button role="menuitem" class="theme" id="mdbook-theme-ayu">Ayu</button></li>
<li role="none"><button role="menuitem" class="theme" id="colibri">Colibri</button></li>
</ul>
{{#if search_enabled}}
- <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 id="mdbook-search-toggle" class="icon-button" type="button" title="Search (`/`)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="/ s" aria-controls="mdbook-searchbar">
+ {{fa "solid" "magnifying-glass"}}
</button>
{{/if}}
</div>
@@ -151,17 +170,17 @@
<div class="right-buttons">
{{#if print_enable}}
<a href="{{ path_to_root }}print.html" title="Print this book" aria-label="Print this book">
- <i id="print-button" class="fa fa-print"></i>
+ {{fa "solid" "print" "print-button"}}
</a>
{{/if}}
{{#if git_repository_url}}
<a href="{{git_repository_url}}" title="Git repository" aria-label="Git repository">
- <i id="git-repository-button" class="fa {{git_repository_icon}}"></i>
+ {{fa git_repository_icon_class git_repository_icon}}
</a>
{{/if}}
{{#if git_repository_edit_url}}
- <a href="{{git_repository_edit_url}}" title="Suggest an edit" aria-label="Suggest an edit">
- <i id="git-edit-button" class="fa fa-edit"></i>
+ <a href="{{git_repository_edit_url}}" title="Suggest an edit" aria-label="Suggest an edit" rel="edit">
+ {{fa "solid" "pencil" "git-edit-button"}}
</a>
{{/if}}
@@ -169,13 +188,18 @@
</div>
{{#if search_enabled}}
- <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">
+ <div id="mdbook-search-wrapper" class="hidden">
+ <form id="mdbook-searchbar-outer" class="searchbar-outer">
+ <div class="search-wrapper">
+ <input type="search" id="mdbook-searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="mdbook-searchresults-outer" aria-describedby="searchresults-header">
+ <div class="spinner-wrapper">
+ {{fa "solid" "spinner" "fa-spin"}}
+ </div>
+ </div>
</form>
- <div id="searchresults-outer" class="searchresults-outer hidden">
- <div id="searchresults-header" class="searchresults-header"></div>
- <ul id="searchresults">
+ <div id="mdbook-searchresults-outer" class="searchresults-outer hidden">
+ <div id="mdbook-searchresults-header" class="searchresults-header"></div>
+ <ul id="mdbook-searchresults">
</ul>
</div>
</div>
@@ -183,31 +207,39 @@
<!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM -->
<script>
- 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) {
+ document.getElementById('mdbook-sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
+ document.getElementById('mdbook-sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
+ Array.from(document.querySelectorAll('#mdbook-sidebar a')).forEach(function(link) {
link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
});
</script>
- <div id="content" class="content">
+ <div id="mdbook-content" class="content">
<main>
{{{ content }}}
</main>
<nav class="nav-wrapper" aria-label="Page navigation">
<!-- Mobile navigation buttons -->
- {{#previous}}
- <a rel="prev" href="{{ path_to_root }}{{link}}" class="mobile-nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
- <i class="fa fa-angle-left"></i>
+ {{#if previous}}
+ <a rel="prev" href="{{ path_to_root }}{{previous.link}}" class="mobile-nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
+ {{#if (eq ../text_direction "rtl")}}
+ {{fa "solid" "angle-right"}}
+ {{else}}
+ {{fa "solid" "angle-left"}}
+ {{/if}}
</a>
- {{/previous}}
+ {{/if}}
- {{#next}}
- <a rel="next prefetch" href="{{ path_to_root }}{{link}}" class="mobile-nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
- <i class="fa fa-angle-right"></i>
+ {{#if next}}
+ <a rel="next prefetch" href="{{ path_to_root }}{{next.link}}" class="mobile-nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
+ {{#if (eq ../text_direction "rtl")}}
+ {{fa "solid" "angle-left"}}
+ {{else}}
+ {{fa "solid" "angle-right"}}
+ {{/if}}
</a>
- {{/next}}
+ {{/if}}
<div style="clear: both"></div>
</nav>
@@ -215,21 +247,35 @@
</div>
<nav class="nav-wide-wrapper" aria-label="Page navigation">
- {{#previous}}
- <a rel="prev" href="{{ path_to_root }}{{link}}" class="nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
- <i class="fa fa-angle-left"></i>
+ {{#if previous}}
+ <a rel="prev" href="{{ path_to_root }}{{previous.link}}" class="nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
+ {{#if (eq ../text_direction "rtl")}}
+ {{fa "solid" "angle-right"}}
+ {{else}}
+ {{fa "solid" "angle-left"}}
+ {{/if}}
</a>
- {{/previous}}
+ {{/if}}
- {{#next}}
- <a rel="next prefetch" href="{{ path_to_root }}{{link}}" class="nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
- <i class="fa fa-angle-right"></i>
+ {{#if next}}
+ <a rel="next prefetch" href="{{ path_to_root }}{{next.link}}" class="nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
+ {{#if (eq text_direction "rtl")}}
+ {{fa "solid" "angle-left"}}
+ {{else}}
+ {{fa "solid" "angle-right"}}
+ {{/if}}
</a>
- {{/next}}
+ {{/if}}
</nav>
</div>
+ <template id=fa-eye>{{fa "solid" "eye"}}</template>
+ <template id=fa-eye-slash>{{fa "solid" "eye-slash"}}</template>
+ <template id=fa-copy>{{fa "regular" "copy"}}</template>
+ <template id=fa-play>{{fa "solid" "play"}}</template>
+ <template id=fa-clock-rotate-left>{{fa "solid" "clock-rotate-left"}}</template>
+
{{#if live_reload_endpoint}}
<!-- Livereload script (if served using the cli tool) -->
<script>
@@ -249,25 +295,6 @@
</script>
{{/if}}
- {{#if google_analytics}}
- <!-- Google Analytics Tag -->
- <script>
- var localAddrs = ["localhost", "127.0.0.1", ""];
-
- // make sure we don't activate google analytics if the developer is
- // inspecting the book locally...
- if (localAddrs.indexOf(document.location.hostname) === -1) {
- (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
- (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
- m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
- })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
-
- ga('create', '{{google_analytics}}', 'auto');
- ga('send', 'pageview');
- }
- </script>
- {{/if}}
-
{{#if playground_line_numbers}}
<script>
window.playground_line_numbers = true;
@@ -281,26 +308,26 @@
{{/if}}
{{#if playground_js}}
- <script src="{{ path_to_root }}ace.js"></script>
- <script src="{{ path_to_root }}editor.js"></script>
- <script src="{{ path_to_root }}mode-rust.js"></script>
- <script src="{{ path_to_root }}theme-dawn.js"></script>
- <script src="{{ path_to_root }}theme-tomorrow_night.js"></script>
+ <script src="{{ resource "ace.js" }}"></script>
+ <script src="{{ resource "mode-rust.js" }}"></script>
+ <script src="{{ resource "editor.js" }}"></script>
+ <script src="{{ resource "theme-dawn.js" }}"></script>
+ <script src="{{ resource "theme-tomorrow_night.js" }}"></script>
{{/if}}
{{#if search_js}}
- <script src="{{ path_to_root }}elasticlunr.min.js"></script>
- <script src="{{ path_to_root }}mark.min.js"></script>
- <script src="{{ path_to_root }}searcher.js"></script>
+ <script src="{{ resource "elasticlunr.min.js" }}"></script>
+ <script src="{{ resource "mark.min.js" }}"></script>
+ <script src="{{ resource "searcher.js" }}"></script>
{{/if}}
- <script src="{{ path_to_root }}clipboard.min.js"></script>
- <script src="{{ path_to_root }}highlight.js"></script>
- <script src="{{ path_to_root }}book.js"></script>
+ <script src="{{ resource "clipboard.min.js" }}"></script>
+ <script src="{{ resource "highlight.js" }}"></script>
+ <script src="{{ resource "book.js" }}"></script>
<!-- Custom JS scripts -->
{{#each additional_js}}
- <script src="{{ ../path_to_root }}{{this}}"></script>
+ <script src="{{ resource this}}"></script>
{{/each}}
{{#if is_print}}
@@ -321,6 +348,21 @@
{{/if}}
{{/if}}
+ {{#if fragment_map}}
+ <script>
+ document.addEventListener('DOMContentLoaded', function() {
+ const fragmentMap =
+ {{{fragment_map}}}
+ ;
+ const target = fragmentMap[window.location.hash];
+ if (target) {
+ let url = new URL(target, window.location.href);
+ window.location.replace(url.href);
+ }
+ });
+ </script>
+ {{/if}}
+
</div>
</body>
</html>
diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs
index 4915c28b..df2eade8 100644
--- a/helix-term/src/commands.rs
+++ b/helix-term/src/commands.rs
@@ -433,9 +433,9 @@ impl MappableCommand {
add_newline_below, "Add newline below",
goto_type_definition, "Goto type definition",
goto_implementation, "Goto implementation",
- goto_file_start, "Goto line number <n> else file start",
+ goto_file_start, "Goto line number `<n>` else file start",
goto_file_end, "Goto file end",
- extend_to_file_start, "Extend to line number<n> else file start",
+ extend_to_file_start, "Extend to line number `<n>` else file start",
extend_to_file_end, "Extend to file end",
goto_file, "Goto files/URLs in selections",
goto_file_hsplit, "Goto files in selections (hsplit)",