From cdd0f19a0a4913a7bddecbf8508a9cc6b9a22920 Mon Sep 17 00:00:00 2001 From: Mike Lowis Date: Thu, 11 May 2023 16:34:50 -0400 Subject: [PATCH] remove unused files --- bin/editor/abspath.c | 13 -- bin/editor/stdc.h | 171 ------------------ bin/editor/tide.1.adoc | 397 ----------------------------------------- bin/editor/vec.h | 126 ------------- 4 files changed, 707 deletions(-) delete mode 100644 bin/editor/abspath.c delete mode 100644 bin/editor/stdc.h delete mode 100644 bin/editor/tide.1.adoc delete mode 100644 bin/editor/vec.h diff --git a/bin/editor/abspath.c b/bin/editor/abspath.c deleted file mode 100644 index 30e66e4..0000000 --- a/bin/editor/abspath.c +++ /dev/null @@ -1,13 +0,0 @@ -#define _XOPEN_SOURCE 700 -#include -#include - -char* abspath(char* path) -{ - char* ap = realpath(path, NULL); - if (!ap) - { - ap = strdup(path); - } - return ap; -} diff --git a/bin/editor/stdc.h b/bin/editor/stdc.h deleted file mode 100644 index 68e0e36..0000000 --- a/bin/editor/stdc.h +++ /dev/null @@ -1,171 +0,0 @@ -/** - @file - @brief Collection of useful C types and functions. - @author Michael D. Lowis - @license BSD 2-clause License -*/ -#define _POSIX_C_SOURCE 200809L -#define _XOPEN_SOURCE 700 -#define AUTOLIB(n) \ - int __autolib_##n __attribute__ ((weak)); -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-function" - -static char* strmcat(char* first, ...) { - va_list args; - /* calculate the length of the final string */ - size_t len = strlen(first); - va_start(args, first); - for (char* s = NULL; (s = va_arg(args, char*));) - len += strlen(s); - va_end(args); - /* allocate the final string and copy the args into it */ - char *str = malloc(len+1), *curr = str; - while (first && *first) *(curr++) = *(first++); - va_start(args, first); - for (char* s = NULL; (s = va_arg(args, char*));) - while (s && *s) *(curr++) = *(s++); - va_end(args); - /* null terminate and return */ - *curr = '\0'; - return str; -} - -/* Option Parsing - * - * This following macros implement a simple POSIX-style option parsing strategy. - * They are heavily influenced and inspired by the arg.h file from suckless.org - * (http://git.suckless.org/libsl/tree/arg.h). That file is in turn inspired by - * the corresponding macros defined in plan9. - * - * The interface assumes that the main function will have the following - * prototype: - * - * int main(int argc, char** argv); - * - * An example usage of the interface would look something like the follwoing: - * - * char* ARGV0; - * int main(int argc, char** argv) { - * OPTBEGIN { - * case 'a': printf("Simple option\n"); break; - * case 'b': printf("Option with arg: %s\n", OPTARG()); break; - * default: printf("Unknown option!\n"); - * } OPTEND; - * return 0; - * } - */ - -/* This variable contains the value of argv[0] so that it can be referenced - * again once the option parsing is done. This variable must be defined by the - * program. - * - * NOTE: Ensure that you define this variable with external linkage (i.e. not - * static) */ -extern char* ARGV0; - -/* This is a helper function used by the following macros to parse the next - * option from the command line. */ -static inline char* _getopt_(int* p_argc, char*** p_argv) { - if (!(*p_argv)[0][1] && !(*p_argv)[1]) { - return (char*)0; - } else if ((*p_argv)[0][1]) { - return &(*p_argv)[0][1]; - } else { - *p_argv = *p_argv + 1; - *p_argc = *p_argc - 1; - return (*p_argv)[0]; - } -} - -/* This macro is almost identical to the ARGBEGIN macro from suckless.org. If - * it ain't broke, don't fix it. */ -#define OPTBEGIN \ - for ( \ - ARGV0 = *argv, argc--, argv++; \ - argv[0] && argv[0][1] && argv[0][0] == '-'; \ - argc--, argv++ \ - ) { \ - int brk_; char argc_ , **argv_, *optarg_; \ - if (argv[0][1] == '-' && !argv[0][2]) { \ - (void)optarg_; argv++, argc--; break; \ - } \ - for (brk_=0, argv[0]++, argv_=argv; argv[0][0] && !brk_; argv[0]++) { \ - if (argv_ != argv) break; \ - argc_ = argv[0][0]; \ - switch (argc_) - -/* Terminate the option parsing. */ -#define OPTEND }} - -/* Get the current option character */ -#define OPTC() (argc_) - -/* Get an argument from the command line and return it as a string. If no - * argument is available, this macro returns NULL */ -#define OPTARG() \ - (optarg_ = _getopt_(&argc,&argv), brk_ = (optarg_!=0), optarg_) - -/* Get an argument from the command line and return it as a string. If no - * argument is available, this macro executes the provided code. If that code - * returns, then abort is called. */ -#define EOPTARG(code) \ - (optarg_ = _getopt_(&argc,&argv), \ - (!optarg_ ? ((code), abort(), (char*)0) : (brk_ = 1, optarg_))) - -/* Helper macro to recognize number options */ -#define OPTNUM \ - case '0': \ - case '1': \ - case '2': \ - case '3': \ - case '4': \ - case '5': \ - case '6': \ - case '7': \ - case '8': \ - case '9' - -/* Helper macro to recognize "long" options ala GNU style. */ -#define OPTLONG \ - case '-' - -/* Miscellaneous - *****************************************************************************/ -#ifndef nelem - #define nelem(x) \ - (sizeof(x)/sizeof((x)[0])) -#endif - -#ifndef container_of - #define container_of(obj, type, member) \ - ((type*)((uintptr_t)obj - offsetof(type, member))) -#endif - -#ifndef min - #define min(x,y) \ - ((x) < (y) ? (x) : (y)) -#endif - -#ifndef max - #define max(x,y) \ - ((x) > (y) ? (x) : (y)) -#endif - -#pragma GCC diagnostic pop diff --git a/bin/editor/tide.1.adoc b/bin/editor/tide.1.adoc deleted file mode 100644 index c070045..0000000 --- a/bin/editor/tide.1.adoc +++ /dev/null @@ -1,397 +0,0 @@ -= tide(1) -:doctype: manpage - - -== NAME - -tide - a text editor inspired by acme(1) from Plan 9 and Inferno - -== SYNOPSIS - -*tide* [FILE...] - -== DESCRIPTION - -*tide* is a text editor inspired by the Acme editor from the Plan 9 and Inferno -operating systems. Unlike Acme, *tide* is a single window, single file editor. -Instead of baking a window manager into the editor, this job is relegated to an -X11 window manager. It is recommended that *tide* be used with a tiling window -manager such as dwm(1) or spectrwm(1). These window managers will make dealing -with multiple windows much easier and more efficient. - -=== Windows - -*tide* windows are divided into three basic regions: an expanding tags region, a -main content region and an adjacent scroll region. The tags region acts as -scratch buffer for commands that can be executed to affect the file or the state -of the editor. As the content of this region grows it will expand up to a -quarter of the size of the window, shrinking the main content region in kind. -The main content region displays a view of the file currently being edited. To -the left of the content region is a narrow vertical region matching the height -of the content region. This region gives the user visibility into how much of -the document is currently visible as well as their position in the document. - -=== Typing and Editing - -Typed characters in *tide* are delivered to the currently active region. The -active region is the one currently under the mouse cursor. That is to say, the -focus follows the mouse much as it does in acme(1) but there is a keyboard -shortcut that allows users to toggle focus between the content region and the -tag region by warping the mouse cursor from one region to the next. - -The mechanics of editing text in the tag and content region is identical with -the exception of searching and saving. Edited content in the tag region is not -saved to disk while the content region is. This region is considered a scratch -buffer for commands, notes, and other bits of text that are placed there -temporarily. The content region displays the current view of the file being -edited and can be flushed to disk when requested. - -Searching with a term selected in the tags region will search for the term in -the content region rather than the tags region. In this way a user can edit the -search term incrementally and perform repeated searches through the content -region. Searching for a term in the content region will search for the term in -the content region however. - -=== Text Selection - -*tide* uses a series of rules to determine how much text to select when the user -executes a context sensitive selection, a search, or a context sensitive -execution. The following rules are applied in order until a match is found. - -1. *Cursor over '(' or ')':* - Highlight text between the parentheses including nested parentheses. - -2. *Cursor over '[' or ']':* - Highlight text between the brackets including nested brackets. - -3. *Cursor over '{' or '}':* - Highlight text between the braces including nested braces. - -4. *Cursor at beginning or end of line:* - Highlight the entire line (including the newline) - -5. *Cursor over alphanumeric character or underscore:* - Highlight the word under the cursor consisting of only alphanumeric and - underscore characters. - -If none of the above rules match, *tide* will simply highlight the block of -non-whitespace characters under the cursor. - -=== Mouse Handling - -*Left Button*:: - The left mouse button is used for selecting text or moving the cursor. A - single-click will move the mose to the clicked location. A double-click will - will select the object under the clicked location based on context as - described in <>. A triple-click will select the largest - contiguous chunk of non-whitespace characters at the clicked location. - -*Middle Button*:: - The middle mouse button is used for executing text at the clicked location. - The command to be executed is determined by the context rules defined in the - <> section. The cursor position is not changed on a - middle click. - -*Right Button*:: - The right button is used to search for the next occurrence of the clicked - text. The search term is determined by the context rules defined in the - <> section. The search direction follows the direction of - the previous search operation. The *Shift* key can be held in combination - with a click of the right mosue button in order to reverse the search - direction. - -=== Command Execution - -*tide* allows for the execution of any arbitrary text as a command. The input -and output to/from each command executed can be controlled by prepending one of -a set of sigils defined below. These sigils instruct *tide* from where the -command will receive its input and where it will place its output (both standard -and errors). - -*! - Run command detached from editor*:: - The command will be executed in the background and all of its input and - output file descriptors will be closed. - -*< - Input from command*: - The command will be executed in the background and its standard output will - be placed in the content region. Its error output will be placed in the tags - region. - -*> - Output to command*:: - The command will be executed in the background. The currently selected text - will be written to the command's standard input. The command's standard - output and standard error content will be written to the tags region. - -*| - Pipe through command*:: - The command will be executed in the background. The currently selected text - will be written to the command's standard input. The command's standard - output will replace the currently selected text. Any error output will be - placed in the tags region. - -*: - Pipe through sed(1)*:: - Identical to '|' except that the command is always sed(1). This is a - convenience shortcut to allow quick and easy access to sed for editing - blocks of text. - -*Commands with no sigil*:: - Commands with none of the aforementioned sigils will be executed in the - background and have their standard output placed in the content region and - their error output placed in the tags region. - -=== Keyboard Shortcuts - -*Unix Standard Shortcuts:* - -*Ctrl+u*:: - Delete from the cursor position to the beginning of the line. - -*Ctrl+k*:: - Delete from the cursor position to the end of the line. - -*Ctrl+w*:: - Delete the word to the left. - -*Ctrl+a*:: - Move cursor to the beginning of the line. - -*Ctrl+e*:: - Move cursor to the end of the line. - -*Cursor Movement and Selection:* - -The key combinations below are responsible for moving the cursor around the -document by character, by word, or by line. The *Shift* modifier key can be -applied to any of them to also extend the current selection to the new cursor -position. - -*Escape*:: - Highlight the last contiguous block of inserted text or clear the current - selection (deselect the currently selected text). - -*Left*:: - Move the cursor one character to the left. - -*Right*:: - Move the cursor one character to the right. - -*Up*:: - Move the cursor to the previous line. - -*Down*:: - Move the cursor to the next line. - -*Ctrl+Up*:: - Move the current line or selection up a line. - -*Ctrl+Down*:: - Move the current line or selection down a line. - -*Ctrl+Left*:: - Move the cursor to the beginning of the word to the left. - -*Ctrl+Right*:: - Move the cursor to the end of the word to the right. - -*Modern Text Editing Shortcuts:* - -*Ctrl+s*:: - Save the contents of the content region to disk. - -*Ctrl+z*:: - Undo the last change performed on the active region. - -*Ctrl+y*:: - Redo the previously undone change on the active region. - -*Ctrl+x*:: - Cut the selected text to the X11 CLIPBOARD selection. If no text is selected - then the current line is cut. - -*Ctrl+c*:: - Copy the selected text to the X11 CLIPBOARD selection. If no text is - selected then the current line is copied. - -*Ctrl+v*:: - Paste the contents of the X11 CLIPBOARD selection to the active region. - -*Ctrl+j*:: - Join the current line and the next line. - -*Ctrl+l*:: - Select the current line. - -*Ctrl+Shift+a*:: - Select all text in the buffer. - -*Delete*:: - Delete the character to the right. - -*Ctrl+Delete*:: - Delete the word to the right. - -*Backspace*:: - Delete the character to the left. - -*Ctrl+Backspace*:: - Delete the word to the left. - -*Ctrl+Enter*:: - Create a new line after the current line and place the cursor there. - -*Ctrl+Shift+Enter*:: - Create a new line before the current line and place the cursor there. - -*PageUp*:: - Scroll the active region up by one screenful of text. The cursor is not - affected by this operation. - -*PageDn*:: - Scroll the active region down by one screenful of text. The cursor is not - affected by this operation. - -*Search Shortcuts:* - -The shortcuts below allow the user to search for selected text or by context. -The direction of the search defaults to the forward direction with regard to the -position in the file. Each search follows the direction of the previous search -unless the *Shift* modifier is applied. The *Shift* modifier causes the current -search operation to be applied in the opposite direction of the previous. - -*Ctrl+f*:: - Search for the next occurrence of the selected text in the content region. - If no text is currently selected, the text under the cursor is selected - based on context as described in <>. - -*Ctrl+Alt+f*:: - Search for the next occurence previous search term in the content region. - -*Implementation-specific Shortcuts* - -*Ctrl+[*:: - Decrease the indent level of the selected text. - -*Ctrl+]*:: - Increase the indent level of the selected text. - -*Ctrl+h*:: - Highlight the item under cursor following the rules in <> - -*Ctrl+t*:: - Toggle focus between the tags region and the content region. - -*Ctrl+q*:: - Quit the editor. If the file is modified a warning will be printed in the - tags region and the editor will not quit. Executing the shortcut twice - within 250ms will ignore the warning and quit the editor without saving. - -*Ctrl+d*:: - Execute the selected text as described in <>. If no text is - selected, the text under cursor is selecte dbased on context as described in - <>. - -*Ctrl+o*:: - Launch pickfile(1) to choose a file from a recursive list of files in the - current directory and sub directories. This file will be opened in a new - instance of *tide*. - -*Ctrl+p*:: - Launch picktag(1) to select a tag from a ctags(1) generated index file. - *tide* will jump to the selected ctag definition in the current window if - the file is currently being edited. Otherwise, a new instance of *tide* will - be launched with the target file and the cursor set to the line containing - the definition. - -*Ctrl+g*:: - Lookup the selected symbol or symbol under the cursor in a ctags(1) - generated index file. Jump to the location of the definition if it exist in - the current file. Otherwise, a new instance of *tide* will be launched with - the target file and the cursor set to the line containing the definition. - -*Ctrl+n*:: - Open a new instance of *tide* with no filename. - -=== Builtin Tags - -*Cut*:: - Cut the selection to the X11 CLIPBOARD selection. - -*Copy*:: - Copy the selection to the X11 CLIPBOARD selection. - -*Eol*:: - Toggle the line-ending style for the buffers contents between LF and CRLF - -*Find [term]*:: - Find the next occurrence of the selected text. - -*GoTo [arg]*:: - Jump to a specific line number or symbol. - -*Indent*:: - Toggle the autoindent feature on or off. - -*Overwrite*:: - Save the file to disk even if the file has been modified externally. - -*Paste*:: - Paste the contents of the X11 CLIPBOARD selection into the buffer. - -*Quit*:: - Quit the editor. - -*Redo*:: - Redo the last undone change. - -*Reload*:: - Reload the buffer contents from the on-disk file. - -*Save*:: - Save the contents of the buffer to disk. - -*SaveAs [path]*:: - Save the contents of the buffer to disk. If a path argument is provided, the - buffer will be saved to the new path. - -*Tabs*:: - Toggle the expand tabs featuer on or off. - -*Undo*:: - Undo the previous edit. - -== OPTIONS - -*-I _OPT_*:: - Turn on/off auto indenting of new lines. - -*-W _OPT_*:: - Turn on/off trimming of trailing whitespace on save. - -*-E _OPT_*:: - Turn on/off expanding tabs to spaces. - -*-N _OPT_*:: - Turn on/off DOS line ending styles () - -*-T _STRING_*:: - Sets the text of the tags region. - -*-S _SHELL_*:: - Sets the shell to be used for all external command invocation. The shell - must use the -c flag to receive commands to execute - -*-c _CMD_*:: - Executes the given command in a new tide window. - -*-l _LINENUM_*:: - Jumps the view to LINENUM in the document. - -== ENVIRONMENT - -*SHELL*:: - The contents of this variable are used as the shell in which all non-builtin - commands are executed. If this variable is not defined, sh(1) is used as a - fallback shell. - -== SEE ALSO - -acme(1), edit(1), pick(1), pickfile(1), picktag(1) diff --git a/bin/editor/vec.h b/bin/editor/vec.h deleted file mode 100644 index 4cd8f03..0000000 --- a/bin/editor/vec.h +++ /dev/null @@ -1,126 +0,0 @@ -/** - @file - @brief Generic vector implementation. - @author Michael D. Lowis - @license BSD 2-clause License -*/ -#ifndef VEC_H -#define VEC_H - -#include -#include -#include -#include -#include - -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-function" - -typedef struct { - size_t elem_count; - size_t elem_size; - size_t elem_capacity; - uint8_t* elem_buffer; -} vec_t; - -typedef int (*vec_cmpfn_t)(const void*,const void*); - -#ifndef DEFAULT_VEC_CAPACITY -#define DEFAULT_VEC_CAPACITY (size_t)8 -#endif - -static void vec_init(vec_t* vec, size_t elem_size) { - vec->elem_size = elem_size; - vec->elem_count = 0; - vec->elem_capacity = DEFAULT_VEC_CAPACITY; - vec->elem_buffer = malloc(elem_size * vec->elem_capacity); -} - -static size_t vec_size(vec_t* vec) { - return vec->elem_count; -} - -static bool vec_empty(vec_t* vec) { - return (vec->elem_count == 0); -} - -static size_t vec_capacity(vec_t* vec) { - return vec->elem_capacity; -} - -static size_t vec_next_capacity(size_t req_size) { - size_t next_power = req_size; - size_t num_bits = sizeof(size_t) * 8; - size_t bit_n; - - /* Find the next highest power of 2 */ - next_power--; - for (bit_n = 1; bit_n < num_bits; bit_n = bit_n << 1) - next_power = next_power | (next_power >> bit_n); - next_power++; - - return next_power; -} - -static void vec_reserve(vec_t* vec, size_t size) { - vec->elem_buffer = realloc(vec->elem_buffer, size * vec->elem_size); - vec->elem_capacity = size; -} - -static void vec_resize(vec_t* vec, size_t count, void* fillval) { - if (count > vec->elem_count) { - vec_reserve(vec, vec_next_capacity(count+1)); - for (; vec->elem_count < count; vec->elem_count++) - memcpy(&(vec->elem_buffer[vec->elem_count * vec->elem_size]), fillval, vec->elem_size); - } else if (count < vec->elem_count) { - vec->elem_count = count; - } -} - -static void vec_shrink_to_fit(vec_t* vec) { - vec->elem_buffer = realloc(vec->elem_buffer, vec->elem_count * vec->elem_size); - vec->elem_capacity = vec->elem_count; -} - -static void* vec_at(vec_t* vec, size_t index) { - return &(vec->elem_buffer[index * vec->elem_size]); -} - -static void vec_set(vec_t* vec, size_t index, void* data) { - memcpy(&(vec->elem_buffer[index * vec->elem_size]), data, vec->elem_size); -} - -static bool vec_insert(vec_t* vec, size_t index, size_t num_elements, ...) { - (void)vec; - (void)index; - (void)num_elements; - return false; -} - -static bool vec_erase(vec_t* vec, size_t start_idx, size_t end_idx) { - (void)vec; - (void)start_idx; - (void)end_idx; - return false; -} - -static void vec_push_back(vec_t* vec, void* data) { - vec_resize(vec, vec->elem_count+1, data); -} - -static void vec_pop_back(vec_t* vec, void* outdata) { - vec->elem_count--; - memcpy(outdata, &(vec->elem_buffer[vec->elem_count * vec->elem_size]), vec->elem_size); -} - -static void vec_clear(vec_t* vec) { - vec->elem_count = 0; -} - -static void vec_sort(vec_t* vec, int (*cmpfn)(const void*,const void*)) { - qsort(vec->elem_buffer, vec->elem_count, vec->elem_size, cmpfn); -} - -#pragma GCC diagnostic pop - -#endif /* VEC_H */ -- 2.54.0