Working on new site information

master
Allen Webster 2017-03-30 19:42:26 -04:00
parent 1d0c4667a3
commit 3ad502780f
8 changed files with 261 additions and 41 deletions

Binary file not shown.

View File

@ -2,7 +2,7 @@ extensions=".c.cpp.h.hpp.bat.sh.4coder";
open_recursively=true;
fkey_command_win[1] = {"echo build: x64 & build.bat", "*compilation*", true , true };
fkey_command_win[2] = {"site\\build.bat", "*compilation*", true , true };
fkey_command_win[2] = {"site\\build.bat", "*site*", false , true };
fkey_command_win[3] = {"string\\build.bat", "*compilation*", true , true };
fkey_command_win[4] = {"echo build: x86 & build.bat /DDEV_BUILD_X86", "*compilation*", true , true };
fkey_command_win[5] = {"..\\misc\\run.bat", "*run*", false, false };

View File

@ -307,6 +307,18 @@ generate_feature_list(Document_System *doc_system, Partition *part, char *src_di
return(doc);
}
static Abstract_Item*
generate_binding_list(Document_System *doc_system, Partition *part, char *src_directory){
Enriched_Text *binding_list = push_struct(part, Enriched_Text);
*binding_list = load_enriched_text(part, src_directory, "binding_list.txt");
Abstract_Item *doc = begin_document_description(doc_system, "4coder Feature List", "bindings", 0);
add_enriched_text(doc, binding_list);
end_document_description(doc);
return(doc);
}
static Abstract_Item*
generate_roadmap(Document_System *doc_system, Partition *part, char *src_directory){
Enriched_Text *roadmap = push_struct(part, Enriched_Text);
@ -369,39 +381,54 @@ generate_site(char *code_directory, char *asset_directory, char *src_directory,
Document_System doc_system = create_document_system(part);
// TODO(allen): code compression here
str = push_string(part, 256);
append_sc(&str, asset_directory);
append_sc(&str, "/4coder_logo_low_green.png");
terminate_with_null(&str);
add_image_description(&doc_system, str.str, "png", "4coder_logo");
struct Site_Asset{
char *filename;
char *extension;
char *name;
u32 type;
};
enum Site_Asset_Type{
SiteAsset_None,
SiteAsset_Generic,
SiteAsset_Image,
};
str = push_string(part, 256);
append_sc(&str, asset_directory);
append_sc(&str, "/screen_1.png");
terminate_with_null(&str);
add_image_description(&doc_system, str.str, "png", "screen_1");
Site_Asset asset_list[] = {
{"4coder_logo_low_green.png", "png", "4coder_logo", SiteAsset_Image},
{"screen_1.png", "png", "screen_1", SiteAsset_Image},
{"screen_2.png", "png", "screen_2", SiteAsset_Image},
{"screen_3.png", "png", "screen_3", SiteAsset_Image},
{"4coder_icon.ico", "ico", "4coder_icon", SiteAsset_Generic},
};
str = push_string(part, 256);
append_sc(&str, asset_directory);
append_sc(&str, "/screen_2.png");
terminate_with_null(&str);
add_image_description(&doc_system, str.str, "png", "screen_2");
str = push_string(part, 256);
append_sc(&str, asset_directory);
append_sc(&str, "/screen_3.png");
terminate_with_null(&str);
add_image_description(&doc_system, str.str, "png", "screen_3");
str = push_string(part, 256);
append_sc(&str, asset_directory);
append_sc(&str, "/4coder_icon.ico");
terminate_with_null(&str);
add_generic_file(&doc_system, str.str, "ico", "4coder_icon");
for (u32 i = 0; i < ArrayCount(asset_list); ++i){
Site_Asset *asset = &asset_list[i];
str = push_string(part, 256);
append_sc(&str, asset_directory);
append_sc(&str, "/");
append_sc(&str, asset->filename);
terminate_with_null(&str);
switch (asset_list[i].type){
case SiteAsset_Generic:
{
add_generic_file(&doc_system, str.str, asset->extension, asset->name);
}break;
case SiteAsset_Image:
{
add_image_description(&doc_system, str.str, asset->extension, asset->name);
}break;
default: InvalidCodePath;
}
}
generate_homepage(&doc_system, part, src_directory);
generate_4coder_docs(&doc_system, part, code_directory, src_directory);
generate_feature_list(&doc_system, part, src_directory);
generate_binding_list(&doc_system, part, src_directory);
generate_roadmap(&doc_system, part, src_directory);
generate_tutorials(&doc_system, part, src_directory);

View File

@ -0,0 +1,184 @@
\BEGIN_LINK{document:home}
\IMAGE{image:4coder_logo}{width:200}
\END_LINK
These are the default key bindings in 4coder version \VERSION
The following bindings apply in all situations:
\SECTION{Global Bindings}
\BEGIN_LIST
\BEGIN_ITEM <ctrl p> - Create a new panel with a vertical split \END_ITEM
\BEGIN_ITEM <ctrl _> - Create a new panel with a horizontal split \END_ITEM
\BEGIN_ITEM <ctrl P> - Close a panel \END_ITEM
\BEGIN_ITEM <ctrl ,> - Change active panel \END_ITEM
\BEGIN_ITEM <ctrl <> - change active panel backwards \END_ITEM
\BEGIN_ITEM <ctrl n> - New file dialogue \END_ITEM
\BEGIN_ITEM <ctrl o> - Open file dialogue \END_ITEM
\BEGIN_ITEM <alt o> - Open file dialogue in other panel \END_ITEM
\BEGIN_ITEM <ctrl k> - Kill buffer dialogue \END_ITEM
\BEGIN_ITEM <ctrl i> - Switch open buffer dialogue \END_ITEM
\BEGIN_ITEM <alt c> - Open color and font selection GUI \END_ITEM
\BEGIN_ITEM <alt d> - Open a debug information GUI \END_ITEM
\BEGIN_ITEM <alt .> - Change to footer build panel \END_ITEM
\BEGIN_ITEM <alt ,> - Close footer build panel \END_ITEM
\BEGIN_ITEM <alt n> - Goto next error/jump location \END_ITEM
\BEGIN_ITEM <alt N> - Goto previous error/jump location \END_ITEM
\BEGIN_ITEM <alt M> - Goto first error/jump location \END_ITEM
\BEGIN_ITEM <alt m> - Launch basic build (calls build.bat, build.sh, or Makefile) \END_ITEM
\BEGIN_ITEM <alt z> - Execute arbitrary shell/terminal command in arbitrary buffer \END_ITEM
\BEGIN_ITEM <alt Z> - Repeat previous shell/terminal command \END_ITEM
\BEGIN_ITEM <alt x> - Execute 4coder internal command \END_ITEM
\BEGIN_ITEM <alt s> - Show scrollbar \END_ITEM
\BEGIN_ITEM <alt w> - Hide scrollbar \END_ITEM
\BEGIN_ITEM <alt b> - Toggle filebar \END_ITEM
\BEGIN_ITEM <alt @> - Toggle mouse input);
\BEGIN_ITEM <ctrl page up> - Toggle fullscreen mode);
\BEGIN_ITEM <alt E> - Exit 4coder);
\BEGIN_ITEM <f1> - Launch shell command set in a loaded project \END_ITEM
\BEGIN_ITEM <f2> - Launch shell command set in a loaded project \END_ITEM
\BEGIN_ITEM <f3> - Launch shell command set in a loaded project \END_ITEM
\BEGIN_ITEM <f4> - Launch shell command set in a loaded project \END_ITEM
\BEGIN_ITEM <f5> - Launch shell command set in a loaded project \END_ITEM
\BEGIN_ITEM <f6> - Launch shell command set in a loaded project \END_ITEM
\BEGIN_ITEM <f7> - Launch shell command set in a loaded project \END_ITEM
\BEGIN_ITEM <f8> - Launch shell command set in a loaded project \END_ITEM
\BEGIN_ITEM <f9> - Launch shell command set in a loaded project \END_ITEM
\BEGIN_ITEM <f10> - Launch shell command set in a loaded project \END_ITEM
\BEGIN_ITEM <f11> - Launch shell command set in a loaded project \END_ITEM
\BEGIN_ITEM <f12> - Launch shell command set in a loaded project \END_ITEM
\BEGIN_ITEM <f13> - Launch shell command set in a loaded project \END_ITEM
\BEGIN_ITEM <f14> - Launch shell command set in a loaded project \END_ITEM
\BEGIN_ITEM <f15> - Launch shell command set in a loaded project \END_ITEM
\BEGIN_ITEM <f16> - Launch shell command set in a loaded project \END_ITEM
\END_LIST
Long name commands that can be typed in after <alt x> for infrequently triggered commands.
\SECTION{4coder Internal Command <alt x>}
\BEGIN_LIST
\BEGIN_ITEM "load project" - Load a project.4coder file, ditching any previously loaded project \END_ITEM
\BEGIN_ITEM "open all code" - Open all code files in the current directory, extensions set in config.4coder, default to C/C++ extensions \END_ITEM
\BEGIN_ITEM "open all code recursive" - Like "open all code" but recurses through folders \END_ITEM
\BEGIN_ITEM "dos lines" - Switch the bufer to 'dos' line ending mode CRLF \END_ITEM
\BEGIN_ITEM "nix lines" - Switch the bufer to 'nix' line ending mode LF \END_ITEM
\END_LIST
The following bindings apply in general text files and most apply in code files, but some are overriden by other commands.
\SECTION{Text File Bindings}
\BEGIN_LIST
\BEGIN_ITEM <any character> - Insert character \END_ITEM
\BEGIN_ITEM <left click> - Set cursor position to mouse position \END_ITEM
\BEGIN_ITEM <left release> - Set mark position to mouse position \END_ITEM
\BEGIN_ITEM <right click> - Set mark position to mouse position \END_ITEM
\BEGIN_ITEM <left> - Move left \END_ITEM
\BEGIN_ITEM <right> - Move right \END_ITEM
\BEGIN_ITEM <del> - Delete character \END_ITEM
\BEGIN_ITEM <shift del> - Delete character \END_ITEM
\BEGIN_ITEM <back> - Backspace character \END_ITEM
\BEGIN_ITEM <shift back> - Backspace character \END_ITEM
\BEGIN_ITEM <up> - Move up \END_ITEM
\BEGIN_ITEM <down> - Move up \END_ITEM
\BEGIN_ITEM <end> - Move to end of line \END_ITEM
\BEGIN_ITEM <home> - Move to beginning of line \END_ITEM
\BEGIN_ITEM <page up> - Move up one whole page \END_ITEM
\BEGIN_ITEM <page down> - Move down one whole page \END_ITEM
\BEGIN_ITEM <ctrl right> - Seek right, stop at whitespace \END_ITEM
\BEGIN_ITEM <ctrl left> - Seek left, stop at whitespace \END_ITEM
\BEGIN_ITEM <ctrl up> - Seek up, stop at blank line \END_ITEM
\BEGIN_ITEM <ctrl down> - Seek down, stop at blank line \END_ITEM
\BEGIN_ITEM <alt up> - Move up ten lines \END_ITEM
\BEGIN_ITEM <alt down> - Move down ten lines \END_ITEM
\BEGIN_ITEM <ctrl back> - Delete word backwards \END_ITEM
\BEGIN_ITEM <ctrl del> - Delete word forwards \END_ITEM
\BEGIN_ITEM <alt back> - snipe_token_or_word \END_ITEM
\BEGIN_ITEM Note: 'the range' in the following commands refers to the text between the mark and cursor. \END_ITEM
\BEGIN_ITEM <ctrl space> - Set mark to the cursor position \END_ITEM
\BEGIN_ITEM <ctrl a> - Replace a substring in the range \END_ITEM
\BEGIN_ITEM <ctrl c> - Copy text from the range \END_ITEM
\BEGIN_ITEM <ctrl d> - Delete the text in the range \END_ITEM
\BEGIN_ITEM <ctrl e> - Center the active view on the cursor \END_ITEM
\BEGIN_ITEM <ctrl E> - Move the view so that it's left edge is near the cursor's current x position \END_ITEM
\BEGIN_ITEM <ctrl f> - Begin an incremental search through the current buffer \END_ITEM
\BEGIN_ITEM <ctrl F> - Create a jump location list of all loaded exact matches of a string \END_ITEM
\BEGIN_ITEM <alt F> - Create a jump location list of all loaded substring matches of a string without case sensitivity \END_ITEM
\BEGIN_ITEM <ctrl g> - Goto a specific line number \END_ITEM
\BEGIN_ITEM <ctrl j> - Convert text in the range to lowercase \END_ITEM
\BEGIN_ITEM <ctrl K> - Kill the current buffer \END_ITEM
\BEGIN_ITEM <ctrl l> - Toggle line wrapping on the current buffer \END_ITEM
\BEGIN_ITEM <ctrl m> - Swap the cursor and mark positions \END_ITEM
\BEGIN_ITEM <ctrl O> - Reload the current buffer from the file system \END_ITEM
\BEGIN_ITEM <ctrl q> - Begin an iterative query replace \END_ITEM
\BEGIN_ITEM <ctrl Q> - Begin an iterative query replace to replace the word under the cursor \END_ITEM
\BEGIN_ITEM <ctrl r> - Begin a reversed incremental search through the current buffer \END_ITEM
\BEGIN_ITEM <ctrl s> - Save the current buffer with it's given filename \END_ITEM
\BEGIN_ITEM <ctrl t> - Begin an incremenal search through the current buffer for the word under the cursor \END_ITEM
\BEGIN_ITEM <ctrl T> - Create a jump location list of all loaded exact matches of the word under the cursor \END_ITEM
\BEGIN_ITEM <ctrl u> - Convert text in the range to uppercase \END_ITEM
\BEGIN_ITEM <ctrl v> - Paste from the clipboard \END_ITEM
\BEGIN_ITEM <alt v> - Toggle the virtual whitespace system \END_ITEM
\BEGIN_ITEM <ctrl V> - Paste the next item on the clipboard, 4coder keeps a finite history of past 64 copies \END_ITEM
\BEGIN_ITEM <ctrl x> - Copy text from the range and delete the range (aka cut) \END_ITEM
\BEGIN_ITEM <ctrl y> - Redo \END_ITEM
\BEGIN_ITEM <ctrl z> - Undo \END_ITEM
\BEGIN_ITEM <ctrl 2> - Decrease the line wrap width for the current buffer \END_ITEM
\BEGIN_ITEM <ctrl 3> - Increase the line wrap width for the current buffer \END_ITEM
\BEGIN_ITEM <ctrl ?> - Toggle the show whitespace option \END_ITEM
\BEGIN_ITEM <ctrl ~> - Clean trailing whitespace from all lines \END_ITEM
\BEGIN_ITEM <return> - Interpret jump location under cursor and jump to it, lock the next/prev jump commands to this jump location list (only in read only files) \END_ITEM
\BEGIN_ITEM <shift return> - Like previous command but tries to open the jump location in the view that currently holds the jump location list \END_ITEM
\END_LIST
The following commands only apply in C/C++ files where the lexer (syntax highlighting) is turned on.
\SECTION{Text File Bindings}
\BEGIN_LIST
bind(context, key_right, MDFR_CTRL, seek_alphanumeric_or_camel_right);
bind(context, key_left, MDFR_CTRL, seek_alphanumeric_or_camel_left);
bind(context, '\n', MDFR_NONE, write_and_auto_tab);
bind(context, '\n', MDFR_SHIFT, write_and_auto_tab);
bind(context, '}', MDFR_NONE, write_and_auto_tab);
bind(context, ')', MDFR_NONE, write_and_auto_tab);
bind(context, ']', MDFR_NONE, write_and_auto_tab);
bind(context, ';', MDFR_NONE, write_and_auto_tab);
bind(context, '#', MDFR_NONE, write_and_auto_tab);
bind(context, '\t', MDFR_NONE, word_complete);
bind(context, '\t', MDFR_CTRL, auto_tab_range);
bind(context, '\t', MDFR_SHIFT, auto_tab_line_at_cursor);
bind(context, 't', MDFR_ALT, write_todo);
bind(context, 'y', MDFR_ALT, write_note);
bind(context, 'r', MDFR_ALT, write_block);
bind(context, '[', MDFR_CTRL, open_long_braces);
bind(context, '{', MDFR_CTRL, open_long_braces_semicolon);
bind(context, '}', MDFR_CTRL, open_long_braces_break);
bind(context, 'i', MDFR_ALT, if0_off);
bind(context, '1', MDFR_ALT, open_file_in_quotes);
bind(context, '2', MDFR_ALT, open_matching_file_cpp);
bind(context, '0', MDFR_CTRL, write_zero_struct);
bind(context, 'I', MDFR_CTRL, list_all_functions_current_buffer);
\END_LIST

