Unnamed repository; edit this file 'description' to name the repository.
| -rw-r--r-- | .github/workflows/gh-pages.yml | 2 | ||||
| -rw-r--r-- | book/src/generated/static-cmd.md | 4 | ||||
| -rw-r--r-- | book/theme/index.hbs | 254 | ||||
| -rw-r--r-- | helix-term/src/commands.rs | 4 |
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)", |