mirror of https://github.com/helix-editor/helix
add rope docs
parent
bb1d8af7fe
commit
1301c93672
|
@ -45,6 +45,7 @@ use std::{
|
||||||
borrow::Cow,
|
borrow::Cow,
|
||||||
collections::HashMap,
|
collections::HashMap,
|
||||||
error::Error,
|
error::Error,
|
||||||
|
io::Write,
|
||||||
path::PathBuf,
|
path::PathBuf,
|
||||||
sync::{atomic::AtomicBool, Mutex, MutexGuard, RwLock, RwLockReadGuard},
|
sync::{atomic::AtomicBool, Mutex, MutexGuard, RwLock, RwLockReadGuard},
|
||||||
time::{Duration, SystemTime},
|
time::{Duration, SystemTime},
|
||||||
|
@ -1974,6 +1975,15 @@ impl super::PluginSystem for SteelScriptingEngine {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn generate_sources(&self) {
|
fn generate_sources(&self) {
|
||||||
|
fn format_markdown_doc<W: Write>(writer: &mut W, doc: &str) {
|
||||||
|
for line in doc.lines() {
|
||||||
|
if line.starts_with("# ") {
|
||||||
|
write!(writer, "###").unwrap();
|
||||||
|
}
|
||||||
|
writeln!(writer, "{}", line).unwrap();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Generate sources directly with a fresh engine
|
// Generate sources directly with a fresh engine
|
||||||
let mut engine = Engine::new();
|
let mut engine = Engine::new();
|
||||||
configure_builtin_sources(&mut engine, true);
|
configure_builtin_sources(&mut engine, true);
|
||||||
|
@ -1984,6 +1994,48 @@ impl super::PluginSystem for SteelScriptingEngine {
|
||||||
|
|
||||||
// Generate markdown docs
|
// Generate markdown docs
|
||||||
steel_doc::walk_dir(&mut writer, target, &mut engine).unwrap();
|
steel_doc::walk_dir(&mut writer, target, &mut engine).unwrap();
|
||||||
|
|
||||||
|
// Also generate docs for the built in modules
|
||||||
|
let module = engine.builtin_modules().get("helix/core/text").unwrap();
|
||||||
|
|
||||||
|
writeln!(&mut writer, "# helix/core/text").unwrap();
|
||||||
|
writeln!(
|
||||||
|
&mut writer,
|
||||||
|
"To use, you can include with `(require-builtin helix/core/text)`"
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
let mut found_definitions = std::collections::HashSet::new();
|
||||||
|
|
||||||
|
let mut exported_functions: Vec<_> = module
|
||||||
|
.names()
|
||||||
|
.into_iter()
|
||||||
|
.filter(|name| !name.starts_with("#%"))
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
exported_functions.sort();
|
||||||
|
|
||||||
|
for name in &exported_functions {
|
||||||
|
if let Some(value) = module.documentation().get(name) {
|
||||||
|
found_definitions.insert(name.to_string());
|
||||||
|
|
||||||
|
match value {
|
||||||
|
steel::steel_vm::builtin::Documentation::Markdown(m) => {
|
||||||
|
let escaped = name.replace("*", "\\*");
|
||||||
|
writeln!(&mut writer, "### **{}**", escaped).unwrap();
|
||||||
|
|
||||||
|
format_markdown_doc(&mut writer, &m.0);
|
||||||
|
}
|
||||||
|
_ => {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for name in exported_functions {
|
||||||
|
if !found_definitions.contains(&name) {
|
||||||
|
writeln!(&mut writer, "### **{}**", name).unwrap();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
107
steel-docs.md
107
steel-docs.md
|
@ -2732,3 +2732,110 @@ Check whether the given event is the key: keypad-begin
|
||||||
(key-event-keypad-begin? event)
|
(key-event-keypad-begin? event)
|
||||||
```
|
```
|
||||||
event: Event?
|
event: Event?
|
||||||
|
# helix/core/text
|
||||||
|
### **Rope?**
|
||||||
|
Check if the given value is a rope
|
||||||
|
### **rope->byte-slice**
|
||||||
|
Take a slice of this rope using byte offsets
|
||||||
|
|
||||||
|
```scheme
|
||||||
|
(rope->byte-slice rope start end) -> Rope?
|
||||||
|
```
|
||||||
|
|
||||||
|
* rope: Rope?
|
||||||
|
* start: (and positive? int?)
|
||||||
|
* end: (and positive? int?)
|
||||||
|
### **rope->line**
|
||||||
|
Get the line at the given line index. Returns a rope.
|
||||||
|
|
||||||
|
```scheme
|
||||||
|
(rope->line rope index) -> Rope?
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
* rope : Rope?
|
||||||
|
* index : (and positive? int?)
|
||||||
|
### **rope->slice**
|
||||||
|
Take a slice from using character indices from the rope.
|
||||||
|
Returns a new rope value.
|
||||||
|
|
||||||
|
```scheme
|
||||||
|
(rope->slice rope start end) -> Rope?
|
||||||
|
```
|
||||||
|
|
||||||
|
* rope : Rope?
|
||||||
|
* start: (and positive? int?)
|
||||||
|
* end: (and positive? int?)
|
||||||
|
### **rope->string**
|
||||||
|
Convert the given rope to a string
|
||||||
|
### **rope-byte->line**
|
||||||
|
Convert the given byte offset to a line offset for a given rope
|
||||||
|
|
||||||
|
```scheme
|
||||||
|
(rope-byte->line rope byte-index) -> int?
|
||||||
|
```
|
||||||
|
|
||||||
|
* rope : Rope?
|
||||||
|
* byte-index : int?
|
||||||
|
|
||||||
|
|
||||||
|
### **rope-char->byte**
|
||||||
|
Convert the byte offset into a character offset for a given rope
|
||||||
|
### **rope-char->line**
|
||||||
|
Convert the given character offset to a line offset for a given rope
|
||||||
|
|
||||||
|
```scheme
|
||||||
|
(rope-char->line rope char-index) -> int?
|
||||||
|
```
|
||||||
|
|
||||||
|
* rope : Rope?
|
||||||
|
* char-index : int?
|
||||||
|
|
||||||
|
|
||||||
|
### **rope-char-ref**
|
||||||
|
Get the character at the given index
|
||||||
|
### **rope-ends-with?**
|
||||||
|
Check if the rope ends with a given pattern
|
||||||
|
### **rope-insert-char**
|
||||||
|
Insert a character at the given index
|
||||||
|
### **rope-insert-string**
|
||||||
|
Insert a string at the given index into the rope
|
||||||
|
### **rope-len-bytes**
|
||||||
|
Get the length of the rope in bytes
|
||||||
|
### **rope-len-chars**
|
||||||
|
Get the length of the rope in characters
|
||||||
|
### **rope-len-lines**
|
||||||
|
Get the number of lines in the rope
|
||||||
|
### **rope-line->byte**
|
||||||
|
Convert the given line index to a byte offset for a given rope
|
||||||
|
|
||||||
|
```scheme
|
||||||
|
(rope-line->byte rope line-offset) -> int?
|
||||||
|
```
|
||||||
|
|
||||||
|
* rope : Rope?
|
||||||
|
* line-offset: int?
|
||||||
|
|
||||||
|
### **rope-line->char**
|
||||||
|
Convert the given line index to a character offset for a given rope
|
||||||
|
|
||||||
|
```scheme
|
||||||
|
(rope-line->char rope line-offset) -> int?
|
||||||
|
```
|
||||||
|
|
||||||
|
* rope : Rope?
|
||||||
|
* line-offset: int?
|
||||||
|
|
||||||
|
### **rope-starts-with?**
|
||||||
|
Check if the rope starts with a given pattern
|
||||||
|
### **rope-trim-start**
|
||||||
|
Remove the leading whitespace from the given rope
|
||||||
|
### **string->rope**
|
||||||
|
Converts a string into a rope.
|
||||||
|
|
||||||
|
```scheme
|
||||||
|
(string->rope value) -> Rope?
|
||||||
|
```
|
||||||
|
|
||||||
|
* value : string?
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue