From 1334ab5b8bfd24830f8566c55ae2f26c28c3e4b4 Mon Sep 17 00:00:00 2001 From: Pihkaal Date: Sat, 1 Jun 2024 16:13:56 +0200 Subject: [PATCH] feat(nvim-editor): line number --- src/components/Nvim/NvimEditor.tsx | 35 ++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/src/components/Nvim/NvimEditor.tsx b/src/components/Nvim/NvimEditor.tsx index 79be949..592780e 100644 --- a/src/components/Nvim/NvimEditor.tsx +++ b/src/components/Nvim/NvimEditor.tsx @@ -1,12 +1,16 @@ import axios from "axios"; -import { useEffect, useState } from "react"; +import { useEffect, useRef, useState } from "react"; +import { CHAR_WIDTH } from "../Kitty"; export const NvimEditor = (props: { source: string | undefined }) => { const [data, setData] = useState(); const [loading, setLoading] = useState(false); + const textRef = useRef(null); + useEffect(() => { if (!props.source) return; + setLoading(true); axios.get(props.source).then(({ data }) => { setData(data); @@ -14,5 +18,32 @@ export const NvimEditor = (props: { source: string | undefined }) => { }); }, [props.source]); - return

{loading ? "Loading..." : data}

; + const rows = data?.split("\n") ?? []; + for (let i = rows.length - 1; i >= 0; i--) { + if (rows[i].trim().length === 0) { + delete rows[i]; + } else { + break; + } + } + + return loading ? ( +

Loading...

+ ) : ( + + + {rows.map((row, i) => ( + + + + + ))} + +
+ {i + 1} + {row}
+ ); };