View File

@ -3,10 +3,11 @@
\IMAGE{image:4coder_logo}{width:200}
\END_LINK
This page provides a list of 4coder features for anyone trying to determine whether 4coder is the right editor for them. If a feature is missing here you should check out the \BEGIN_LINK{document:roadmap} roadmap \END_LINK page to see what is coming in the future. If the feature you want is on neither, you should contact \BEGIN_STYLE{code} editor@4coder.net \END_STYLE. Some features that are already in 4coder might be missing from this list, if you want to be sure you should contact \BEGIN_STYLE{code} editor@4coder.net \END_STYLE.
This page provides a list of 4coder features for anyone trying to determine whether 4coder is the right editor for them. To find a complete list of every default key binding visit \BEGIN_LINK{document:bindings} binding list \END_LINK. If a feature is missing here you should check out the \BEGIN_LINK{document:roadmap} roadmap \END_LINK page to see what is coming in the future. If the feature you want is on neither, you should contact \BEGIN_STYLE{code} editor@4coder.net \END_STYLE. Some features that are already in 4coder might be missing from this list, if you want to be sure you should contact \BEGIN_STYLE{code} editor@4coder.net \END_STYLE.
\SECTION{Text Editing}
\BEGIN_LIST
\BEGIN_ITEM Support for UTF8 encoded files \END_ITEM
\BEGIN_ITEM Cursor-Mark editing paradigm \END_ITEM
\BEGIN_ITEM Navigation by characters, words, tokens, lines, and blank lines \END_ITEM
\BEGIN_ITEM Modern style undo and redo \END_ITEM
@ -25,6 +26,13 @@ This page provides a list of 4coder features for anyone trying to determine whet
\BEGIN_ITEM Jump to error \END_ITEM
\END_LIST
\SECTION{Project Organization}
\BEGIN_LIST
\BEGIN_ITEM List file extensions you care about in your project type to automatically open all code files \END_ITEM
\BEGIN_ITEM Set shell/terminal commands to various fkeys for build scripts, test scripts etc \END_ITEM
\BEGIN_ITEM project.4coder is a text file so it works painlessly with source control and can it is easy to start working with an existing project on a new machine. \END_ITEM
\END_LIST
\SECTION{The Customization API}
These features are included in the alpha builds at the $5 tier and above.
\BEGIN_LIST
@ -43,6 +51,7 @@ This page provides a list of 4coder features for anyone trying to determine whet
\BEGIN_ITEM Multi-line editing
\BEGIN_ITEM Rename a parameter
\BEGIN_ITEM Write in explicit enum values from 0 to n
\BEGIN_ITEM Scope aware features: scope navigation & scope absorb down
\END_LIST
\SECTION{Transition From Emacs}

