2
2
mirror of https://github.com/Hilbis/Hilbish synced 2025-05-06 04:13:24 +00:00

71 lines
6.9 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html class="bg-stone-50 dark:bg-neutral-950 text-black dark:text-white"><head><meta content="width=device-width, initial-scale=1.0" name="viewport"><link href="/tailwind.css" rel="stylesheet"><title>Hilbish</title><meta content="#ff89dd" name="theme-color"><meta content="./hilbish-flower.png" property="og:image"><meta content="Hilbish" property="og:title"><meta content="Hilbish" property="og:site_name"><meta content="website" property="og:type"><meta content="Something Unique. Hilbish is the new interactive shell for Lua fans. Extensible, scriptable, configurable: All in Lua." property="og:description"><meta content="Something Unique. Hilbish is the new interactive shell for Lua fans. Extensible, scriptable, configurable: All in Lua." name="description"><meta content="Lua,Shell,Hilbish,Linux,zsh,bash" name="keywords"><meta content="https://rosettea.github.io/Hilbish/versions/new-website" property="og:url"></head><body><nav class="flex sticky top-0 w-full z-50 border-b border-b-zinc-300 backdrop-blur-md h-12"><div class="flex my-auto px-2"><div><a class="flex items-center gap-1" href="/"><img class="h-6" src="/hilbish-flower.png"><span class="self-center text-2xl">Hilbish</span></a></div></div></nav><div class="flex flex-col"><div class="block sm:hidden h-10 sticky top-12 flex py-2 px-4 border-b border-b-zinc-300 w-full gap-2 backdrop-blur-sm bg-zinc-300/50 z-50"><label class="cursor-pointer" for="sidebar-toggle"><tag><svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" class="fill-black"><path d="M120-240v-80h240v80H120Zm0-200v-80h480v80H120Zm0-200v-80h720v80H120Z"/></svg></tag></label><span>Module hilbish.module</span></div><div class="grid sm:flex"><input class="peer hidden" id="sidebar-toggle" type="checkbox"><div class="border-r border-r-zinc-300 col-start-1 row-start-1 sticky top-22 sm:top-12 h-full sm:h-svh bg-neutral-200 basis-3/5 transition-transform duration-300 -translate-x-full sm:translate-x-0 peer-checked:translate-x-0 z-30"><div class="p-4 -mb-4 overflow-y-auto h-full"><h2 class="text-xl font-semibold mb-4">Sidebar</h2><ul><li class="mb-2">Lunacolors</li><li class="mb-2">Introduction</li><li class="mb-2">Completions</li><li class="mb-2">Frequently Asked Questions</li><li class="mb-2">Getting Started</li><li class="mb-2">Options</li><li class="mb-2">Features</li><li class="mb-2">Runner Mode</li><li class="mb-2">Notification</li><li class="mb-2">Signals</li><li class="mb-2">Signal</li><li class="mb-2">Command</li><li class="mb-2">Hilbish</li><li class="mb-2">Vim Mode</li><li class="mb-2">Actions</li><li class="mb-2">Module bait</li><li class="mb-2">Module terminal</li><li class="mb-2">API</li><li class="mb-2">Module fs</li><li class="mb-2">Module commander</li><li class="mb-2">Module snail</li><li class="mb-2">Module hilbish.aliases</li><li class="mb-2">Module hilbish.abbr</li><li class="mb-2">Module hilbish</li><li class="mb-2">Module hilbish.userDir</li><li class="mb-2">Module hilbish.messages</li><li class="mb-2">Module hilbish.runner</li><li class="mb-2">Module hilbish.history</li><li class="mb-2">Module hilbish.jobs</li><li class="mb-2">Module hilbish.editor</li><li class="mb-2">Module hilbish.module</li><li class="mb-2">Module hilbish.os</li><li class="mb-2">Module hilbish.completion</li><li class="mb-2">Module hilbish.timers</li><li class="mb-2">Module dirs</li><li class="mb-2">Nature</li><li class="mb-2">Module doc</li></ul></div></div><main class="col-start-1 row-start-1 transition-all duration-300 peer-checked:filter peer-checked:blur-sm peer-checked:bg-black/30 px-4 pt-2"><h1>Module hilbish.module</h1><Tag xmlns="namespace"><h2>Introduction</h2>
<p>The hilbish.module interface provides a function to load
Hilbish plugins/modules. Hilbish modules are Go-written
plugins (see <a href="https://pkg.go.dev/plugin" rel="noopener noreferrer">https://pkg.go.dev/plugin</a>) that are used to add functionality
to Hilbish that cannot be written in Lua for any reason.</p>
<p>Note that you dont ever need to use the load function that is here as
modules can be loaded with a <code>require</code> call like Lua C modules, and the
search paths can be changed with the <code>paths</code> property here.</p>
<p>To make a valid native module, the Go plugin has to export a Loader function
with a signature like so: <code>func(*rt.Runtime) rt.Value</code>.</p>
<p><code>rt</code> in this case refers to the Runtime type at
<a href="https://pkg.go.dev/github.com/arnodel/golua@master/runtime#Runtime" rel="noopener noreferrer">https://pkg.go.dev/github.com/arnodel/golua@master/runtime#Runtime</a></p>
<p>Hilbish uses this package as its Lua runtime. You will need to read
it to use it for a native plugin.</p>
<p>Here is some code for an example plugin:</p>
<pre><code><span><span>package</span> <span>main</span>
</span><span>
</span><span><span>import</span> <span>(</span>
</span><span> <span>rt</span> <span>"github.com/arnodel/golua/runtime"</span>
</span><span><span>)</span>
</span><span>
</span><span><span>func</span> <span>Loader</span><span>(</span><span>rtm</span> <span>*</span><span>rt</span><span>.</span><span>Runtime</span><span>)</span> <span>rt</span><span>.</span><span>Value</span> <span>&lbrace;</span>
</span><span> <span>return</span> <span>rt</span><span>.</span><span>StringValue</span><span>(</span><span>"hello world!"</span><span>)</span>
</span><span><span>&rbrace;</span>
</span></code></pre>
<p>This can be compiled with <code>go build -buildmode=plugin plugin.go</code>.
If you attempt to require and print the result (<code>print(require 'plugin')</code>), it will show “hello world!”</p>
<h2>Functions</h2>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="#module.load" rel="noopener noreferrer">load(path)</a></td>
<td>Loads a module at the designated <code>path</code>.</td>
</tr>
</tbody>
</table>
<h2>Static module fields</h2>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td>paths</td>
<td>A list of paths to search when loading native modules. This is in the style of Lua search paths and will be used when requiring native modules. Example: <code>?.so;?/?.so</code></td>
</tr>
</tbody>
</table>
<hr>
<div>
<h4>
hilbish.module.load(path)
<a href="#module.load" rel="noopener noreferrer">
<i></i>
</a>
</h4>
<p>Loads a module at the designated <code>path</code>.<br>
It will throw if any error occurs.</p>
<h4>Parameters</h4>
<p><code>string</code> <strong><code>path</code></strong></p>
</div></Tag></main></div></div><footer class="py-4 px-6 flex flex-row justify-around border-t border-t-zinc-300"><div class="flex flex-col"><a class="flex items-center gap-1" href="/"><img class="h-24" src="/hilbish-flower.png"><span class="self-center text-6xl">Hilbish</span></a><span class="text-xl">The Moon-powered shell!</span><span class="text-light text-neutral-500">MIT License, copyright sammyette 2025</span></div><div class="flex flex-col"><a href="https://github.com/Rosettea/Hilbish"><span class="text-pink-300 text-light">GitHub</span></a></div></footer></body></html>