mirror of
https://github.com/Hilbis/Hilbish
synced 2025-07-03 17:52:02 +00:00
Compare commits
6 Commits
3f53f31fb9
...
da5a1d0e34
Author | SHA1 | Date | |
---|---|---|---|
da5a1d0e34 | |||
6fd03b6eac | |||
ff1a0ee9af | |||
9e1a484cb4 | |||
046755d551 | |||
f536e8b589 |
@ -486,7 +486,7 @@ func main() {
|
|||||||
f.WriteString(`---
|
f.WriteString(`---
|
||||||
title: API
|
title: API
|
||||||
layout: doc
|
layout: doc
|
||||||
weight: -100
|
weight: -70
|
||||||
menu: docs
|
menu: docs
|
||||||
---
|
---
|
||||||
|
|
||||||
@ -649,7 +649,7 @@ func generateFile(v module) {
|
|||||||
typ = p.Type[3:]
|
typ = p.Type[3:]
|
||||||
}
|
}
|
||||||
|
|
||||||
f.WriteString(fmt.Sprintf("`%s` `*%s*`", typ, p.Name))
|
f.WriteString(fmt.Sprintf("`%s` _%s_", typ, p.Name))
|
||||||
if isVariadic {
|
if isVariadic {
|
||||||
f.WriteString(" (This type is variadic. You can pass an infinite amount of parameters with this type.)")
|
f.WriteString(" (This type is variadic. You can pass an infinite amount of parameters with this type.)")
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: API
|
title: API
|
||||||
layout: doc
|
layout: doc
|
||||||
weight: -100
|
weight: -70
|
||||||
menu: docs
|
menu: docs
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -82,10 +82,10 @@ Catches an event. This function can be used to act on events.
|
|||||||
|
|
||||||
#### Parameters
|
#### Parameters
|
||||||
|
|
||||||
`string` `*name*`
|
`string` _name_
|
||||||
The name of the hook.
|
The name of the hook.
|
||||||
|
|
||||||
`function` `*cb*`
|
`function` _cb_
|
||||||
The function that will be called when the hook is thrown.
|
The function that will be called when the hook is thrown.
|
||||||
|
|
||||||
#### Example
|
#### Example
|
||||||
@ -113,10 +113,10 @@ Catches an event, but only once. This will remove the hook immediately after it
|
|||||||
|
|
||||||
#### Parameters
|
#### Parameters
|
||||||
|
|
||||||
`string` `*name*`
|
`string` _name_
|
||||||
The name of the event
|
The name of the event
|
||||||
|
|
||||||
`function` `*cb*`
|
`function` _cb_
|
||||||
The function that will be called when the event is thrown.
|
The function that will be called when the event is thrown.
|
||||||
|
|
||||||
|
|
||||||
@ -137,7 +137,7 @@ Returns a table of functions that are hooked on an event with the corresponding
|
|||||||
|
|
||||||
#### Parameters
|
#### Parameters
|
||||||
|
|
||||||
`string` `*name*`
|
`string` _name_
|
||||||
The name of the hook
|
The name of the hook
|
||||||
|
|
||||||
|
|
||||||
@ -160,10 +160,10 @@ an event, like one saved to a variable.
|
|||||||
|
|
||||||
#### Parameters
|
#### Parameters
|
||||||
|
|
||||||
`string` `*name*`
|
`string` _name_
|
||||||
Name of the event the hook is on
|
Name of the event the hook is on
|
||||||
|
|
||||||
`function` `*catcher*`
|
`function` _catcher_
|
||||||
Hook function to remove
|
Hook function to remove
|
||||||
|
|
||||||
#### Example
|
#### Example
|
||||||
@ -195,10 +195,10 @@ Throws a hook with `name` with the provided `args`.
|
|||||||
|
|
||||||
#### Parameters
|
#### Parameters
|
||||||
|
|
||||||
`string` `*name*`
|
`string` _name_
|
||||||
The name of the hook.
|
The name of the hook.
|
||||||
|
|
||||||
`any` `*args*` (This type is variadic. You can pass an infinite amount of parameters with this type.)
|
`any` _args_ (This type is variadic. You can pass an infinite amount of parameters with this type.)
|
||||||
The arguments to pass to the hook.
|
The arguments to pass to the hook.
|
||||||
|
|
||||||
#### Example
|
#### Example
|
||||||
|
@ -81,7 +81,7 @@ Removes the named command. Note that this will only remove Commander-registered
|
|||||||
|
|
||||||
#### Parameters
|
#### Parameters
|
||||||
|
|
||||||
`string` `*name*`
|
`string` _name_
|
||||||
Name of the command to remove.
|
Name of the command to remove.
|
||||||
|
|
||||||
|
|
||||||
@ -103,10 +103,10 @@ it will run the function providing the arguments and sinks.
|
|||||||
|
|
||||||
#### Parameters
|
#### Parameters
|
||||||
|
|
||||||
`string` `*name*`
|
`string` _name_
|
||||||
Name of the command
|
Name of the command
|
||||||
|
|
||||||
`function` `*cb*`
|
`function` _cb_
|
||||||
Callback to handle command invocation
|
Callback to handle command invocation
|
||||||
|
|
||||||
#### Example
|
#### Example
|
||||||
|
@ -99,7 +99,7 @@ This can be used to resolve short paths like `..` to `/home/user`.
|
|||||||
|
|
||||||
#### Parameters
|
#### Parameters
|
||||||
|
|
||||||
`string` `*path*`
|
`string` _path_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -121,7 +121,7 @@ Returns the "basename," or the last part of the provided `path`. If path is empt
|
|||||||
|
|
||||||
#### Parameters
|
#### Parameters
|
||||||
|
|
||||||
`string` `*path*`
|
`string` _path_
|
||||||
Path to get the base name of.
|
Path to get the base name of.
|
||||||
|
|
||||||
|
|
||||||
@ -142,7 +142,7 @@ Changes Hilbish's directory to `dir`.
|
|||||||
|
|
||||||
#### Parameters
|
#### Parameters
|
||||||
|
|
||||||
`string` `*dir*`
|
`string` _dir_
|
||||||
Path to change directory to.
|
Path to change directory to.
|
||||||
|
|
||||||
|
|
||||||
@ -164,7 +164,7 @@ Returns the directory part of `path`. If a file path like
|
|||||||
|
|
||||||
#### Parameters
|
#### Parameters
|
||||||
|
|
||||||
`string` `*path*`
|
`string` _path_
|
||||||
Path to get the directory for.
|
Path to get the directory for.
|
||||||
|
|
||||||
|
|
||||||
@ -186,7 +186,7 @@ For the syntax' refer to Go's filepath.Match function: https://pkg.go.dev/path/f
|
|||||||
|
|
||||||
#### Parameters
|
#### Parameters
|
||||||
|
|
||||||
`string` `*pattern*`
|
`string` _pattern_
|
||||||
Pattern to compare files with.
|
Pattern to compare files with.
|
||||||
|
|
||||||
#### Example
|
#### Example
|
||||||
@ -221,7 +221,7 @@ Takes any list of paths and joins them based on the operating system's path sepa
|
|||||||
|
|
||||||
#### Parameters
|
#### Parameters
|
||||||
|
|
||||||
`string` `*path*` (This type is variadic. You can pass an infinite amount of parameters with this type.)
|
`string` _path_ (This type is variadic. You can pass an infinite amount of parameters with this type.)
|
||||||
Paths to join together
|
Paths to join together
|
||||||
|
|
||||||
#### Example
|
#### Example
|
||||||
@ -250,10 +250,10 @@ With `recursive`, mkdir will create parent directories.
|
|||||||
|
|
||||||
#### Parameters
|
#### Parameters
|
||||||
|
|
||||||
`string` `*name*`
|
`string` _name_
|
||||||
Name of the directory
|
Name of the directory
|
||||||
|
|
||||||
`boolean` `*recursive*`
|
`boolean` _recursive_
|
||||||
Whether to create parent directories for the provided name
|
Whether to create parent directories for the provided name
|
||||||
|
|
||||||
#### Example
|
#### Example
|
||||||
@ -301,7 +301,7 @@ Returns a list of all files and directories in the provided path.
|
|||||||
|
|
||||||
#### Parameters
|
#### Parameters
|
||||||
|
|
||||||
`string` `*dir*`
|
`string` _dir_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -327,7 +327,7 @@ isDir (boolean) - If the path is a directory
|
|||||||
|
|
||||||
#### Parameters
|
#### Parameters
|
||||||
|
|
||||||
`string` `*path*`
|
`string` _path_
|
||||||
|
|
||||||
|
|
||||||
#### Example
|
#### Example
|
||||||
|
@ -104,10 +104,10 @@ Sets an alias, with a name of `cmd` to another command.
|
|||||||
|
|
||||||
#### Parameters
|
#### Parameters
|
||||||
|
|
||||||
`string` `*cmd*`
|
`string` _cmd_
|
||||||
Name of the alias
|
Name of the alias
|
||||||
|
|
||||||
`string` `*orig*`
|
`string` _orig_
|
||||||
Command that will be aliased
|
Command that will be aliased
|
||||||
|
|
||||||
#### Example
|
#### Example
|
||||||
@ -138,7 +138,7 @@ Appends the provided dir to the command path (`$PATH`)
|
|||||||
|
|
||||||
#### Parameters
|
#### Parameters
|
||||||
|
|
||||||
`string|table` `*dir*`
|
`string|table` _dir_
|
||||||
Directory (or directories) to append to path
|
Directory (or directories) to append to path
|
||||||
|
|
||||||
#### Example
|
#### Example
|
||||||
@ -175,10 +175,10 @@ provides more details.
|
|||||||
|
|
||||||
#### Parameters
|
#### Parameters
|
||||||
|
|
||||||
`string` `*scope*`
|
`string` _scope_
|
||||||
|
|
||||||
|
|
||||||
`function` `*cb*`
|
`function` _cb_
|
||||||
|
|
||||||
|
|
||||||
#### Example
|
#### Example
|
||||||
@ -246,7 +246,7 @@ This can be used to do an in-place restart.
|
|||||||
|
|
||||||
#### Parameters
|
#### Parameters
|
||||||
|
|
||||||
`string` `*cmd*`
|
`string` _cmd_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -270,7 +270,7 @@ This can be used to run any function in another thread at the same time as other
|
|||||||
|
|
||||||
#### Parameters
|
#### Parameters
|
||||||
|
|
||||||
`function` `*fn*`
|
`function` _fn_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -295,7 +295,7 @@ Note that to set a highlighter, one has to override this function.
|
|||||||
|
|
||||||
#### Parameters
|
#### Parameters
|
||||||
|
|
||||||
`string` `*line*`
|
`string` _line_
|
||||||
|
|
||||||
|
|
||||||
#### Example
|
#### Example
|
||||||
@ -330,10 +330,10 @@ override this function with your custom handler.
|
|||||||
|
|
||||||
#### Parameters
|
#### Parameters
|
||||||
|
|
||||||
`string` `*line*`
|
`string` _line_
|
||||||
|
|
||||||
|
|
||||||
`number` `*pos*`
|
`number` _pos_
|
||||||
Position of cursor in line. Usually equals string.len(line)
|
Position of cursor in line. Usually equals string.len(line)
|
||||||
|
|
||||||
#### Example
|
#### Example
|
||||||
@ -364,7 +364,7 @@ Vim-like with modes and Vim keybinds.
|
|||||||
|
|
||||||
#### Parameters
|
#### Parameters
|
||||||
|
|
||||||
`string` `*mode*`
|
`string` _mode_
|
||||||
Can be set to either `emacs` or `vim`
|
Can be set to either `emacs` or `vim`
|
||||||
|
|
||||||
|
|
||||||
@ -386,10 +386,10 @@ This creates a timer that ticking immediately.
|
|||||||
|
|
||||||
#### Parameters
|
#### Parameters
|
||||||
|
|
||||||
`function` `*cb*`
|
`function` _cb_
|
||||||
|
|
||||||
|
|
||||||
`number` `*time*`
|
`number` _time_
|
||||||
Time in milliseconds.
|
Time in milliseconds.
|
||||||
|
|
||||||
|
|
||||||
@ -411,7 +411,7 @@ This will show up when text is incomplete, like a missing quote
|
|||||||
|
|
||||||
#### Parameters
|
#### Parameters
|
||||||
|
|
||||||
`string` `*str*`
|
`string` _str_
|
||||||
|
|
||||||
|
|
||||||
#### Example
|
#### Example
|
||||||
@ -451,7 +451,7 @@ Prepends `dir` to $PATH.
|
|||||||
|
|
||||||
#### Parameters
|
#### Parameters
|
||||||
|
|
||||||
`string` `*dir*`
|
`string` _dir_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -477,10 +477,10 @@ These will be formatted and replaced with the appropriate values.
|
|||||||
|
|
||||||
#### Parameters
|
#### Parameters
|
||||||
|
|
||||||
`string` `*str*`
|
`string` _str_
|
||||||
|
|
||||||
|
|
||||||
`string` `*typ?*`
|
`string` _typ?_
|
||||||
Type of prompt, being left or right. Left by default.
|
Type of prompt, being left or right. Left by default.
|
||||||
|
|
||||||
#### Example
|
#### Example
|
||||||
@ -512,7 +512,7 @@ Returns `input`, will be nil if Ctrl-D is pressed, or an error occurs.
|
|||||||
|
|
||||||
#### Parameters
|
#### Parameters
|
||||||
|
|
||||||
`string` `*prompt?*`
|
`string` _prompt?_
|
||||||
Text to print before input, can be empty.
|
Text to print before input, can be empty.
|
||||||
|
|
||||||
|
|
||||||
@ -534,10 +534,10 @@ This creates a Timer that starts ticking immediately.
|
|||||||
|
|
||||||
#### Parameters
|
#### Parameters
|
||||||
|
|
||||||
`function` `*cb*`
|
`function` _cb_
|
||||||
|
|
||||||
|
|
||||||
`number` `*time*`
|
`number` _time_
|
||||||
Time to run in milliseconds.
|
Time to run in milliseconds.
|
||||||
|
|
||||||
|
|
||||||
@ -559,7 +559,7 @@ Will return the path of the binary, or a basename if it's a commander.
|
|||||||
|
|
||||||
#### Parameters
|
#### Parameters
|
||||||
|
|
||||||
`string` `*name*`
|
`string` _name_
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -12,31 +12,35 @@ function. See the link for how to use it.
|
|||||||
|
|
||||||
To create completions for a command is simple.
|
To create completions for a command is simple.
|
||||||
The callback will be passed 3 parameters:
|
The callback will be passed 3 parameters:
|
||||||
- `query` (string): The text that the user is currently trying to complete.
|
|
||||||
This should be used to match entries.
|
- `query` (string): The text that the user is currently trying to complete. This should be used to match entries.
|
||||||
- `ctx` (string): Contains the entire line. Use this if
|
- `ctx` (string): Contains the entire line. Use this if more text is needed to be parsed for context.
|
||||||
more text is needed to be parsed for context.
|
|
||||||
- `fields` (string): The `ctx` split up by spaces.
|
- `fields` (string): The `ctx` split up by spaces.
|
||||||
|
|
||||||
|
\
|
||||||
In most cases, the completer just uses `fields` to check the amount
|
In most cases, the completer just uses `fields` to check the amount
|
||||||
and `query` on what to match entries on.
|
and `query` on what to match entries on.\
|
||||||
|
\
|
||||||
In order to return your results, it has to go within a "completion group."
|
In order to return your results, it has to go within a "completion group."
|
||||||
Then you return a table of completion groups and a prefix. The prefix will
|
Then you return a table of completion groups and a prefix. The prefix will
|
||||||
usually just be the `query`.
|
usually just be the `query`.\
|
||||||
|
\
|
||||||
Hilbish allows one to mix completion menus of different types, so
|
Hilbish allows one to mix completion menus of different types, so
|
||||||
a grid menu and a list menu can be used and complete and display at the same time.
|
a grid menu and a list menu can be used and complete and display at the same time.
|
||||||
A completion group is a table with these keys:
|
A completion group is a table with these keys:
|
||||||
|
|
||||||
- `type` (string): type of completion menu, either `grid` or `list`.
|
- `type` (string): type of completion menu, either `grid` or `list`.
|
||||||
- `items` (table): a list of items.
|
- `items` (table): a list of items.
|
||||||
|
|
||||||
The requirements of the `items` table is different based on the
|
\
|
||||||
`type`. If it is a `grid`, it can simply be a table of strings.
|
|
||||||
|
|
||||||
|
The requirements of the `items` table is different based on the
|
||||||
|
`type`. If it is a `grid`, it can simply be a table of strings.\
|
||||||
Otherwise if it is a `list` then each entry can
|
Otherwise if it is a `list` then each entry can
|
||||||
either be a string or a table.
|
either be a string or a table.\
|
||||||
|
\
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
```lua
|
```lua
|
||||||
local cg = {
|
local cg = {
|
||||||
items = {
|
items = {
|
||||||
@ -57,11 +61,14 @@ Which looks like this:
|
|||||||
{{< video src="https://safe.saya.moe/t4CiLK6dgPbD.mp4" >}}
|
{{< video src="https://safe.saya.moe/t4CiLK6dgPbD.mp4" >}}
|
||||||
|
|
||||||
# Completion Group Types
|
# Completion Group Types
|
||||||
### grid
|
|
||||||
Grid is the simplest completion group type. All items are strings and when
|
|
||||||
completion is done is displayed in a grid based on size.
|
|
||||||
|
|
||||||
|
### grid
|
||||||
|
|
||||||
|
Grid is the simplest completion group type. All items are strings and when
|
||||||
|
completion is done is displayed in a grid based on size.\
|
||||||
|
\
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
```lua
|
```lua
|
||||||
{
|
{
|
||||||
items = {'just', 'a bunch', 'of items', 'here', 'hehe'},
|
items = {'just', 'a bunch', 'of items', 'here', 'hehe'},
|
||||||
@ -70,17 +77,16 @@ Example:
|
|||||||
```
|
```
|
||||||
|
|
||||||
### list
|
### list
|
||||||
The list completion group type displays in a list. A list item can either be a string, or a table for additional display options.
|
|
||||||
|
The list completion group type displays in a list. A list item can either be a string, or a table for additional display options.\
|
||||||
A completion alias can be specified either as the `2nd` entry in the options table
|
A completion alias can be specified either as the `2nd` entry in the options table
|
||||||
or te `alias` key.
|
or te `alias` key.\
|
||||||
|
|
||||||
A description can optionally be displayed for a list item, which is either the `1st`
|
A description can optionally be displayed for a list item, which is either the `1st`
|
||||||
entry or the `description` key.
|
entry or the `description` key.\
|
||||||
|
Lastly, list entries can be styled. This is done with the `display` key. If this is present, this overrides what the completion item _looks_ like.\
|
||||||
Lastly, list entries can be styled. This is done with the `display` key. If this is present, this
|
\
|
||||||
overrides what the completion item *looks* like.
|
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
```lua
|
```lua
|
||||||
{
|
{
|
||||||
items = {
|
items = {
|
||||||
@ -101,18 +107,22 @@ Example:
|
|||||||
```
|
```
|
||||||
|
|
||||||
# Completion Handler
|
# Completion Handler
|
||||||
|
|
||||||
Like most parts of Hilbish, it's made to be extensible and
|
Like most parts of Hilbish, it's made to be extensible and
|
||||||
customizable. The default handler for completions in general can
|
customizable. The default handler for completions in general can
|
||||||
be overwritten to provide more advanced completions if needed.
|
be overwritten to provide more advanced completions if needed.
|
||||||
This usually doesn't need to be done though, unless you know
|
This usually doesn't need to be done though, unless you know
|
||||||
what you're doing.
|
what you're doing.\
|
||||||
|
\
|
||||||
The default completion handler provides 3 things:
|
The default completion handler provides 3 things:\
|
||||||
binaries (with a plain name requested to complete, those in
|
binaries (with a plain name requested to complete, those in $PATH)\
|
||||||
$PATH), files, or command completions. It will try to run a handler
|
files\
|
||||||
for the command or fallback to file completions.
|
or command completions.\
|
||||||
|
\
|
||||||
|
It will try to run a handler for the command or fallback to file completions.\
|
||||||
|
\
|
||||||
To overwrite it, just assign a function to `hilbish.completion.handler` like so:
|
To overwrite it, just assign a function to `hilbish.completion.handler` like so:
|
||||||
|
|
||||||
```lua
|
```lua
|
||||||
-- line is the entire line as a string
|
-- line is the entire line as a string
|
||||||
-- pos is the position of the cursor.
|
-- pos is the position of the cursor.
|
||||||
|
@ -6,21 +6,25 @@ menu: docs
|
|||||||
---
|
---
|
||||||
|
|
||||||
# Is Hilbish POSIX compliant?
|
# Is Hilbish POSIX compliant?
|
||||||
|
|
||||||
No, it is not. POSIX compliance is a non-goal. Perhaps in the future,
|
No, it is not. POSIX compliance is a non-goal. Perhaps in the future,
|
||||||
someone would be able to write a native plugin to support shell scripting
|
someone would be able to write a native plugin to support shell scripting
|
||||||
(which would be against it's main goal, but ....)
|
(which would be against it's main goal, but ....)
|
||||||
|
|
||||||
# Windows Support?
|
# Windows Support?
|
||||||
|
|
||||||
It compiles for Windows (CI ensures it does), but otherwise it is not
|
It compiles for Windows (CI ensures it does), but otherwise it is not
|
||||||
directly supported. If you'd like to improve this situation,
|
directly supported. If you'd like to improve this situation,
|
||||||
checkout [the discussion](https://github.com/Rosettea/Hilbish/discussions/165).
|
checkout [the discussion](https://github.com/Rosettea/Hilbish/discussions/165).
|
||||||
|
|
||||||
# Why?
|
# Why?
|
||||||
|
|
||||||
Hilbish emerged from the desire of a Lua configured shell.
|
Hilbish emerged from the desire of a Lua configured shell.
|
||||||
It was the initial reason that it was created, but now it's more:
|
It was the initial reason that it was created, but now it's more:
|
||||||
to be hyper extensible, simpler and more user friendly.
|
to be hyper extensible, simpler and more user friendly.
|
||||||
|
|
||||||
# Does it have "autocompletion" or "tab completion"
|
# Does it have "autocompletion" or "tab completion"
|
||||||
|
|
||||||
Of course! This is a modern shell. Hilbish provides a way for users
|
Of course! This is a modern shell. Hilbish provides a way for users
|
||||||
to write tab completion for any command and/or the whole shell.
|
to write tab completion for any command and/or the whole shell.
|
||||||
Inline hinting and syntax highlighting are also available.
|
Inline hinting and syntax highlighting are also available.
|
||||||
|
@ -9,31 +9,30 @@ menu:
|
|||||||
|
|
||||||
Hilbish features a simple notification system which can be
|
Hilbish features a simple notification system which can be
|
||||||
used by other plugins and parts of the shell to notify the user
|
used by other plugins and parts of the shell to notify the user
|
||||||
of various actions. This is used via the `hilbish.message` interface.
|
of various actions. This is used via the `hilbish.message` interface.\
|
||||||
|
\
|
||||||
A `message` is defined as a table with the following properties:
|
A `message` is defined as a table with the following properties:
|
||||||
|
|
||||||
- `icon`: A unicode/emoji icon for the notification.
|
- `icon`: A unicode/emoji icon for the notification.
|
||||||
- `title`: The title of the message
|
- `title`: The title of the message
|
||||||
- `text`: Message text/body
|
- `text`: Message text/body
|
||||||
- `channel`: The source of the message. This should be a
|
- `channel`: The source of the message. This should be a unique and easily readable text identifier.
|
||||||
unique and easily readable text identifier.
|
- `summary`: A short summary of the notification and message. If this is not present and you are using this to display messages, you should take part of the `text` instead.
|
||||||
- `summary`: A short summary of the notification and message.
|
|
||||||
If this is not present and you are using this to display messages,
|
|
||||||
you should take part of the `text` instead.
|
|
||||||
|
|
||||||
|
\
|
||||||
The `hilbish.message` interface provides the following functions:
|
The `hilbish.message` interface provides the following functions:
|
||||||
- `send(message)`: Sends a message and emits the `hilbish.notification`
|
|
||||||
signal. DO NOT emit the `hilbish.notification` signal directly, or
|
- `send(message)`: Sends a message and emits the `hilbish.notification` signal. DO NOT emit the `hilbish.notification` signal directly, or the message will not be stored by the message handler.
|
||||||
the message will not be stored by the message handler.
|
|
||||||
- `read(idx)`: Marks message at `idx` as read.
|
- `read(idx)`: Marks message at `idx` as read.
|
||||||
- `delete(idx)`: Removes message at `idx`.
|
- `delete(idx)`: Removes message at `idx`.
|
||||||
- `readAll()`: Marks all messages as read.
|
- `readAll()`: Marks all messages as read.
|
||||||
- `clear()`: Deletes all messages.
|
- `clear()`: Deletes all messages.
|
||||||
|
|
||||||
|
\
|
||||||
There are a few simple use cases of this notification/messaging system.
|
There are a few simple use cases of this notification/messaging system.
|
||||||
It could also be used as some "inter-shell" messaging system (???) but
|
It could also be used as some "inter-shell" messaging system (???) but
|
||||||
is intended to display to users.
|
is intended to display to users.\
|
||||||
|
\
|
||||||
An example is notifying users of completed jobs/commands ran in the background.
|
An example is notifying users of completed jobs/commands ran in the background.
|
||||||
Any Hilbish-native command (think the upcoming Greenhouse pager) can display
|
Any Hilbish-native command (think the upcoming Greenhouse pager) can display
|
||||||
it.
|
it.
|
||||||
|
@ -9,19 +9,22 @@ menu:
|
|||||||
|
|
||||||
Opts are simple toggle or value options a user can set in Hilbish.
|
Opts are simple toggle or value options a user can set in Hilbish.
|
||||||
As toggles, there are things like `autocd` or history saving. As values,
|
As toggles, there are things like `autocd` or history saving. As values,
|
||||||
there is the `motd` which the user can either change to a custom string or disable.
|
there is the `motd` which the user can either change to a custom string or disable.\
|
||||||
|
\
|
||||||
Opts are accessed from the `hilbish.opts` table. Here they can either
|
Opts are accessed from the `hilbish.opts` table. Here they can either
|
||||||
be read or modified
|
be read or modified.
|
||||||
|
|
||||||
### `autocd`
|
### `autocd`
|
||||||
|
|
||||||
#### Value: `boolean`
|
#### Value: `boolean`
|
||||||
|
|
||||||
#### Default: `false`
|
#### Default: `false`
|
||||||
|
|
||||||
The autocd opt makes it so that lone directories attempted to be executed are
|
The autocd opt makes it so that lone directories attempted to be executed are
|
||||||
instead set as the shell's directory.
|
instead set as the shell's directory.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
```
|
```
|
||||||
~/Directory
|
~/Directory
|
||||||
∆ ~
|
∆ ~
|
||||||
@ -33,51 +36,81 @@ Example:
|
|||||||
∆
|
∆
|
||||||
```
|
```
|
||||||
|
|
||||||
<hr>
|
``` =html
|
||||||
|
<hr class="my-4">
|
||||||
|
```
|
||||||
|
|
||||||
### `history`
|
### `history`
|
||||||
|
|
||||||
#### Value: `boolean`
|
#### Value: `boolean`
|
||||||
|
|
||||||
#### Default: `true`
|
#### Default: `true`
|
||||||
|
|
||||||
Sets whether command history will be saved or not.
|
Sets whether command history will be saved or not.
|
||||||
|
|
||||||
<hr>
|
``` =html
|
||||||
|
<hr class="my-4">
|
||||||
|
```
|
||||||
|
|
||||||
### `greeting`
|
### `greeting`
|
||||||
#### Value: `boolean` or `string`
|
|
||||||
The greeting is the message that Hilbish shows on startup
|
|
||||||
(the one which says Welcome to Hilbish).
|
|
||||||
|
|
||||||
|
#### Value: `boolean` or `string`
|
||||||
|
|
||||||
|
The greeting is the message that Hilbish shows on startup
|
||||||
|
(the one which says Welcome to Hilbish).\
|
||||||
This can be set to either true/false to enable/disable or a custom greeting string.
|
This can be set to either true/false to enable/disable or a custom greeting string.
|
||||||
|
|
||||||
<hr>
|
``` =html
|
||||||
|
<hr class="my-4">
|
||||||
|
```
|
||||||
|
|
||||||
### `motd`
|
### `motd`
|
||||||
#### Value: `boolean`
|
|
||||||
#### Default: `true`
|
|
||||||
The message of the day shows the current major.minor version and
|
|
||||||
includes a small range of things added in the current release.
|
|
||||||
|
|
||||||
|
#### Value: `boolean`
|
||||||
|
|
||||||
|
#### Default: `true`
|
||||||
|
|
||||||
|
The message of the day shows the current major.minor version and
|
||||||
|
includes a small range of things added in the current release.\
|
||||||
|
\
|
||||||
This can be set to `false` to disable the message.
|
This can be set to `false` to disable the message.
|
||||||
|
|
||||||
<hr>
|
``` =html
|
||||||
|
<hr class="my-4">
|
||||||
|
```
|
||||||
|
|
||||||
### `fuzzy`
|
### `fuzzy`
|
||||||
|
|
||||||
#### Value: `boolean`
|
#### Value: `boolean`
|
||||||
|
|
||||||
#### Default: `false`
|
#### Default: `false`
|
||||||
|
|
||||||
Toggles the functionality of fuzzy history searching, usable
|
Toggles the functionality of fuzzy history searching, usable
|
||||||
via the menu in Ctrl-R. Fuzzy searching is an approximate searching
|
via the menu in Ctrl-R. Fuzzy searching is an approximate searching
|
||||||
method, which means results that match *closest* will be shown instead
|
method, which means results that match *closest* will be shown instead
|
||||||
of an exact match.
|
of an exact match.
|
||||||
|
|
||||||
<hr>
|
``` =html
|
||||||
|
<hr class="my-4">
|
||||||
|
```
|
||||||
|
|
||||||
### `notifyJobFinish`
|
### `notifyJobFinish`
|
||||||
|
|
||||||
#### Value: `boolean`
|
#### Value: `boolean`
|
||||||
|
|
||||||
#### Default: `true`
|
#### Default: `true`
|
||||||
|
|
||||||
If this is enabled, when a background job is finished,
|
If this is enabled, when a background job is finished,
|
||||||
a [notification](../notifications) will be sent.
|
a [notification](../notifications) will be sent.
|
||||||
|
|
||||||
|
``` =html
|
||||||
|
<hr class="my-4">
|
||||||
|
```
|
||||||
|
|
||||||
### `processorSkipList`
|
### `processorSkipList`
|
||||||
|
|
||||||
#### Value: `table`
|
#### Value: `table`
|
||||||
|
|
||||||
#### Default: `{}`
|
#### Default: `{}`
|
||||||
|
|
||||||
A table listing the names of command processors to skip.
|
A table listing the names of command processors to skip.
|
||||||
|
@ -9,45 +9,42 @@ menu:
|
|||||||
|
|
||||||
Hilbish allows you to change how interactive text can be interpreted.
|
Hilbish allows you to change how interactive text can be interpreted.
|
||||||
This is mainly due to the fact that the default method Hilbish uses
|
This is mainly due to the fact that the default method Hilbish uses
|
||||||
is that it runs Lua first and then falls back to shell script.
|
is that it runs Lua first and then falls back to shell script.\
|
||||||
|
\
|
||||||
In some cases, someone might want to switch to just shell script to avoid
|
In some cases, someone might want to switch to just shell script to avoid
|
||||||
it while interactive but still have a Lua config, or go full Lua to use
|
it while interactive but still have a Lua config, or go full Lua to use
|
||||||
Hilbish as a REPL. This also allows users to add alternative languages like
|
Hilbish as a REPL. This also allows users to add alternative languages like
|
||||||
Fennel as the interactive script runner.
|
Fennel as the interactive script runner.\
|
||||||
|
\
|
||||||
Runner mode can also be used to handle specific kinds of input before
|
Runner mode can also be used to handle specific kinds of input before
|
||||||
evaluating like normal, which is how [Link.hsh](https://github.com/TorchedSammy/Link.hsh)
|
evaluating like normal, which is how [Link.hsh](https://github.com/TorchedSammy/Link.hsh)
|
||||||
handles links.
|
handles links.\
|
||||||
|
\
|
||||||
The "runner mode" of Hilbish is customizable via `hilbish.runnerMode`,
|
The "runner mode" of Hilbish is customizable via `hilbish.runnerMode`,
|
||||||
which determines how Hilbish will run user input. By default, this is
|
which determines how Hilbish will run user input. By default, this is
|
||||||
set to `hybrid` which is the previously mentioned behaviour of running Lua
|
set to `hybrid` which is the previously mentioned behaviour of running Lua
|
||||||
first then going to shell script. If you want the reverse order, you can
|
first then going to shell script. If you want the reverse order, you can
|
||||||
set it to `hybridRev` and for isolated modes there is `sh` and `lua`
|
set it to `hybridRev` and for isolated modes there is `sh` and `lua`
|
||||||
respectively.
|
respectively.\
|
||||||
|
\
|
||||||
You can also set it to a function, which will be called everytime Hilbish
|
You can also set it to a function, which will be called everytime Hilbish
|
||||||
needs to run interactive input. For more detail, see the [API documentation](../../api/hilbish/hilbish.runner)
|
needs to run interactive input. For more detail, see the [API documentation](../../api/hilbish/hilbish.runner)\
|
||||||
|
\
|
||||||
The `hilbish.runner` interface is an alternative to using `hilbish.runnerMode`
|
The `hilbish.runner` interface is an alternative to using `hilbish.runnerMode`
|
||||||
and also provides the shell script and Lua runner functions that Hilbish itself uses.
|
and also provides the shell script and Lua runner functions that Hilbish itself uses.
|
||||||
|
|
||||||
## Functions
|
## Functions
|
||||||
|
|
||||||
These are the "low level" functions for the `hilbish.runner` interface.
|
These are the "low level" functions for the `hilbish.runner` interface.
|
||||||
|
|
||||||
+ setMode(mode) > The same as `hilbish.runnerMode`
|
- setMode(mode) > The same as `hilbish.runnerMode`
|
||||||
+ sh(input) -> table > Runs `input` in Hilbish's sh interpreter
|
- sh(input) -> table > Runs `input` in Hilbish's sh interpreter
|
||||||
+ lua(input) -> table > Evals `input` as Lua code
|
- lua(input) -> table > Evals `input` as Lua code
|
||||||
|
|
||||||
These functions should be preferred over the previous ones.
|
These functions should be preferred over the previous ones.
|
||||||
+ setCurrent(mode) > The same as `setMode`, but works with runners managed
|
|
||||||
via the functions below.
|
- setCurrent(mode) > The same as `setMode`, but works with runners managed via the functions below.
|
||||||
+ add(name, runner) > Adds a runner to a table of available runners. The `runner`
|
- add(name, runner) > Adds a runner to a table of available runners. The `runner` argument is either a function or a table with a run callback.
|
||||||
argument is either a function or a table with a run callback.
|
- set(name, runner) > The same as `add` but requires passing a table and overwrites if the `name`d runner already exists.
|
||||||
+ set(name, runner) > The same as `add` but requires passing a table and
|
- get(name) > runner > Gets a runner by name. It is a table with at least a run function, to run input.
|
||||||
overwrites if the `name`d runner already exists.
|
- exec(cmd, runnerName) > Runs `cmd` with a runner. If `runnerName` isn't passed, the current runner mode is used.
|
||||||
+ get(name) > runner > Gets a runner by name. It is a table with at least a
|
|
||||||
run function, to run input.
|
|
||||||
+ exec(cmd, runnerName) > Runs `cmd` with a runner. If `runnerName` isn't passed,
|
|
||||||
the current runner mode is used.
|
|
||||||
|
@ -11,7 +11,9 @@ a normal interactive session.
|
|||||||
To exit, you can either run the `exit` command or hit Ctrl+D.
|
To exit, you can either run the `exit` command or hit Ctrl+D.
|
||||||
|
|
||||||
# Setting as Default
|
# Setting as Default
|
||||||
|
|
||||||
## Login shell
|
## Login shell
|
||||||
|
|
||||||
There are a few ways to make Hilbish your default shell. A simple way is
|
There are a few ways to make Hilbish your default shell. A simple way is
|
||||||
to make it your user/login shell.
|
to make it your user/login shell.
|
||||||
|
|
||||||
@ -21,41 +23,40 @@ you still decide to do it, there will just be a few variables missing in
|
|||||||
your environment` >}}
|
your environment` >}}
|
||||||
|
|
||||||
To do that, simply run `chsh -s /usr/bin/hilbish`.
|
To do that, simply run `chsh -s /usr/bin/hilbish`.
|
||||||
|
|
||||||
Some distros (namely Fedora) might have `lchsh` instead, which is used like `lchsh <user>`.
|
Some distros (namely Fedora) might have `lchsh` instead, which is used like `lchsh <user>`.
|
||||||
When prompted, you can put the path for Hilbish.
|
When prompted, you can put the path for Hilbish.
|
||||||
|
|
||||||
## Default with terminal
|
## Default with terminal
|
||||||
|
|
||||||
The simpler way is to set the default shell for your terminal. The way of
|
The simpler way is to set the default shell for your terminal. The way of
|
||||||
doing this depends on how your terminal settings are configured.
|
doing this depends on how your terminal settings are configured.
|
||||||
|
|
||||||
## Run after login shell
|
## Run after login shell
|
||||||
Some shells (like zsh) have an rc file, like `.zlogin`, which is ran when the shell session
|
|
||||||
is a login shell. In that file, you can run Hilbish. Example:
|
|
||||||
|
|
||||||
```
|
Some shells (like zsh) have an rc file, like `.zlogin`, which is ran when the shell session
|
||||||
exec hilbish -S -l
|
is a login shell. In that file, you can run Hilbish with this command: `exec hilbish -S -l`
|
||||||
```
|
|
||||||
|
|
||||||
This will replace the shell with Hilbish, set $SHELL to Hilbish and launch it as a login shell.
|
This will replace the shell with Hilbish, set $SHELL to Hilbish and launch it as a login shell.
|
||||||
|
|
||||||
# Configuration
|
# Configuration
|
||||||
|
|
||||||
Once installation and setup has been done, you can then configure Hilbish.
|
Once installation and setup has been done, you can then configure Hilbish.
|
||||||
It is configured and scripted via Lua, so the config file is a Lua file.
|
It is configured and scripted via Lua, so the config file is a Lua file.
|
||||||
You can use any pure Lua library to do whatever you want.
|
You can use any pure Lua library to do whatever you want.\
|
||||||
|
\
|
||||||
Hilbish's sample configuration is usually located in `hilbish.dataDir .. '/.hilbishrc.lua'`.
|
Hilbish's sample configuration is usually located in `hilbish.dataDir .. '/.hilbishrc.lua'`.
|
||||||
You can print that path via Lua to see what it is: `print(hilbish.dataDir .. '/.hilbishrc.lua')`.
|
You can print that path via Lua to see what it is: `print(hilbish.dataDir .. '/.hilbishrc.lua')`.\
|
||||||
As an example, it will usually will result in `/usr/share/hilbish/.hilbishrc.lua` on Linux.
|
\
|
||||||
|
As an example, it will usually will result in `/usr/share/hilbish/.hilbishrc.lua` on Linux.\
|
||||||
To edit your user configuration, you can copy that file to `hilbish.userDir.config .. '/hilbish/init.lua'`,
|
\
|
||||||
which follows XDG on Linux and MacOS, and is located in %APPDATA% on Windows.
|
To edit your user configuration, you can copy that file to `hilbish.userDir.config .. '/hilbish/init.lua'`, which follows XDG on Linux and MacOS, and is located in %APPDATA% on Windows.\
|
||||||
|
\
|
||||||
As the directory is usually `~/.config` on Linux, you can run this command to copy it:
|
As the directory is usually `~/.config` on Linux, you can run this command to copy it:
|
||||||
`cp /usr/share/hilbish/.hilbishrc.lua ~/.config/hilbish/init.lua`
|
`cp /usr/share/hilbish/.hilbishrc.lua ~/.config/hilbish/init.lua`. Now we can get to customization!\
|
||||||
|
\
|
||||||
Now we can get to customization!
|
|
||||||
|
|
||||||
If we closely examine a small snippet of the default config:
|
If we closely examine a small snippet of the default config:
|
||||||
|
|
||||||
```lua
|
```lua
|
||||||
-- Default Hilbish config
|
-- Default Hilbish config
|
||||||
-- .. with some omitted code .. --
|
-- .. with some omitted code .. --
|
||||||
@ -72,19 +73,18 @@ bait.catch('command.exit', function(code)
|
|||||||
doPrompt(code ~= 0)
|
doPrompt(code ~= 0)
|
||||||
end)
|
end)
|
||||||
```
|
```
|
||||||
|
\
|
||||||
|
|
||||||
We see a whopping **three** Hilbish libraries being used in this part of code.
|
We see a whopping **three** Hilbish libraries being used in this part of code.
|
||||||
First is of course, named after the shell itself, [`hilbish`](../api/hilbish). This is kind of a
|
First is of course, named after the shell itself, [`hilbish`](../api/hilbish). This is kind of a
|
||||||
"catch-all" namespace for functions that directly related to shell functionality/settings.
|
"catch-all" namespace for functions that directly related to shell functionality/settings.\
|
||||||
|
\
|
||||||
And as we can see, the [hilbish.prompt](../api/hilbish/#prompt) function is used
|
And as we can see, the [hilbish.prompt](../api/hilbish/#prompt) function is used
|
||||||
to change our prompt. Change our prompt to what, exactly?
|
to change our prompt. Change our prompt to what, exactly?\
|
||||||
|
The doc for the function states that the verbs `%u` and `%d` are used for username and current directory of the shell, respectively.\
|
||||||
The doc for the function states that the verbs `%u` and `%d`are used for username and current directory
|
|
||||||
of the shell, respectively.
|
|
||||||
|
|
||||||
We wrap this in the [`lunacolors.format`](../lunacolors) function, to give
|
We wrap this in the [`lunacolors.format`](../lunacolors) function, to give
|
||||||
our prompt some nice color.
|
our prompt some nice color.\
|
||||||
|
\
|
||||||
|
|
||||||
But you might have also noticed that this is in the `doPrompt` function, which is called once,
|
But you might have also noticed that this is in the `doPrompt` function, which is called once,
|
||||||
and then used again in a [bait](../api/bait) hook. Specifically, the `command.exit` hook,
|
and then used again in a [bait](../api/bait) hook. Specifically, the `command.exit` hook,
|
||||||
|
@ -8,35 +8,46 @@ menu:
|
|||||||
---
|
---
|
||||||
|
|
||||||
## command.preexec
|
## command.preexec
|
||||||
|
|
||||||
Thrown right before a command is executed.
|
Thrown right before a command is executed.
|
||||||
|
|
||||||
#### Variables
|
#### Variables
|
||||||
`string` **`input`**
|
|
||||||
|
`string` _input_
|
||||||
The raw string that the user typed. This will include the text
|
The raw string that the user typed. This will include the text
|
||||||
without changes applied to it (argument substitution, alias expansion,
|
without changes applied to it (argument substitution, alias expansion,
|
||||||
etc.)
|
etc.)
|
||||||
|
|
||||||
`string` **`cmdStr`**
|
`string` _cmdStr_
|
||||||
The command that will be directly executed by the current runner.
|
The command that will be directly executed by the current runner.
|
||||||
|
|
||||||
<hr>
|
``` =html
|
||||||
|
<hr class="my-4">
|
||||||
|
```
|
||||||
|
|
||||||
## command.exit
|
## command.exit
|
||||||
|
|
||||||
Thrown after the user's ran command is finished.
|
Thrown after the user's ran command is finished.
|
||||||
|
|
||||||
#### Variables
|
#### Variables
|
||||||
`number` **`code`**
|
|
||||||
|
`number` _code_
|
||||||
The exit code of what was executed.
|
The exit code of what was executed.
|
||||||
|
|
||||||
`string` **`cmdStr`**
|
`string` _cmdStr_
|
||||||
The command or code that was executed
|
The command or code that was executed
|
||||||
|
|
||||||
<hr>
|
``` =html
|
||||||
|
<hr class="my-4">
|
||||||
|
```
|
||||||
|
|
||||||
## command.not-found
|
## command.not-found
|
||||||
|
|
||||||
Thrown if the command attempted to execute was not found.
|
Thrown if the command attempted to execute was not found.
|
||||||
This can be used to customize the text printed when a command is not found.
|
This can be used to customize the text printed when a command is not found.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
```lua
|
```lua
|
||||||
local bait = require 'bait'
|
local bait = require 'bait'
|
||||||
-- Remove any present handlers on `command.not-found`
|
-- Remove any present handlers on `command.not-found`
|
||||||
@ -53,15 +64,20 @@ end)
|
|||||||
```
|
```
|
||||||
|
|
||||||
#### Variables
|
#### Variables
|
||||||
`string` **`cmdStr`**
|
|
||||||
|
`string` _cmdStr_
|
||||||
The name of the command.
|
The name of the command.
|
||||||
|
|
||||||
<hr>
|
``` =html
|
||||||
|
<hr class="my-4">
|
||||||
|
```
|
||||||
|
|
||||||
## command.not-executable
|
## command.not-executable
|
||||||
|
|
||||||
Thrown when the user attempts to run a file that is not executable
|
Thrown when the user attempts to run a file that is not executable
|
||||||
(like a text file, or Unix binary without +x permission).
|
(like a text file, or Unix binary without +x permission).
|
||||||
|
|
||||||
#### Variables
|
#### Variables
|
||||||
`string` **`cmdStr`**
|
|
||||||
|
`string` _cmdStr_
|
||||||
The name of the command.
|
The name of the command.
|
||||||
|
@ -8,64 +8,87 @@ menu:
|
|||||||
---
|
---
|
||||||
|
|
||||||
## hilbish.exit
|
## hilbish.exit
|
||||||
|
|
||||||
Sent when Hilbish is going to exit.
|
Sent when Hilbish is going to exit.
|
||||||
|
|
||||||
#### Variables
|
#### Variables
|
||||||
|
|
||||||
This signal returns no variables.
|
This signal returns no variables.
|
||||||
|
|
||||||
<hr>
|
``` =html
|
||||||
|
<hr class="my-4">
|
||||||
|
```
|
||||||
|
|
||||||
## hilbish.vimMode
|
## hilbish.vimMode
|
||||||
|
|
||||||
Sent when the Vim mode of Hilbish is changed (like from insert to normal mode).
|
Sent when the Vim mode of Hilbish is changed (like from insert to normal mode).
|
||||||
This can be used to change the prompt and notify based on Vim mode.
|
This can be used to change the prompt and notify based on Vim mode.
|
||||||
|
|
||||||
#### Variables
|
#### Variables
|
||||||
`string` **`modeName`**
|
|
||||||
|
`string` _modeName_
|
||||||
The mode that has been set.
|
The mode that has been set.
|
||||||
Can be these values: `insert`, `normal`, `delete` or `replace`
|
Can be these values: `insert`, `normal`, `delete` or `replace`
|
||||||
|
|
||||||
<hr>
|
``` =html
|
||||||
|
<hr class="my-4">
|
||||||
|
```
|
||||||
|
|
||||||
## hilbish.cancel
|
## hilbish.cancel
|
||||||
|
|
||||||
Sent when the user cancels their command input with Ctrl-C
|
Sent when the user cancels their command input with Ctrl-C
|
||||||
|
|
||||||
#### Variables
|
#### Variables
|
||||||
|
|
||||||
This signal returns no variables.
|
This signal returns no variables.
|
||||||
|
|
||||||
<hr>
|
``` =html
|
||||||
|
<hr class="my-4">
|
||||||
|
```
|
||||||
|
|
||||||
## hilbish.notification
|
## hilbish.notification
|
||||||
|
|
||||||
Thrown when a [notification](../../features/notifications) is sent.
|
Thrown when a [notification](../../features/notifications) is sent.
|
||||||
|
|
||||||
#### Variables
|
#### Variables
|
||||||
`table` **`notification`**
|
|
||||||
|
`table` _notification_
|
||||||
The notification. The properties are defined in the link above.
|
The notification. The properties are defined in the link above.
|
||||||
|
|
||||||
<hr>
|
``` =html
|
||||||
|
<hr class="my-4">
|
||||||
|
```
|
||||||
|
|
||||||
## hilbish.cd
|
## hilbish.cd
|
||||||
|
|
||||||
Sent when the current directory of the shell is changed (via interactive means.)
|
Sent when the current directory of the shell is changed (via interactive means.)
|
||||||
If you are implementing a custom command that changes the directory of the shell,
|
~~If you are implementing a custom command that changes the directory of the shell, you must throw this hook manually for correctness.~~ Since 3.0, `hilbish.cd` is thrown when `fs.cd` is called.
|
||||||
you must throw this hook manually for correctness.
|
|
||||||
|
|
||||||
#### Variables
|
#### Variables
|
||||||
`string` **`path`**
|
|
||||||
|
`string` _path_
|
||||||
Absolute path of the directory that was changed to.
|
Absolute path of the directory that was changed to.
|
||||||
|
|
||||||
`string` **`oldPath`**
|
`string` _oldPath_
|
||||||
Absolute path of the directory Hilbish *was* in.
|
Absolute path of the directory Hilbish *was* in.
|
||||||
|
|
||||||
<hr>
|
``` =html
|
||||||
|
<hr class="my-4">
|
||||||
|
```
|
||||||
|
|
||||||
## hilbish.vimAction
|
## hilbish.vimAction
|
||||||
|
|
||||||
Sent when the user does a "vim action," being something like yanking or pasting text.
|
Sent when the user does a "vim action," being something like yanking or pasting text.
|
||||||
See `doc vim-mode actions` for more info.
|
See `doc vim-mode actions` for more info.
|
||||||
|
|
||||||
#### Variables
|
#### Variables
|
||||||
`string` **`actionName`**
|
|
||||||
|
`string` _actionName_
|
||||||
Absolute path of the directory that was changed to.
|
Absolute path of the directory that was changed to.
|
||||||
|
|
||||||
`table` **`args`**
|
`table` _args_
|
||||||
Table of args relating to the Vim action.
|
Table of args relating to the Vim action.
|
||||||
|
|
||||||
<hr>
|
``` =html
|
||||||
|
<hr class="my-4">
|
||||||
|
```
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
Note: `job` refers to a job object. You can check `doc jobs` for more
|
Note: `job` refers to a job object. You can check `doc jobs` for more
|
||||||
detail.
|
detail.
|
||||||
|
|
||||||
+ `job.start` -> job > Thrown when a new background job starts.
|
- `job.start` -> job > Thrown when a new background job starts.
|
||||||
|
|
||||||
+ `job.done` -> job > Thrown when a background jobs exits.
|
|
||||||
|
|
||||||
|
- `job.done` -> job > Thrown when a background jobs exits.
|
||||||
|
@ -8,33 +8,46 @@ menu:
|
|||||||
---
|
---
|
||||||
|
|
||||||
## signal.sigint
|
## signal.sigint
|
||||||
|
|
||||||
Thrown when Hilbish receive the SIGINT signal,
|
Thrown when Hilbish receive the SIGINT signal,
|
||||||
aka when Ctrl-C is pressed.
|
aka when Ctrl-C is pressed.
|
||||||
|
|
||||||
#### Variables
|
#### Variables
|
||||||
|
|
||||||
This signal returns no variables.
|
This signal returns no variables.
|
||||||
|
|
||||||
<hr>
|
``` =html
|
||||||
|
<hr class="my-4">
|
||||||
|
```
|
||||||
|
|
||||||
## signal.resize
|
## signal.resize
|
||||||
|
|
||||||
Thrown when the terminal is resized.
|
Thrown when the terminal is resized.
|
||||||
|
|
||||||
#### Variables
|
#### Variables
|
||||||
|
|
||||||
This signal returns no variables.
|
This signal returns no variables.
|
||||||
|
|
||||||
<hr>
|
``` =html
|
||||||
|
<hr class="my-4">
|
||||||
|
```
|
||||||
|
|
||||||
## signal.sigusr1
|
## signal.sigusr1
|
||||||
|
|
||||||
Thrown when SIGUSR1 is sent to Hilbish.
|
Thrown when SIGUSR1 is sent to Hilbish.
|
||||||
|
|
||||||
#### Variables
|
#### Variables
|
||||||
|
|
||||||
This signal returns no variables.
|
This signal returns no variables.
|
||||||
|
|
||||||
<hr>
|
``` =html
|
||||||
|
<hr class="my-4">
|
||||||
|
```
|
||||||
|
|
||||||
## signal.sigusr2
|
## signal.sigusr2
|
||||||
|
|
||||||
Thrown when SIGUSR2 is sent to Hilbish.
|
Thrown when SIGUSR2 is sent to Hilbish.
|
||||||
|
|
||||||
#### Variables
|
#### Variables
|
||||||
This signal returns no variables.
|
|
||||||
|
|
||||||
|
This signal returns no variables.
|
||||||
|
@ -8,12 +8,12 @@ menu: docs
|
|||||||
A bit after creation, we have the outside nature. Little plants, seeds,
|
A bit after creation, we have the outside nature. Little plants, seeds,
|
||||||
growing to their final phase: a full plant. A lot of Hilbish itself is
|
growing to their final phase: a full plant. A lot of Hilbish itself is
|
||||||
written in Go, but there are parts made in Lua, being most builtins
|
written in Go, but there are parts made in Lua, being most builtins
|
||||||
(`doc`, `cd`, cdr), completions, and other things.
|
(`doc`, `cd`, cdr), completions, and other things.\
|
||||||
|
|
||||||
Hilbish's Lua core module is called `nature`.
|
Hilbish's Lua core module is called `nature`.
|
||||||
It runs after Hilbish's Go core does.
|
It runs after Hilbish's Go core does.
|
||||||
|
|
||||||
# Nature Modules
|
# Nature Modules
|
||||||
Currently, `nature` provides 1 intended public module: `nature.dirs`.
|
|
||||||
|
Currently, `nature` provides 1 intended public module: `nature.dirs`.\
|
||||||
It is a simple API for managing recent directories and old
|
It is a simple API for managing recent directories and old
|
||||||
current working directory.
|
current working directory.
|
||||||
|
@ -9,12 +9,12 @@ menu:
|
|||||||
|
|
||||||
Vim actions are essentially just when a user uses a Vim keybind.
|
Vim actions are essentially just when a user uses a Vim keybind.
|
||||||
Things like yanking and pasting are Vim actions.
|
Things like yanking and pasting are Vim actions.
|
||||||
This is not an "offical Vim thing," just a Hilbish thing.
|
This is not an "offical Vim thing," just a Hilbish thing.\
|
||||||
|
\
|
||||||
The `hilbish.vimAction` hook is thrown whenever a Vim action occurs.
|
The `hilbish.vimAction` hook is thrown whenever a Vim action occurs.
|
||||||
It passes 2 arguments: the action name, and an array (table) of args
|
It passes 2 arguments: the action name, and an array (table) of args
|
||||||
relating to it.
|
relating to it.\
|
||||||
|
\
|
||||||
Here is documentation for what the table of args will hold for an
|
Here is documentation for what the table of args will hold for an
|
||||||
appropriate Vim action.
|
appropriate Vim action.
|
||||||
|
|
||||||
|
@ -16,7 +16,11 @@ import jot
|
|||||||
import post
|
import post
|
||||||
import util
|
import util
|
||||||
|
|
||||||
pub fn page(p: post.Post, doc_pages_list) -> element.Element(a) {
|
pub fn page(
|
||||||
|
p: post.Post,
|
||||||
|
this_slug: String,
|
||||||
|
doc_pages_list,
|
||||||
|
) -> element.Element(a) {
|
||||||
html.div([attribute.class("flex-auto flex flex-col overflow-none")], [
|
html.div([attribute.class("flex-auto flex flex-col overflow-none")], [
|
||||||
html.div(
|
html.div(
|
||||||
[
|
[
|
||||||
@ -103,16 +107,37 @@ pub fn page(p: post.Post, doc_pages_list) -> element.Element(a) {
|
|||||||
})
|
})
|
||||||
|> list.first()
|
|> list.first()
|
||||||
[
|
[
|
||||||
html.li([attribute.class("font-bold")], [
|
html.li(
|
||||||
|
[
|
||||||
|
attribute.class(
|
||||||
|
"font-bold"
|
||||||
|
<> case this_slug == { parent_post.1 }.slug {
|
||||||
|
False -> {
|
||||||
|
""
|
||||||
|
}
|
||||||
|
True -> " text-pink-400"
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
html.a(
|
html.a(
|
||||||
[
|
[
|
||||||
attribute.href(conf.base_url_join(
|
attribute.href(conf.base_url_join(
|
||||||
{ parent_post.1 }.slug,
|
{ parent_post.1 }.slug,
|
||||||
)),
|
)),
|
||||||
],
|
],
|
||||||
[element.text({ parent_post.1 }.title)],
|
[
|
||||||
|
element.text(
|
||||||
|
case this_slug == { parent_post.1 }.slug {
|
||||||
|
False -> ""
|
||||||
|
True -> " -> "
|
||||||
|
}
|
||||||
|
<> { parent_post.1 }.title,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
),
|
),
|
||||||
]),
|
|
||||||
case list.length(group.1) {
|
case list.length(group.1) {
|
||||||
1 -> element.none()
|
1 -> element.none()
|
||||||
_ ->
|
_ ->
|
||||||
@ -123,12 +148,33 @@ pub fn page(p: post.Post, doc_pages_list) -> element.Element(a) {
|
|||||||
{ p1.1 }.title != { parent_post.1 }.title
|
{ p1.1 }.title != { parent_post.1 }.title
|
||||||
})
|
})
|
||||||
|> list.map(fn(post: #(String, post.Post)) {
|
|> list.map(fn(post: #(String, post.Post)) {
|
||||||
html.li([attribute.class("mb-2")], [
|
html.li(
|
||||||
|
[
|
||||||
|
attribute.class(
|
||||||
|
"mb-2"
|
||||||
|
<> case this_slug == { post.1 }.slug {
|
||||||
|
False -> {
|
||||||
|
""
|
||||||
|
}
|
||||||
|
True -> " text-pink-400"
|
||||||
|
},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
html.a(
|
html.a(
|
||||||
[attribute.href(conf.base_url_join(post.0))],
|
[attribute.href(conf.base_url_join(post.0))],
|
||||||
[element.text({ post.1 }.title)],
|
[
|
||||||
|
element.text(
|
||||||
|
case this_slug == { post.1 }.slug {
|
||||||
|
False -> ""
|
||||||
|
True -> " -> "
|
||||||
|
}
|
||||||
|
<> { post.1 }.title,
|
||||||
),
|
),
|
||||||
])
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
)
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import conf
|
import conf
|
||||||
|
import util
|
||||||
|
|
||||||
import lustre/attribute
|
import lustre/attribute
|
||||||
import lustre/element
|
import lustre/element
|
||||||
@ -38,10 +39,14 @@ pub fn page() -> element.Element(a) {
|
|||||||
element.text("Extensible, scriptable, configurable: All in Lua."),
|
element.text("Extensible, scriptable, configurable: All in Lua."),
|
||||||
]),
|
]),
|
||||||
html.div([attribute.class("flex flex-row gap-2 mt-2")], [
|
html.div([attribute.class("flex flex-row gap-2 mt-2")], [
|
||||||
button("Install", "bg-pink-500/30", conf.base_url_join("/install")),
|
button(
|
||||||
|
"Install",
|
||||||
|
"bg-pink-500/30 hover:bg-pink-500/80",
|
||||||
|
conf.base_url_join("/install"),
|
||||||
|
),
|
||||||
button(
|
button(
|
||||||
"GitHub",
|
"GitHub",
|
||||||
"bg-stone-500/30",
|
"bg-stone-500/30 hover:bg-stone-500/80",
|
||||||
"https://github.com/Rosettea/Hilbish",
|
"https://github.com/Rosettea/Hilbish",
|
||||||
),
|
),
|
||||||
]),
|
]),
|
||||||
@ -60,6 +65,13 @@ pub fn page() -> element.Element(a) {
|
|||||||
[element.text("Feature Overview")],
|
[element.text("Feature Overview")],
|
||||||
),
|
),
|
||||||
html.br([]),
|
html.br([]),
|
||||||
|
html.div(
|
||||||
|
[
|
||||||
|
attribute.class(
|
||||||
|
"flex flex-col justify-center items-center gap-6 mt-4",
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
html.h1(
|
html.h1(
|
||||||
[
|
[
|
||||||
attribute.class(
|
attribute.class(
|
||||||
@ -85,13 +97,6 @@ pub fn page() -> element.Element(a) {
|
|||||||
element.text(" Great?"),
|
element.text(" Great?"),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
html.div(
|
|
||||||
[
|
|
||||||
attribute.class(
|
|
||||||
"flex flex-col justify-center items-center gap-6 mt-4",
|
|
||||||
),
|
|
||||||
],
|
|
||||||
[
|
|
||||||
feature_section(
|
feature_section(
|
||||||
"The Moon-powered shell",
|
"The Moon-powered shell",
|
||||||
"https://upload.wikimedia.org/wikipedia/commons/thumb/c/cf/Lua-Logo.svg/2048px-Lua-Logo.svg.png",
|
"https://upload.wikimedia.org/wikipedia/commons/thumb/c/cf/Lua-Logo.svg/2048px-Lua-Logo.svg.png",
|
||||||
@ -128,7 +133,7 @@ pub fn page() -> element.Element(a) {
|
|||||||
html.div(
|
html.div(
|
||||||
[
|
[
|
||||||
attribute.class(
|
attribute.class(
|
||||||
"text-center bg-neutral-100 dark:bg-neutral-900 -mx-4 p-4",
|
"border-t border-t-zinc-300 text-center bg-neutral-100 dark:bg-neutral-900 -mx-4 p-4",
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
@ -151,7 +156,7 @@ pub fn page() -> element.Element(a) {
|
|||||||
]),
|
]),
|
||||||
html.p([], [
|
html.p([], [
|
||||||
element.text(
|
element.text(
|
||||||
"These are binary releases of Hilbish from GitHub. Install instructions are located at an INSTALL.md file.",
|
"These are \"portable\" binary releases of Hilbish from GitHub. All the required files are in the archive. Put it somewhere, add the directory to your $PATH, and use Hilbish.",
|
||||||
),
|
),
|
||||||
]),
|
]),
|
||||||
html.div(
|
html.div(
|
||||||
@ -168,7 +173,11 @@ pub fn page() -> element.Element(a) {
|
|||||||
),
|
),
|
||||||
attribute.class("h-36"),
|
attribute.class("h-36"),
|
||||||
]),
|
]),
|
||||||
button("Linux (64-bit)", "bg-stone-500/30", ""),
|
button(
|
||||||
|
"Linux (64-bit)",
|
||||||
|
"bg-stone-500/30 hover:bg-stone-500/80",
|
||||||
|
download_link("linux", "amd64"),
|
||||||
|
),
|
||||||
]),
|
]),
|
||||||
html.div([attribute.class("flex flex-col gap-2")], [
|
html.div([attribute.class("flex flex-col gap-2")], [
|
||||||
html.img([
|
html.img([
|
||||||
@ -177,7 +186,11 @@ pub fn page() -> element.Element(a) {
|
|||||||
),
|
),
|
||||||
attribute.class("h-36"),
|
attribute.class("h-36"),
|
||||||
]),
|
]),
|
||||||
button("Windows (64-bit)", "bg-stone-500/30", ""),
|
button(
|
||||||
|
"Windows (64-bit)",
|
||||||
|
"bg-stone-500/30 hover:bg-stone-500/80",
|
||||||
|
download_link("windows", "amd64"),
|
||||||
|
),
|
||||||
]),
|
]),
|
||||||
html.div(
|
html.div(
|
||||||
[
|
[
|
||||||
@ -192,7 +205,11 @@ pub fn page() -> element.Element(a) {
|
|||||||
),
|
),
|
||||||
attribute.class("h-36"),
|
attribute.class("h-36"),
|
||||||
]),
|
]),
|
||||||
button("MacOS (64-bit)", "bg-stone-500/30", ""),
|
button(
|
||||||
|
"MacOS (64-bit)",
|
||||||
|
"bg-stone-500/30 hover:bg-stone-500/80",
|
||||||
|
download_link("darwin", "amd64"),
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
html.div(
|
html.div(
|
||||||
@ -208,11 +225,16 @@ pub fn page() -> element.Element(a) {
|
|||||||
),
|
),
|
||||||
attribute.class("h-36"),
|
attribute.class("h-36"),
|
||||||
]),
|
]),
|
||||||
button("MacOS (ARM)", "bg-stone-500/30", ""),
|
button(
|
||||||
|
"MacOS (ARM)",
|
||||||
|
"bg-stone-500/30 hover:bg-stone-500/80",
|
||||||
|
download_link("darwin", "arm64"),
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
util.link(conf.base_url_join("/install"), "Other Downloads", True),
|
||||||
]),
|
]),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
@ -234,7 +256,8 @@ fn feature_section(
|
|||||||
html.div(
|
html.div(
|
||||||
[
|
[
|
||||||
attribute.class(
|
attribute.class(
|
||||||
"flex flex-col gap-2 md:w-3/6 text-start xl:items-" <> align,
|
"flex flex-col gap-2 md:w-3/6 text-start xl:items-",
|
||||||
|
// <> align,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
@ -242,8 +265,8 @@ fn feature_section(
|
|||||||
html.div(
|
html.div(
|
||||||
[
|
[
|
||||||
attribute.class(
|
attribute.class(
|
||||||
"flex flex-row flex-wrap xl:flex-nowrap justify-center items-center gap-4 "
|
"flex flex-row flex-wrap xl:flex-nowrap justify-center items-center gap-4 ",
|
||||||
<> reverse,
|
//<> reverse,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
[html.p([], [element.text(text)])],
|
[html.p([], [element.text(text)])],
|
||||||
@ -264,3 +287,12 @@ fn button(text: String, color: String, link: String) -> element.Element(a) {
|
|||||||
),
|
),
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn download_link(os: String, arch: String) -> String {
|
||||||
|
// TODO: remove version in asset name when 3.0 drops
|
||||||
|
"https://github.com/Rosettea/Hilbish/releases/download/latest/hilbish-v2.3.4-"
|
||||||
|
<> os
|
||||||
|
<> "-"
|
||||||
|
<> arch
|
||||||
|
<> ".tar.gz"
|
||||||
|
}
|
||||||
|
@ -2,6 +2,10 @@ import gleam/int
|
|||||||
import gleam/option
|
import gleam/option
|
||||||
import gleam/string
|
import gleam/string
|
||||||
|
|
||||||
|
import lustre/attribute
|
||||||
|
import lustre/element
|
||||||
|
import lustre/element/html
|
||||||
|
|
||||||
import glaml
|
import glaml
|
||||||
import post
|
import post
|
||||||
|
|
||||||
@ -27,3 +31,40 @@ pub fn sort_weight(p1: #(String, post.Post), p2: #(String, post.Post)) {
|
|||||||
False -> int.compare(p1_weight, p2_weight)
|
False -> int.compare(p1_weight, p2_weight)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn link(url: String, text: String, out: Bool) {
|
||||||
|
html.a(
|
||||||
|
[
|
||||||
|
attribute.href(url),
|
||||||
|
case out {
|
||||||
|
False -> attribute.none()
|
||||||
|
True -> attribute.target("_blank")
|
||||||
|
},
|
||||||
|
],
|
||||||
|
[
|
||||||
|
html.span(
|
||||||
|
[
|
||||||
|
attribute.class(
|
||||||
|
"inline-flex text-light dark:text-pink-300 dark:hover:text-pink-200 text-pink-600 hover:text-pink-500 hover:underline",
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
case out {
|
||||||
|
False -> element.none()
|
||||||
|
True ->
|
||||||
|
element.unsafe_raw_html(
|
||||||
|
"",
|
||||||
|
"tag",
|
||||||
|
[],
|
||||||
|
"<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"size-6\">
|
||||||
|
<path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M13.5 6H5.25A2.25 2.25 0 0 0 3 8.25v10.5A2.25 2.25 0 0 0 5.25 21h10.5A2.25 2.25 0 0 0 18 18.75V10.5m-10.5 6L21 3m0 0h-5.25M21 3v5.25\" />
|
||||||
|
</svg>
|
||||||
|
",
|
||||||
|
)
|
||||||
|
},
|
||||||
|
element.text(text),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
}
|
||||||
|
@ -35,7 +35,6 @@ pub fn main() {
|
|||||||
_ -> slug
|
_ -> slug
|
||||||
}
|
}
|
||||||
|
|
||||||
io.debug(path)
|
|
||||||
let assert Ok(content) = simplifile.read(path)
|
let assert Ok(content) = simplifile.read(path)
|
||||||
let frontmatter = djot.frontmatter(content)
|
let frontmatter = djot.frontmatter(content)
|
||||||
let metadata = case frontmatter {
|
let metadata = case frontmatter {
|
||||||
@ -82,10 +81,10 @@ pub fn main() {
|
|||||||
|> ssg.add_static_route("/", create_page(index.page()))
|
|> ssg.add_static_route("/", create_page(index.page()))
|
||||||
|> list.fold(posts, _, fn(config, post) {
|
|> list.fold(posts, _, fn(config, post) {
|
||||||
let page = case is_doc_page(post.0) {
|
let page = case is_doc_page(post.0) {
|
||||||
True -> doc.page(post.1, doc_pages)
|
True -> doc.page(post.1, post.0, doc_pages)
|
||||||
False -> doc.page(post.1, doc_pages)
|
False -> doc.page(post.1, post.0, doc_pages)
|
||||||
}
|
}
|
||||||
io.debug(post.0)
|
//io.debug(post.0)
|
||||||
ssg.add_static_route(config, post.0, create_page(page))
|
ssg.add_static_route(config, post.0, create_page(page))
|
||||||
})
|
})
|
||||||
|> ssg.use_index_routes
|
|> ssg.use_index_routes
|
||||||
@ -131,23 +130,11 @@ fn nav() -> element.Element(a) {
|
|||||||
),
|
),
|
||||||
]),
|
]),
|
||||||
]),
|
]),
|
||||||
html.div(
|
html.div([attribute.class("flex gap-3")], [
|
||||||
[attribute.class("flex gap-3 dark:text-pink-300 text-pink-600")],
|
util.link(conf.base_url_join("/install"), "Install", False),
|
||||||
[
|
util.link(conf.base_url_join("/docs"), "Docs", False),
|
||||||
html.a([attribute.href(conf.base_url_join("/"))], [
|
util.link(conf.base_url_join("/blog"), "Blog", False),
|
||||||
element.text("Home"),
|
|
||||||
]),
|
]),
|
||||||
html.a([attribute.href(conf.base_url_join("/install"))], [
|
|
||||||
element.text("Install"),
|
|
||||||
]),
|
|
||||||
html.a([attribute.href(conf.base_url_join("/docs"))], [
|
|
||||||
element.text("Docs"),
|
|
||||||
]),
|
|
||||||
html.a([attribute.href(conf.base_url_join("/blog"))], [
|
|
||||||
element.text("Blog"),
|
|
||||||
]),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@ -184,7 +171,7 @@ fn footer() -> element.Element(a) {
|
|||||||
]),
|
]),
|
||||||
]),
|
]),
|
||||||
html.div([attribute.class("flex flex-col")], [
|
html.div([attribute.class("flex flex-col")], [
|
||||||
link("https://github.com/Rosettea/Hilbish", "GitHub"),
|
util.link("https://github.com/Rosettea/Hilbish", "GitHub", True),
|
||||||
]),
|
]),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
@ -257,11 +244,3 @@ fn create_page(content: element.Element(a)) -> element.Element(a) {
|
|||||||
],
|
],
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn link(url: String, text: String) {
|
|
||||||
html.a([attribute.href(url)], [
|
|
||||||
html.span([attribute.class("text-pink-300 text-light")], [
|
|
||||||
element.text(text),
|
|
||||||
]),
|
|
||||||
])
|
|
||||||
}
|
|
||||||
|
@ -1,21 +0,0 @@
|
|||||||
MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2022 Rosettea
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
@ -1,2 +0,0 @@
|
|||||||
+++
|
|
||||||
+++
|
|
@ -1,89 +0,0 @@
|
|||||||
.chroma {
|
|
||||||
display: inline-block;
|
|
||||||
padding: 0.5em;
|
|
||||||
}
|
|
||||||
/* Background */ .bg { background-color: #F7F7F7; }
|
|
||||||
/* PreWrapper */ .chroma { background-color: #F7F7F7; }
|
|
||||||
/* Other */ .chroma .x { }
|
|
||||||
/* Error */ .chroma .err { color: #a61717; background-color: #e3d2d2 }
|
|
||||||
/* CodeLine */ .chroma .cl { }
|
|
||||||
/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
|
|
||||||
/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }
|
|
||||||
/* LineHighlight */ .chroma .hl { background-color: #F7F7F7 }
|
|
||||||
/* LineNumbersTable */ .chroma .lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
|
|
||||||
/* LineNumbers */ .chroma .ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
|
|
||||||
/* Line */ .chroma .line { display: flex; }
|
|
||||||
/* Keyword */ .chroma .k { color: #008800; font-weight: bold }
|
|
||||||
/* KeywordConstant */ .chroma .kc { color: #008800; font-weight: bold }
|
|
||||||
/* KeywordDeclaration */ .chroma .kd { color: #008800; font-weight: bold }
|
|
||||||
/* KeywordNamespace */ .chroma .kn { color: #008800; font-weight: bold }
|
|
||||||
/* KeywordPseudo */ .chroma .kp { color: #008800 }
|
|
||||||
/* KeywordReserved */ .chroma .kr { color: #008800; font-weight: bold }
|
|
||||||
/* KeywordType */ .chroma .kt { color: #888888; font-weight: bold }
|
|
||||||
/* Name */ .chroma .n { }
|
|
||||||
/* NameAttribute */ .chroma .na { color: #336699 }
|
|
||||||
/* NameBuiltin */ .chroma .nb { color: #003388 }
|
|
||||||
/* NameBuiltinPseudo */ .chroma .bp { }
|
|
||||||
/* NameClass */ .chroma .nc { color: #bb0066; font-weight: bold }
|
|
||||||
/* NameConstant */ .chroma .no { color: #003366; font-weight: bold }
|
|
||||||
/* NameDecorator */ .chroma .nd { color: #555555 }
|
|
||||||
/* NameEntity */ .chroma .ni { }
|
|
||||||
/* NameException */ .chroma .ne { color: #bb0066; font-weight: bold }
|
|
||||||
/* NameFunction */ .chroma .nf { color: #0066bb; font-weight: bold }
|
|
||||||
/* NameFunctionMagic */ .chroma .fm { }
|
|
||||||
/* NameLabel */ .chroma .nl { color: #336699; font-style: italic }
|
|
||||||
/* NameNamespace */ .chroma .nn { color: #bb0066; font-weight: bold }
|
|
||||||
/* NameOther */ .chroma .nx { }
|
|
||||||
/* NameProperty */ .chroma .py { color: #336699; font-weight: bold }
|
|
||||||
/* NameTag */ .chroma .nt { color: #bb0066; font-weight: bold }
|
|
||||||
/* NameVariable */ .chroma .nv { color: #336699 }
|
|
||||||
/* NameVariableClass */ .chroma .vc { color: #336699 }
|
|
||||||
/* NameVariableGlobal */ .chroma .vg { color: #dd7700 }
|
|
||||||
/* NameVariableInstance */ .chroma .vi { color: #3333bb }
|
|
||||||
/* NameVariableMagic */ .chroma .vm { }
|
|
||||||
/* Literal */ .chroma .l { }
|
|
||||||
/* LiteralDate */ .chroma .ld { }
|
|
||||||
/* LiteralString */ .chroma .s { color: #dd2200; background-color: #fff0f0 }
|
|
||||||
/* LiteralStringAffix */ .chroma .sa { color: #dd2200; background-color: #fff0f0 }
|
|
||||||
/* LiteralStringBacktick */ .chroma .sb { color: #dd2200; background-color: #fff0f0 }
|
|
||||||
/* LiteralStringChar */ .chroma .sc { color: #dd2200; background-color: #fff0f0 }
|
|
||||||
/* LiteralStringDelimiter */ .chroma .dl { color: #dd2200; background-color: #fff0f0 }
|
|
||||||
/* LiteralStringDoc */ .chroma .sd { color: #dd2200; background-color: #fff0f0 }
|
|
||||||
/* LiteralStringDouble */ .chroma .s2 { color: #dd2200; background-color: #fff0f0 }
|
|
||||||
/* LiteralStringEscape */ .chroma .se { color: #0044dd; background-color: #fff0f0 }
|
|
||||||
/* LiteralStringHeredoc */ .chroma .sh { color: #dd2200; background-color: #fff0f0 }
|
|
||||||
/* LiteralStringInterpol */ .chroma .si { color: #3333bb; background-color: #fff0f0 }
|
|
||||||
/* LiteralStringOther */ .chroma .sx { color: #22bb22; background-color: #f0fff0 }
|
|
||||||
/* LiteralStringRegex */ .chroma .sr { color: #008800; background-color: #fff0ff }
|
|
||||||
/* LiteralStringSingle */ .chroma .s1 { color: #dd2200; background-color: #fff0f0 }
|
|
||||||
/* LiteralStringSymbol */ .chroma .ss { color: #aa6600; background-color: #fff0f0 }
|
|
||||||
/* LiteralNumber */ .chroma .m { color: #0000dd; font-weight: bold }
|
|
||||||
/* LiteralNumberBin */ .chroma .mb { color: #0000dd; font-weight: bold }
|
|
||||||
/* LiteralNumberFloat */ .chroma .mf { color: #0000dd; font-weight: bold }
|
|
||||||
/* LiteralNumberHex */ .chroma .mh { color: #0000dd; font-weight: bold }
|
|
||||||
/* LiteralNumberInteger */ .chroma .mi { color: #0000dd; font-weight: bold }
|
|
||||||
/* LiteralNumberIntegerLong */ .chroma .il { color: #0000dd; font-weight: bold }
|
|
||||||
/* LiteralNumberOct */ .chroma .mo { color: #0000dd; font-weight: bold }
|
|
||||||
/* Operator */ .chroma .o { }
|
|
||||||
/* OperatorWord */ .chroma .ow { color: #008800 }
|
|
||||||
/* Punctuation */ .chroma .p { }
|
|
||||||
/* Comment */ .chroma .c { color: #888888 }
|
|
||||||
/* CommentHashbang */ .chroma .ch { color: #888888 }
|
|
||||||
/* CommentMultiline */ .chroma .cm { color: #888888 }
|
|
||||||
/* CommentSingle */ .chroma .c1 { color: #888888 }
|
|
||||||
/* CommentSpecial */ .chroma .cs { color: #cc0000; background-color: #fff0f0; font-weight: bold }
|
|
||||||
/* CommentPreproc */ .chroma .cp { color: #cc0000; font-weight: bold }
|
|
||||||
/* CommentPreprocFile */ .chroma .cpf { color: #cc0000; font-weight: bold }
|
|
||||||
/* Generic */ .chroma .g { }
|
|
||||||
/* GenericDeleted */ .chroma .gd { color: #000000; background-color: #ffdddd }
|
|
||||||
/* GenericEmph */ .chroma .ge { font-style: italic }
|
|
||||||
/* GenericError */ .chroma .gr { color: #aa0000 }
|
|
||||||
/* GenericHeading */ .chroma .gh { color: #333333 }
|
|
||||||
/* GenericInserted */ .chroma .gi { color: #000000; background-color: #ddffdd }
|
|
||||||
/* GenericOutput */ .chroma .go { color: #888888 }
|
|
||||||
/* GenericPrompt */ .chroma .gp { color: #555555 }
|
|
||||||
/* GenericStrong */ .chroma .gs { font-weight: bold }
|
|
||||||
/* GenericSubheading */ .chroma .gu { color: #666666 }
|
|
||||||
/* GenericTraceback */ .chroma .gt { color: #aa0000 }
|
|
||||||
/* GenericUnderline */ .chroma .gl { text-decoration: underline }
|
|
||||||
/* TextWhitespace */ .chroma .w { color: #bbbbbb }
|
|
@ -1,7 +0,0 @@
|
|||||||
{{ define "main"}}
|
|
||||||
<main id="main">
|
|
||||||
<div>
|
|
||||||
<h1><a href="{{ "/" | relURL }}">Go Home</a></h1>
|
|
||||||
</div>
|
|
||||||
</main>
|
|
||||||
{{ end }}
|
|
@ -1,11 +0,0 @@
|
|||||||
|
|
||||||
<h{{ (add .Level 1) }} id="{{ .Anchor | safeURL }}" class="heading">
|
|
||||||
{{ .Text | safeHTML }}
|
|
||||||
<a href="#{{ .Anchor | safeURL }}" class='heading-link'>
|
|
||||||
<i class="fas fa-paperclip"></i>
|
|
||||||
</a>
|
|
||||||
</h{{ (add .Level 1) }}>
|
|
||||||
|
|
||||||
{{ if eq .Text ""}}
|
|
||||||
<hr>
|
|
||||||
{{ end }}
|
|
@ -1 +0,0 @@
|
|||||||
<a href="{{ .Destination | safeURL }}"{{ with .Title}} title="{{ . }}"{{ end }}{{ if eq (substr .Destination 0 4) "http" }} target="_blank" rel="noopener"{{ end }}>{{ .Text | safeHTML }}</a>
|
|
@ -1,21 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
{{- partial "head.html" . -}}
|
|
||||||
<body class="d-flex flex-column min-vh-100" style="overflow-x: hidden;">
|
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
|
|
||||||
<symbol id="check-circle-fill" fill="currentColor" viewBox="0 0 16 16">
|
|
||||||
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zm-3.97-3.03a.75.75 0 0 0-1.08.022L7.477 9.417 5.384 7.323a.75.75 0 0 0-1.06 1.06L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-.01-1.05z"/>
|
|
||||||
</symbol>
|
|
||||||
<symbol id="info-fill" fill="currentColor" viewBox="0 0 16 16">
|
|
||||||
<path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16zm.93-9.412-1 4.705c-.07.34.029.533.304.533.194 0 .487-.07.686-.246l-.088.416c-.287.346-.92.598-1.465.598-.703 0-1.002-.422-.808-1.319l.738-3.468c.064-.293.006-.399-.287-.47l-.451-.081.082-.381 2.29-.287zM8 5.5a1 1 0 1 1 0-2 1 1 0 0 1 0 2z"/>
|
|
||||||
</symbol>
|
|
||||||
<symbol id="exclamation-triangle-fill" fill="currentColor" viewBox="0 0 16 16">
|
|
||||||
<path d="M8.982 1.566a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L8.982 1.566zM8 5c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 5.995A.905.905 0 0 1 8 5zm.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2z"/>
|
|
||||||
</symbol>
|
|
||||||
</svg>
|
|
||||||
|
|
||||||
{{- partial "header.html" . -}}
|
|
||||||
{{- block "main" . }}{{- end }}
|
|
||||||
{{- partial "footer.html" . -}}
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,65 +0,0 @@
|
|||||||
{{ define "main" }}
|
|
||||||
<style>
|
|
||||||
@media (min-width: 768px) {
|
|
||||||
.sidenav {
|
|
||||||
width: 240px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<div class="row">
|
|
||||||
<nav class="navbar-expand-md bg-light sidenav border-end">
|
|
||||||
<div class="container">
|
|
||||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
|
||||||
<nav class="navbar navbar-expand-md bg-light sidenav col" style="margin-top: -20px;">
|
|
||||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0 flex-column col mt-4">
|
|
||||||
{{ $currentPage := . }}
|
|
||||||
{{ range .Site.Menus.docs.ByWeight.Reverse }}
|
|
||||||
<li class="nav-item">
|
|
||||||
<a href="{{ .URL }}" class="nav-link">
|
|
||||||
<strong>{{ .Title }}</strong>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{{ if .Children }}
|
|
||||||
<ul style="list-style: none;">
|
|
||||||
{{ range .Children }}
|
|
||||||
<li class="nav-item">
|
|
||||||
<a href="{{ .URL }}" class="nav-link">
|
|
||||||
{{ .Title }}
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{{ end }}
|
|
||||||
</ul>
|
|
||||||
{{ end }}
|
|
||||||
{{ end }}
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<container class="col mt-2" style="padding-left: 20px; padding-right: 20px;">
|
|
||||||
<div>
|
|
||||||
<h1>{{ .Title }}</h1>
|
|
||||||
<p><em>
|
|
||||||
{{ $date := .Date.UTC.Format "Jan 2, 2006" }}
|
|
||||||
{{ $lastmod := .Lastmod.UTC.Format "Jan 2, 2006" }}
|
|
||||||
{{ if and (ne $lastmod $date) (gt .Lastmod .Date) }}
|
|
||||||
Last updated {{ $lastmod }}<br>
|
|
||||||
{{ end }}
|
|
||||||
|
|
||||||
{{ if .Description }}
|
|
||||||
{{ .Description }}<br>
|
|
||||||
{{ end}}
|
|
||||||
</em></p>
|
|
||||||
{{.Content}}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="footer mt-auto">
|
|
||||||
<p class="card-small text-muted">
|
|
||||||
Want to help improve this page? <a href="https://github.com/Rosettea/Hilbish/issues/new/choose">Create an issue.</a>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</container>
|
|
||||||
</div>
|
|
||||||
{{ end }}
|
|
||||||
|
|
@ -1,21 +0,0 @@
|
|||||||
{{ define "main" }}
|
|
||||||
<main class="mt-4 mb-4">
|
|
||||||
<div class="row row-cols-1 row-cols-md-1 g-4">
|
|
||||||
{{ range where .Site.RegularPages "Section" "in" "blog" }}
|
|
||||||
<div class="col d-flex justify-content-center">
|
|
||||||
<div class="card" style="width: 56rem;">
|
|
||||||
<div class="card-body">
|
|
||||||
<a href="{{ .Permalink }}"><h5 class="card-title">{{ .Title }}</h5></a>
|
|
||||||
<h6 class='card-subtitle text-muted mb-2'>
|
|
||||||
{{- if isset .Params "date" -}}
|
|
||||||
<time>{{ .Date.Format "January 2, 2006" }}</time>
|
|
||||||
{{- end -}}
|
|
||||||
</h6>
|
|
||||||
<p class="card-text">{{if .Description}}{{ .Description }}{{ else }}{{ .Summary }}{{ end }}</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{- end }}
|
|
||||||
</div>
|
|
||||||
</main>
|
|
||||||
{{ end }}
|
|
@ -1,7 +0,0 @@
|
|||||||
{{ define "main" }}
|
|
||||||
<main>
|
|
||||||
<div class="container mt-2">
|
|
||||||
{{.Content}}
|
|
||||||
</div>
|
|
||||||
</main>
|
|
||||||
{{ end }}
|
|
@ -1,17 +0,0 @@
|
|||||||
{{ define "main" }}
|
|
||||||
<main>
|
|
||||||
<div class="container mt-2">
|
|
||||||
<h1>{{ .Title }}</h1>
|
|
||||||
<img src='{{ .Site.Author.sammyette.picture }}' width=48 style='border-radius: 100%'>
|
|
||||||
<em class='text-muted'>
|
|
||||||
by <strong>{{ .Site.Author.sammyette.name }}</strong>
|
|
||||||
{{- if isset .Params "date" -}}
|
|
||||||
<time> // {{ .Date.Format "January 2, 2006" }}</time>
|
|
||||||
{{- end -}}
|
|
||||||
</em>
|
|
||||||
<div class='my-4'>
|
|
||||||
{{.Content}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</main>
|
|
||||||
{{ end }}
|
|
@ -1,8 +0,0 @@
|
|||||||
{{ define "main" }}
|
|
||||||
<div>
|
|
||||||
<main style="padding-left: 20px; padding-right: 20px; padding-top: 15px; max-width: 84em; margin: auto;">
|
|
||||||
{{.Content}}
|
|
||||||
</main>
|
|
||||||
</div>
|
|
||||||
{{ end }}
|
|
||||||
|
|
@ -1,31 +0,0 @@
|
|||||||
<footer class="footer mt-auto mt-auto py-3 bg-light row border-top">
|
|
||||||
<div class="col mb-3">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col mb-3">
|
|
||||||
<a href="/Hilbish" class="d-flex align-items-center mb-3 link-dark text-decoration-none">
|
|
||||||
<img src="/Hilbish/hilbish-logo-and-text.png" alt="" height="48" class="d-inline-block align-text-top" style="margin-left: -20px">
|
|
||||||
</a>
|
|
||||||
<ul class="nav flex-column">
|
|
||||||
<li class="nav-item mb-2"><a href="/Hilbish" class="nav-link p-0 text-muted">Home</a></li>
|
|
||||||
<li class="nav-item mb-2"><a href="/Hilbish/docs/faq" class="nav-link p-0 text-muted">FAQ</a></li>
|
|
||||||
<li class="nav-item mb-2"><a href="https://github.com/Rosettea/Hilbish" class="nav-link p-0 text-muted">Source</a></li>
|
|
||||||
<li class="nav-item mb-2"><a href="https://github.com/Rosettea/Hilbish/releases" class="nav-link p-0 text-muted">Releases</a></li>
|
|
||||||
<li class="nav-item mb-2"><a href="/Hilbish/docs" class="nav-link p-0 text-muted">Documentation</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col mb-3"></div>
|
|
||||||
|
|
||||||
<div class="col mb-3"></div>
|
|
||||||
<div class="col mb-3"></div>
|
|
||||||
<div class="col mb-3">
|
|
||||||
<p class="text-muted mt-4">
|
|
||||||
Rosettea © 2022-2023
|
|
||||||
<br>
|
|
||||||
Made with <i class="fa-solid fa-heart" style="color: #f6345b;"></i>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col mb-3"></div>
|
|
||||||
</footer>
|
|
@ -1,78 +0,0 @@
|
|||||||
<head>
|
|
||||||
{{ $title := print .Title " — " .Site.Title }}
|
|
||||||
{{ if .IsHome }}{{ $title = .Site.Title }}{{ end }}
|
|
||||||
<title>{{ $title }}</title>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no"/>
|
|
||||||
|
|
||||||
<meta name="theme-color" content="#ff89dd">
|
|
||||||
<meta content="/Hilbish/hilbish-flower.png" property="og:image" />
|
|
||||||
|
|
||||||
<meta property="og:site_name" content="Hilbish" />
|
|
||||||
<meta content="{{ $title }}" property="og:title" />
|
|
||||||
<meta content="{{if .Description}}{{ .Description }}{{ else }}{{ .Summary }}{{ end }}" property="og:description" />
|
|
||||||
<meta content="{{if .Description}}{{ .Description }}{{ else }}{{ .Summary }}{{ end }}" name="description" />
|
|
||||||
|
|
||||||
<meta name="revisit-after" content="2 days">
|
|
||||||
<meta name="keywords" content="Lua, Hilbish, Linux, Shell">
|
|
||||||
|
|
||||||
<meta property="og:locale" content="en_GB" />
|
|
||||||
<link rel="canonical" href="https://rosettea.github.io/Hilbish/" />
|
|
||||||
<meta property="og:url" content="https://rosettea.github.io/Hilbish/" />
|
|
||||||
|
|
||||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-0evHe/X+R7YkIZDRvuzKMRqM+OrBnVFBL6DOitfPri4tjfHxaWutUpFmBp4vmVor" crossorigin="anonymous">
|
|
||||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/js/bootstrap.bundle.min.js" integrity="sha384-pprn3073KE6tl6bjs2QrFaJGz5/SUsLqktiwsUTF55Jfv3qYSDhgCecCxMW52nD2" crossorigin="anonymous"></script>
|
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css" integrity="sha512-KfkfwYDsLkIlwQp6LFnl8zNdLGxu9YAA1QvwINks4PhcElQSvqcyVLLD9aMhXd13uQjoXtEKNosOWaZqXgel0g==" crossorigin="anonymous" referrerpolicy="no-referrer" />
|
|
||||||
{{ $syntax := resources.Get "css/syntax.css" | resources.Minify | resources.Fingerprint }}
|
|
||||||
<link rel="stylesheet" href="{{ $syntax.RelPermalink }}" integrity="{{ $syntax.Data.Integrity }}">
|
|
||||||
|
|
||||||
</link>
|
|
||||||
<style>
|
|
||||||
.heading > .heading-link {
|
|
||||||
opacity: 0
|
|
||||||
}
|
|
||||||
|
|
||||||
.heading:hover > .heading-link {
|
|
||||||
visibility: visible;
|
|
||||||
opacity: 1;
|
|
||||||
transition: all .1s ease-in;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes highlight {
|
|
||||||
0% {
|
|
||||||
background: none
|
|
||||||
}
|
|
||||||
50% {
|
|
||||||
background: #fff2cf;
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
background: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
div:target {
|
|
||||||
animation: highlight 1.2s;
|
|
||||||
animation-timing-function: cubic-bezier(1,-0.02,.45,.89);
|
|
||||||
}
|
|
||||||
|
|
||||||
table {
|
|
||||||
border-width: 1px;
|
|
||||||
border-style: solid;
|
|
||||||
border-color: #565c64;;
|
|
||||||
border-collapse: collapse;
|
|
||||||
margin-bottom: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
table td {
|
|
||||||
padding: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
table tr {
|
|
||||||
border-width: 1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
thead {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
@ -1,24 +0,0 @@
|
|||||||
<header>
|
|
||||||
<nav class="navbar navbar-expand-md sticky-top bg-light border-bottom">
|
|
||||||
<div class="container-fluid">
|
|
||||||
<a class="navbar-brand" href="/Hilbish">
|
|
||||||
<img src="/Hilbish/hilbish-logo-and-text.png" alt="" height="48">
|
|
||||||
</a>
|
|
||||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
|
|
||||||
<span class="navbar-toggler-icon"></span>
|
|
||||||
</button>
|
|
||||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
|
||||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
|
||||||
{{ $currentPage := . }}
|
|
||||||
{{ range .Site.Menus.nav }}
|
|
||||||
<li class="nav-item">
|
|
||||||
<a href="{{ .URL }}" class="nav-link {{ if $currentPage.IsMenuCurrent "nav" . }}active{{ end }}">
|
|
||||||
{{ .Name }}
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{{ end }}
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
</header>
|
|
@ -1,5 +0,0 @@
|
|||||||
<video src="{{ .Get "src" }}" style="height: auto; max-width: 100%;" controls>
|
|
||||||
There's a video missing here...
|
|
||||||
Well here is the URL: {{ .Get "src" }}
|
|
||||||
</video>
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
|||||||
<div class="alert alert-warning d-flex align-items-center" role="alert">
|
|
||||||
<svg class="bi flex-shrink-0 me-2" width="24" height="24" role="img" aria-label="Warning:"><use xlink:href="#exclamation-triangle-fill"/></svg>
|
|
||||||
<div>
|
|
||||||
{{ .Get 0 }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
@ -1,21 +0,0 @@
|
|||||||
# theme.toml template for a Hugo theme
|
|
||||||
# See https://github.com/gohugoio/hugoThemes#themetoml for an example
|
|
||||||
|
|
||||||
name = "Hsh"
|
|
||||||
license = "MIT"
|
|
||||||
licenselink = "https://github.com/yourname/yourtheme/blob/master/LICENSE"
|
|
||||||
description = ""
|
|
||||||
homepage = "http://example.com/"
|
|
||||||
tags = []
|
|
||||||
features = []
|
|
||||||
min_version = "0.41.0"
|
|
||||||
|
|
||||||
[author]
|
|
||||||
name = ""
|
|
||||||
homepage = ""
|
|
||||||
|
|
||||||
# If porting an existing theme
|
|
||||||
[original]
|
|
||||||
name = ""
|
|
||||||
homepage = ""
|
|
||||||
repo = ""
|
|
Loading…
x
Reference in New Issue
Block a user