View File

@ -11,6 +11,8 @@ If you cannot find what you are looking for please contact \BEGIN_STYLE{code} ed
\BEGIN_LINK{document:features} The official 4coder feature list \END_LINK
\BEGIN_LINK{documents:binding_list} The list of default 4coder bindings \END_LINK
\BEGIN_LINK{document:roadmap} The official 4coder road map \END_LINK
\BEGIN_LINK{document:custom_docs} The official documentation for the 4coder customization system \END_LINK

View File

@ -3,29 +3,28 @@
\IMAGE{image:4coder_logo}{width:200}
\END_LINK
The 4coder TODO list, in the rough order of priority and with very speculative time to completion estimates.
Right now I am working on upgrading some core internal systems that should buy me the flexibility I need before I can move forward to any of the remaining features on this list. These time projections assume the new system is ready sometime in May 2017, but it is hard to predict this sort of experimental stuff, so it could be longer than that.
\SECTION{Improve the Core Buffer Systems}
\BEGIN_LIST
\BEGIN_ITEM utf8 buffer mode. Target completion: March 2017. \END_ITEM
\BEGIN_ITEM binary buffer mode. Target completion: March 2017. \END_ITEM
\BEGIN_ITEM Fix up the undo/redo system. Target completion: March 2017. \END_ITEM
\BEGIN_ITEM Expose undo/redo system in the custom layer. Target completion: April 2017. \END_ITEM
\BEGIN_ITEM Programmable code wrapping: May 2017. \END_ITEM
\BEGIN_ITEM Virtual/Ghost text for features such as word complete. Target completion: May 2017. \END_ITEM
\BEGIN_ITEM Binary buffer mode. Target completion: June 2017. \END_ITEM
\BEGIN_ITEM Fix up the undo/redo system. Target completion: July 2017. \END_ITEM
\BEGIN_ITEM Expose undo/redo system in the custom layer. Target completion: July 2017. \END_ITEM
\END_LIST
\SECTION{Provide Customizations for Multiple Editing Paradgims}
\BEGIN_LIST
\BEGIN_ITEM Restructure custom layer to work as an event loop. Target completion: May 2017. \END_ITEM
\BEGIN_ITEM Custom layer reloading at runtime. Target completion: May 2017. \END_ITEM
\BEGIN_ITEM Virtual/Ghost text for features such as word complete. Target completion: May 2017. \END_ITEM
\BEGIN_ITEM New frameworks for vim like and sublime like editing. Target completion: June 2017. \END_ITEM
\BEGIN_ITEM Restructure custom layer to work as an event loop. Target completion: July 2017. \END_ITEM
\BEGIN_ITEM Custom layer reloading at runtime. Target completion: August 2017. \END_ITEM
\BEGIN_ITEM New frameworks for vim like and sublime like editing. Target completion: August 2017. \END_ITEM
\END_LIST
\SECTION{Platform Layer Features and Porting Issues}
\BEGIN_LIST
\BEGIN_ITEM Upgrade to worker thread system to better support async and parallel systems. Target completion: ??? \END_ITEM
\BEGIN_ITEM Support for double click opening files in an existing window. Target completion: ??? \END_ITEM
\BEGIN_ITEM Support for multi-window single process. Target completion: ??? \END_ITEM
\BEGIN_ITEM Make the rendeirng system modular. Target completion: ??? \END_ITEM
\END_LIST
@ -36,4 +35,3 @@ The 4coder TODO list, in the rough order of priority and with very speculative t
\BEGIN_ITEM IMGUI helper wrapper. Target completion: ??? \END_ITEM
\END_LIST

View File

@ -11,7 +11,7 @@ Setting up and navigating your project with 4coder:
\VIDEO{youtube:https://www.youtube.com/embed/glPEpaT6GH0}
Extending your project with a project file:
Extending your project with a project.4coder file:
\VIDEO{youtube:https://www.youtube.com/embed/iZLtS3IoatE}