finished site update, switching over to API cleanup

master
Allen Webster 2017-07-17 16:43:01 -04:00
parent 6064912b03
commit d117c7fcf5
13 changed files with 641 additions and 833 deletions

View File

@ -27,9 +27,7 @@ struct Application_Links;
#define BUFFER_READ_TOKENS_SIG(n) bool32 n(Application_Links *app, Buffer_Summary *buffer, int32_t start_token, int32_t end_token, Cpp_Token *tokens_out)
#define BUFFER_GET_TOKEN_INDEX_SIG(n) bool32 n(Application_Links *app, Buffer_Summary *buffer, int32_t pos, Cpp_Get_Token_Result *get_result)
#define BUFFER_SEND_END_SIGNAL_SIG(n) bool32 n(Application_Links *app, Buffer_Summary *buffer)
#define BEGIN_BUFFER_CREATION_SIG(n) bool32 n(Application_Links *app, Buffer_Creation_Data *data, Buffer_Create_Flag flags)
#define BUFFER_CREATION_NAME_SIG(n) bool32 n(Application_Links *app, Buffer_Creation_Data *data, char *filename, int32_t filename_len, uint32_t flags)
#define END_BUFFER_CREATION_SIG(n) Buffer_Summary n(Application_Links *app, Buffer_Creation_Data *data)
#define CREATE_BUFFER_SIG(n) Buffer_Summary n(Application_Links *app, char *filename, int32_t filename_len, Buffer_Create_Flag flags)
#define SAVE_BUFFER_SIG(n) bool32 n(Application_Links *app, Buffer_Summary *buffer, char *filename, int32_t filename_len, uint32_t flags)
#define KILL_BUFFER_SIG(n) bool32 n(Application_Links *app, Buffer_Identifier buffer, View_ID view_id, Buffer_Kill_Flag flags)
#define GET_VIEW_FIRST_SIG(n) View_Summary n(Application_Links *app, Access_Flag access)
@ -105,9 +103,7 @@ typedef BUFFER_TOKEN_COUNT_SIG(Buffer_Token_Count_Function);
typedef BUFFER_READ_TOKENS_SIG(Buffer_Read_Tokens_Function);
typedef BUFFER_GET_TOKEN_INDEX_SIG(Buffer_Get_Token_Index_Function);
typedef BUFFER_SEND_END_SIGNAL_SIG(Buffer_Send_End_Signal_Function);
typedef BEGIN_BUFFER_CREATION_SIG(Begin_Buffer_Creation_Function);
typedef BUFFER_CREATION_NAME_SIG(Buffer_Creation_Name_Function);
typedef END_BUFFER_CREATION_SIG(End_Buffer_Creation_Function);
typedef CREATE_BUFFER_SIG(Create_Buffer_Function);
typedef SAVE_BUFFER_SIG(Save_Buffer_Function);
typedef KILL_BUFFER_SIG(Kill_Buffer_Function);
typedef GET_VIEW_FIRST_SIG(Get_View_First_Function);
@ -185,9 +181,7 @@ Buffer_Token_Count_Function *buffer_token_count;
Buffer_Read_Tokens_Function *buffer_read_tokens;
Buffer_Get_Token_Index_Function *buffer_get_token_index;
Buffer_Send_End_Signal_Function *buffer_send_end_signal;
Begin_Buffer_Creation_Function *begin_buffer_creation;
Buffer_Creation_Name_Function *buffer_creation_name;
End_Buffer_Creation_Function *end_buffer_creation;
Create_Buffer_Function *create_buffer;
Save_Buffer_Function *save_buffer;
Kill_Buffer_Function *kill_buffer;
Get_View_First_Function *get_view_first;
@ -264,9 +258,7 @@ Buffer_Token_Count_Function *buffer_token_count_;
Buffer_Read_Tokens_Function *buffer_read_tokens_;
Buffer_Get_Token_Index_Function *buffer_get_token_index_;
Buffer_Send_End_Signal_Function *buffer_send_end_signal_;
Begin_Buffer_Creation_Function *begin_buffer_creation_;
Buffer_Creation_Name_Function *buffer_creation_name_;
End_Buffer_Creation_Function *end_buffer_creation_;
Create_Buffer_Function *create_buffer_;
Save_Buffer_Function *save_buffer_;
Kill_Buffer_Function *kill_buffer_;
Get_View_First_Function *get_view_first_;
@ -351,9 +343,7 @@ app_links->buffer_token_count_ = Buffer_Token_Count;\
app_links->buffer_read_tokens_ = Buffer_Read_Tokens;\
app_links->buffer_get_token_index_ = Buffer_Get_Token_Index;\
app_links->buffer_send_end_signal_ = Buffer_Send_End_Signal;\
app_links->begin_buffer_creation_ = Begin_Buffer_Creation;\
app_links->buffer_creation_name_ = Buffer_Creation_Name;\
app_links->end_buffer_creation_ = End_Buffer_Creation;\
app_links->create_buffer_ = Create_Buffer;\
app_links->save_buffer_ = Save_Buffer;\
app_links->kill_buffer_ = Kill_Buffer;\
app_links->get_view_first_ = Get_View_First;\
@ -430,9 +420,7 @@ static inline int32_t buffer_token_count(Application_Links *app, Buffer_Summary
static inline bool32 buffer_read_tokens(Application_Links *app, Buffer_Summary *buffer, int32_t start_token, int32_t end_token, Cpp_Token *tokens_out){return(app->buffer_read_tokens(app, buffer, start_token, end_token, tokens_out));}
static inline bool32 buffer_get_token_index(Application_Links *app, Buffer_Summary *buffer, int32_t pos, Cpp_Get_Token_Result *get_result){return(app->buffer_get_token_index(app, buffer, pos, get_result));}
static inline bool32 buffer_send_end_signal(Application_Links *app, Buffer_Summary *buffer){return(app->buffer_send_end_signal(app, buffer));}
static inline bool32 begin_buffer_creation(Application_Links *app, Buffer_Creation_Data *data, Buffer_Create_Flag flags){return(app->begin_buffer_creation(app, data, flags));}
static inline bool32 buffer_creation_name(Application_Links *app, Buffer_Creation_Data *data, char *filename, int32_t filename_len, uint32_t flags){return(app->buffer_creation_name(app, data, filename, filename_len, flags));}
static inline Buffer_Summary end_buffer_creation(Application_Links *app, Buffer_Creation_Data *data){return(app->end_buffer_creation(app, data));}
static inline Buffer_Summary create_buffer(Application_Links *app, char *filename, int32_t filename_len, Buffer_Create_Flag flags){return(app->create_buffer(app, filename, filename_len, flags));}
static inline bool32 save_buffer(Application_Links *app, Buffer_Summary *buffer, char *filename, int32_t filename_len, uint32_t flags){return(app->save_buffer(app, buffer, filename, filename_len, flags));}
static inline bool32 kill_buffer(Application_Links *app, Buffer_Identifier buffer, View_ID view_id, Buffer_Kill_Flag flags){return(app->kill_buffer(app, buffer, view_id, flags));}
static inline View_Summary get_view_first(Application_Links *app, Access_Flag access){return(app->get_view_first(app, access));}
@ -509,9 +497,7 @@ static inline int32_t buffer_token_count(Application_Links *app, Buffer_Summary
static inline bool32 buffer_read_tokens(Application_Links *app, Buffer_Summary *buffer, int32_t start_token, int32_t end_token, Cpp_Token *tokens_out){return(app->buffer_read_tokens_(app, buffer, start_token, end_token, tokens_out));}
static inline bool32 buffer_get_token_index(Application_Links *app, Buffer_Summary *buffer, int32_t pos, Cpp_Get_Token_Result *get_result){return(app->buffer_get_token_index_(app, buffer, pos, get_result));}
static inline bool32 buffer_send_end_signal(Application_Links *app, Buffer_Summary *buffer){return(app->buffer_send_end_signal_(app, buffer));}
static inline bool32 begin_buffer_creation(Application_Links *app, Buffer_Creation_Data *data, Buffer_Create_Flag flags){return(app->begin_buffer_creation_(app, data, flags));}
static inline bool32 buffer_creation_name(Application_Links *app, Buffer_Creation_Data *data, char *filename, int32_t filename_len, uint32_t flags){return(app->buffer_creation_name_(app, data, filename, filename_len, flags));}
static inline Buffer_Summary end_buffer_creation(Application_Links *app, Buffer_Creation_Data *data){return(app->end_buffer_creation_(app, data));}
static inline Buffer_Summary create_buffer(Application_Links *app, char *filename, int32_t filename_len, Buffer_Create_Flag flags){return(app->create_buffer_(app, filename, filename_len, flags));}
static inline bool32 save_buffer(Application_Links *app, Buffer_Summary *buffer, char *filename, int32_t filename_len, uint32_t flags){return(app->save_buffer_(app, buffer, filename, filename_len, flags));}
static inline bool32 kill_buffer(Application_Links *app, Buffer_Identifier buffer, View_ID view_id, Buffer_Kill_Flag flags){return(app->kill_buffer_(app, buffer, view_id, flags));}
static inline View_Summary get_view_first(Application_Links *app, Access_Flag access){return(app->get_view_first_(app, access));}

View File

@ -178,6 +178,7 @@ buffer_identifier(Buffer_ID id){
return(identifier);
}
#if 0
static Buffer_Summary
create_buffer(Application_Links *app, char *filename, int32_t filename_len, Buffer_Create_Flag flags){
Buffer_Summary buffer = {0};
@ -189,6 +190,7 @@ create_buffer(Application_Links *app, char *filename, int32_t filename_len, Buff
return(buffer);
}
#endif
static Range
make_range(int32_t p1, int32_t p2){

View File

@ -754,7 +754,7 @@ DOC_PARAM(edits, This parameter provides about the source string and destination
DOC_PARAM(edit_count, This parameter specifies the number of Buffer_Edit structs in edits.)
DOC_PARAM(type, This prameter specifies what type of batch edit to execute.)
DOC_RETURN(This call returns non-zero if the batch edit succeeds. This call can fail if the provided buffer summary does not refer to an actual buffer in 4coder.)
DOC(TODO)
DOC(Apply an array of edits all at once. This combines all the edits into one undo operation.)
DOC_SEE(Buffer_Edit)
DOC_SEE(Buffer_Batch_Edit_Type)
*/{
@ -1225,61 +1225,8 @@ DOC(Whenever a buffer is killed an end signal is sent which triggers the end fil
return(result);
}
// TODO(allen): Buffer_Creation_Flag
API_EXPORT bool32
Begin_Buffer_Creation(Application_Links *app, Buffer_Creation_Data *data, Buffer_Create_Flag flags)
/*
DOC_PARAM(data, a local user handle for the buffer creation process)
DOC_PARAM(flags, flags defining the buffer creation behavior)
DOC(Begins a buffer creation by initializing a Buffer_Creation_Data struct. The buffer is not actually created until end_buffer_creation is called.)
DOC_SEE(buffer_creation_name)
DOC_SEE(end_buffer_creation)
DOC_SEE(Buffer_Creation_Data)
DOC_SEE(Buffer_Create_Flag)
*/{
bool32 result = 0;
if (data){
data->flags = flags;
result = 1;
}
return(result);
}
API_EXPORT bool32
Buffer_Creation_Name(Application_Links *app, Buffer_Creation_Data *data, char *filename, int32_t filename_len, uint32_t flags)
/*
DOC_PARAM(data, a local user handle for buffer creation that has already been initialized by begin_buffer_creation)
DOC_PARAM(filename, the name to associate to the buffer; This string need not be null terminated.)
DOC_PARAM(filename_len, the length of the filename string)
DOC_PARAM(flags, not currently used this should be 0)
DOC(This call sets the name associated to the buffer. If the name is a filename, that filename will be used for loading and saving with the disk, and the buffer name will be extracted from the filename. If the name is not a filename it will be an unassociated buffer and the buffer name will be exactly set to filename.)
DOC_SEE(begin_buffer_creation)
DOC_SEE(end_buffer_creation)
*/{
bool32 result = 0;
if (data){
String fname = make_fixed_width_string(data->fname_space);
copy_ss(&fname, make_string(filename, filename_len));
data->fname_len = filename_len;
result = 1;
}
return(result);
}
API_EXPORT Buffer_Summary
End_Buffer_Creation(Application_Links *app, Buffer_Creation_Data *data)
/*
DOC_PARAM(data, a local user handle for buffer creation that has already been initialized by begin_buffer_creation and used in subsequent buffer creation flags)
DOC_RETURN(Returns a summary of the newly created buffer or of the existing buffer that already has the specified name. If there is not enough creation data to make the buffer the returned summary will be null.)
DOC_SEE(begin_buffer_creation)
*/{
Create_Buffer(Application_Links *app, char *filename, int32_t filename_len, Buffer_Create_Flag flags){
PRFL_FUNC_GROUP();
Command_Data *cmd = (Command_Data*)app->cmd_context;
@ -1291,8 +1238,8 @@ DOC_SEE(begin_buffer_creation)
Buffer_Summary result = {0};
if (data != 0 && data->fname_len > 0){
String fname = make_string(data->fname_space, data->fname_len);
if (filename_len > 0){
String fname = make_string(filename, filename_len);
Editing_File *file = 0;
b32 do_new_file = false;
@ -1312,8 +1259,6 @@ DOC_SEE(begin_buffer_creation)
file = working_set_name_contains(working_set, fname);
}
u32 flags = data->flags;
if (file == 0){
if (!do_new_file){
if (flags & BufferCreate_AlwaysNew){
@ -1914,12 +1859,7 @@ DOC_PARAM(view, The view parameter specifies the view in which to set the cursor
DOC_PARAM(seek, The seek parameter specifies the target position for the seek.)
DOC_PARAM(set_preferred_x, If this parameter is true the preferred x is updated to match the new cursor x.)
DOC_RETURN(This call returns non-zero on success.)
DOC
(
This call sets the the view's cursor position. set_preferred_x should usually be true
unless the change in cursor position is is a vertical motion that tries to keep the
cursor in the same column or x position.
)
DOC(This call sets the the view's cursor position. set_preferred_x should usually be true unless the change in cursor position is is a vertical motion that tries to keep the cursor in the same column or x position.)
DOC_SEE(Buffer_Seek)
*/{
Command_Data *cmd = (Command_Data*)app->cmd_context;
@ -1945,7 +1885,9 @@ DOC_SEE(Buffer_Seek)
API_EXPORT bool32
View_Set_Scroll(Application_Links *app, View_Summary *view, GUI_Scroll_Vars scroll)
/*
DOC(TODO)
DOC_PARAM(view, The view on which to change the scroll state.)
DOC_PARAM(scroll, The new scroll position for the view.)
DOC(Set the scrolling state of the view.)
DOC_SEE(GUI_Scroll_Vars)
*/{
Command_Data *cmd = (Command_Data*)app->cmd_context;

File diff suppressed because it is too large Load Diff

View File

@ -63,11 +63,9 @@ do_image_resize(char *src_file, char *dst_file, char *extension, i32 w, i32 h){
if (image != 0){
stbi_uc *resized_image = fm_push_array(stbi_uc, w*h*channels);
stbir_resize_uint8(image, x, y, x*channels, resized_image, w, h, w*channels, channels);
if (match_cc(extension, "png")){
stbi_write_png(dst_file, w, h, channels, resized_image, w*channels);
}
free(image);
}
@ -79,18 +77,18 @@ generate_site(char *code_directory, char *asset_directory, char *src_directory,
fm_clear_folder(dst_directory);
Document_System doc_system = create_document_system(code_directory, asset_directory, src_directory);
add_image_description(&doc_system, "4coder_logo_low_green.png", "png", "4coder_logo");
add_image_description(&doc_system, "screen_1.png", "png", "screen_1");
add_image_description(&doc_system, "screen_2.png", "png", "screen_2");
add_image_description(&doc_system, "screen_3.png", "png", "screen_3");
add_generic_file (&doc_system, "4coder_icon.ico", "ico", "4coder_icon");
Document_System *docs = &doc_system;
// TODO(allen): Declare these in the source files.
add_image_description(docs, "4coder_logo_low_green.png", "png", "4coder_logo" );
add_image_description(docs, "screen_1.png", "png", "screen_1" );
add_image_description(docs, "screen_2.png", "png", "screen_2" );
add_image_description(docs, "screen_3.png", "png", "screen_3" );
add_generic_file (docs, "4coder_icon.ico", "ico", "4coder_icon" );
// TODO(allen): From the text file get "Big Title" and "smallname".
generate_page(docs, "home.txt" , "4coder Home" , "home" );
generate_page(docs, "docs.txt" , "4coder API Docs" , "custom_docs" );
generate_page(docs, "home.txt" , "4coder Home" , "home" );
generate_page(docs, "feature_list.txt", "4coder Feature List", "features" );
generate_page(docs, "binding_list.txt", "4coder Binding List", "bindings" );
generate_page(docs, "roadmap.txt" , "4coder Roadmap" , "roadmap" );

View File

@ -1,192 +1,185 @@
\BEGIN_LINK{document:home}
\IMAGE{image:4coder_logo}{width:200}
\END_LINK
\INCLUDE{site_header.txt}
These are the default key bindings in 4coder version \VERSION
\SECTION{Global Bindings}
The following bindings apply in all situations.
\BEGIN_LIST
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl p> \END_STYLE Create a new panel with a vertical split \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl _> \END_STYLE Create a new panel with a horizontal split \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl P> \END_STYLE Close a panel \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl ,> \END_STYLE Change active panel \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl <> \END_STYLE change active panel backwards \END_ITEM
\LIST
\ITEM \STYLE{code} <ctrl p> \END Create a new panel with a vertical split
\ITEM \STYLE{code} <ctrl _> \END Create a new panel with a horizontal split
\ITEM \STYLE{code} <ctrl P> \END Close a panel
\ITEM \STYLE{code} <ctrl ,> \END Change active panel
\ITEM \STYLE{code} <ctrl <> \END change active panel backwards
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl n> \END_STYLE New file dialogue \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl o> \END_STYLE Open file dialogue \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <alt o> \END_STYLE Open file dialogue in other panel \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl k> \END_STYLE Kill buffer dialogue \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl i> \END_STYLE Switch open buffer dialogue \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl w> \END_STYLE 'Save As' - save file into new name \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl h> \END_STYLE Set hot directory to projet root directory \END_ITEM
\ITEM \STYLE{code} <ctrl n> \END New file dialogue
\ITEM \STYLE{code} <ctrl o> \END Open file dialogue
\ITEM \STYLE{code} <alt o> \END Open file dialogue in other panel
\ITEM \STYLE{code} <ctrl k> \END Kill buffer dialogue
\ITEM \STYLE{code} <ctrl i> \END Switch open buffer dialogue
\ITEM \STYLE{code} <ctrl w> \END 'Save As' - save file into new name
\ITEM \STYLE{code} <ctrl h> \END Set hot directory to projet root directory
\BEGIN_ITEM \BEGIN_STYLE{code} <alt c> \END_STYLE Open color and font selection GUI \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <alt d> \END_STYLE Open a debug information GUI \END_ITEM
\ITEM \STYLE{code} <alt c> \END Open color and font selection GUI
\ITEM \STYLE{code} <alt d> \END Open a debug information GUI
\BEGIN_ITEM \BEGIN_STYLE{code} <alt .> \END_STYLE Change to footer build panel \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <alt ,> \END_STYLE Close footer build panel \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <alt n> \END_STYLE Goto next error/jump location \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <alt N> \END_STYLE Goto previous error/jump location \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <alt M> \END_STYLE Goto first error/jump location \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <alt m> \END_STYLE Launch basic build (calls build.bat, build.sh, or Makefile) \END_ITEM
\ITEM \STYLE{code} <alt .> \END Change to footer build panel
\ITEM \STYLE{code} <alt ,> \END Close footer build panel
\ITEM \STYLE{code} <alt n> \END Goto next error/jump location
\ITEM \STYLE{code} <alt N> \END Goto previous error/jump location
\ITEM \STYLE{code} <alt M> \END Goto first error/jump location
\ITEM \STYLE{code} <alt m> \END Launch basic build (calls build.bat, build.sh, or Makefile)
\BEGIN_ITEM \BEGIN_STYLE{code} <alt z> \END_STYLE Execute arbitrary shell/terminal command in arbitrary buffer \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <alt Z> \END_STYLE Repeat previous shell/terminal command \END_ITEM
\ITEM \STYLE{code} <alt z> \END Execute arbitrary shell/terminal command in arbitrary buffer
\ITEM \STYLE{code} <alt Z> \END Repeat previous shell/terminal command
\BEGIN_ITEM \BEGIN_STYLE{code} <alt x> \END_STYLE Execute 4coder internal command \END_ITEM
\ITEM \STYLE{code} <alt x> \END Execute 4coder internal command
\BEGIN_ITEM \BEGIN_STYLE{code} <alt s> \END_STYLE Show scrollbar \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <alt w> \END_STYLE Hide scrollbar \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <alt b> \END_STYLE Toggle filebar \END_ITEM
\ITEM \STYLE{code} <alt s> \END Show scrollbar
\ITEM \STYLE{code} <alt w> \END Hide scrollbar
\ITEM \STYLE{code} <alt b> \END Toggle filebar
\BEGIN_ITEM \BEGIN_STYLE{code} <alt @> \END_STYLE Toggle mouse input \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl page up> \END_STYLE Toggle fullscreen mode \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <alt E> \END_STYLE Exit 4coder \END_ITEM
\ITEM \STYLE{code} <alt @> \END Toggle mouse input
\ITEM \STYLE{code} <ctrl page up> \END Toggle fullscreen mode
\ITEM \STYLE{code} <alt E> \END Exit 4coder
\BEGIN_ITEM \BEGIN_STYLE{code} <f1> \END_STYLE Launch shell command set in a loaded project \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <f2> \END_STYLE Launch shell command set in a loaded project \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <f3> \END_STYLE Launch shell command set in a loaded project \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <f4> \END_STYLE Launch shell command set in a loaded project \END_ITEM
\ITEM \STYLE{code} <f1> \END Launch shell command set in a loaded project
\ITEM \STYLE{code} <f2> \END Launch shell command set in a loaded project
\ITEM \STYLE{code} <f3> \END Launch shell command set in a loaded project
\ITEM \STYLE{code} <f4> \END Launch shell command set in a loaded project
\BEGIN_ITEM \BEGIN_STYLE{code} <f5> \END_STYLE Launch shell command set in a loaded project \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <f6> \END_STYLE Launch shell command set in a loaded project \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <f7> \END_STYLE Launch shell command set in a loaded project \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <f8> \END_STYLE Launch shell command set in a loaded project \END_ITEM
\ITEM \STYLE{code} <f5> \END Launch shell command set in a loaded project
\ITEM \STYLE{code} <f6> \END Launch shell command set in a loaded project
\ITEM \STYLE{code} <f7> \END Launch shell command set in a loaded project
\ITEM \STYLE{code} <f8> \END Launch shell command set in a loaded project
\BEGIN_ITEM \BEGIN_STYLE{code} <f9> \END_STYLE Launch shell command set in a loaded project \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <f10> \END_STYLE Launch shell command set in a loaded project \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <f11> \END_STYLE Launch shell command set in a loaded project \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <f12> \END_STYLE Launch shell command set in a loaded project \END_ITEM
\ITEM \STYLE{code} <f9> \END Launch shell command set in a loaded project
\ITEM \STYLE{code} <f10> \END Launch shell command set in a loaded project
\ITEM \STYLE{code} <f11> \END Launch shell command set in a loaded project
\ITEM \STYLE{code} <f12> \END Launch shell command set in a loaded project
\BEGIN_ITEM \BEGIN_STYLE{code} <f13> \END_STYLE Launch shell command set in a loaded project \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <f14> \END_STYLE Launch shell command set in a loaded project \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <f15> \END_STYLE Launch shell command set in a loaded project \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <f16> \END_STYLE Launch shell command set in a loaded project \END_ITEM
\ITEM \STYLE{code} <f13> \END Launch shell command set in a loaded project
\ITEM \STYLE{code} <f14> \END Launch shell command set in a loaded project
\ITEM \STYLE{code} <f15> \END Launch shell command set in a loaded project
\ITEM \STYLE{code} <f16> \END Launch shell command set in a loaded project
\END_LIST
\END_SECTION
\END
\END
\SECTION{4coder Internal Command}
Long name commands that can be typed in after \BEGIN_STYLE{code} <alt x> \END_STYLE for infrequently triggered commands.
\BEGIN_LIST
\BEGIN_ITEM \BEGIN_STYLE{code} "load project" \END_STYLE
Load a project.4coder file, ditching any previously loaded project \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} "open all code" \END_STYLE
Open all code files in the current directory, extensions set in config.4coder, default to C/C++ extensions \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} "open all code recursive" \END_STYLE
Like \BEGIN_STYLE{code} "open all code" \END_STYLE but recurses through folders \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} "dos lines" \END_STYLE
Switch the bufer to 'dos' line ending mode CRLF \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} "nix lines" \END_STYLE
Switch the bufer to 'nix' line ending mode LF \END_ITEM
\END_LIST
\END_SECTION
Long name commands that can be typed in after \STYLE{code} <alt x> \END for infrequently triggered commands.
\LIST
\ITEM \STYLE{code} "load project" \END Load a project.4coder file, ditching any previously loaded project
\ITEM \STYLE{code} "open all code" \END Open all code files in the current directory, extensions set in config.4coder, default to C/C++ extensions
\ITEM \STYLE{code} "open all code recursive" \END Like \STYLE{code} "open all code" \END but recurses through folders
\ITEM \STYLE{code} "dos lines" \END Switch the bufer to 'dos' line ending mode CRLF
\ITEM \STYLE{code} "nix lines" \END Switch the bufer to 'nix' line ending mode LF
\END
\END
\SECTION{Text File Bindings}
The following bindings apply in general text files and most apply in code files, but some are overriden by other commands.
\BEGIN_LIST
\BEGIN_ITEM \BEGIN_STYLE{code} <any character> \END_STYLE Insert character \END_ITEM
\LIST
\ITEM \STYLE{code} <any character> \END Insert character
\BEGIN_ITEM \BEGIN_STYLE{code} <left click> \END_STYLE Set cursor position to mouse position \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <left release> \END_STYLE Set mark position to mouse position \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <right click> \END_STYLE Set mark position to mouse position \END_ITEM
\ITEM \STYLE{code} <left click> \END Set cursor position to mouse position
\ITEM \STYLE{code} <left release> \END Set mark position to mouse position
\ITEM \STYLE{code} <right click> \END Set mark position to mouse position
\BEGIN_ITEM \BEGIN_STYLE{code} <left> \END_STYLE Move left \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <right> \END_STYLE Move right \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <del> \END_STYLE Delete character \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <shift del> \END_STYLE Delete character \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <back> \END_STYLE Backspace character \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <shift back> \END_STYLE Backspace character \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <up> \END_STYLE Move up \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <down> \END_STYLE Move up \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <end> \END_STYLE Move to end of line \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <home> \END_STYLE Move to beginning of line \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <page up> \END_STYLE Move up one whole page \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <page down> \END_STYLE Move down one whole page \END_ITEM
\ITEM \STYLE{code} <left> \END Move left
\ITEM \STYLE{code} <right> \END Move right
\ITEM \STYLE{code} <del> \END Delete character
\ITEM \STYLE{code} <shift del> \END Delete character
\ITEM \STYLE{code} <back> \END Backspace character
\ITEM \STYLE{code} <shift back> \END Backspace character
\ITEM \STYLE{code} <up> \END Move up
\ITEM \STYLE{code} <down> \END Move up
\ITEM \STYLE{code} <end> \END Move to end of line
\ITEM \STYLE{code} <home> \END Move to beginning of line
\ITEM \STYLE{code} <page up> \END Move up one whole page
\ITEM \STYLE{code} <page down> \END Move down one whole page
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl right> \END_STYLE Seek right, stop at whitespace \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl left> \END_STYLE Seek left, stop at whitespace \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl up> \END_STYLE Seek up, stop at blank line \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl down> \END_STYLE Seek down, stop at blank line \END_ITEM
\ITEM \STYLE{code} <ctrl right> \END Seek right, stop at whitespace
\ITEM \STYLE{code} <ctrl left> \END Seek left, stop at whitespace
\ITEM \STYLE{code} <ctrl up> \END Seek up, stop at blank line
\ITEM \STYLE{code} <ctrl down> \END Seek down, stop at blank line
\BEGIN_ITEM \BEGIN_STYLE{code} <alt up> \END_STYLE Move up ten lines \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <alt down> \END_STYLE Move down ten lines \END_ITEM
\ITEM \STYLE{code} <alt up> \END Move up ten lines
\ITEM \STYLE{code} <alt down> \END Move down ten lines
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl back> \END_STYLE Delete word backwards \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl del> \END_STYLE Delete word forwards \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <alt back> \END_STYLE snipe_token_or_word \END_ITEM
\ITEM \STYLE{code} <ctrl back> \END Delete word backwards
\ITEM \STYLE{code} <ctrl del> \END Delete word forwards
\ITEM \STYLE{code} <alt back> \END snipe_token_or_word
\BEGIN_ITEM Note: 'the range' in the following commands refers to the text between the mark and cursor. \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl space> \END_STYLE Set mark to the cursor position \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl a> \END_STYLE Replace a substring in the range \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl c> \END_STYLE Copy text from the range \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl d> \END_STYLE Delete the text in the range \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl e> \END_STYLE Center the active view on the cursor \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl E> \END_STYLE Move the view so that it's left edge is near the cursor's current x position \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl f> \END_STYLE Begin an incremental search through the current buffer \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl F> \END_STYLE Create a jump location list of all loaded exact matches of a string \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <alt F> \END_STYLE Create a jump location list of all loaded substring matches of a string without case sensitivity \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl g> \END_STYLE Goto a specific line number \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl j> \END_STYLE Convert text in the range to lowercase \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl K> \END_STYLE Kill the current buffer \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl l> \END_STYLE Toggle line wrapping on the current buffer \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl m> \END_STYLE Swap the cursor and mark positions \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl O> \END_STYLE Reload the current buffer from the file system \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl q> \END_STYLE Begin an iterative query replace \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl Q> \END_STYLE Begin an iterative query replace to replace the word under the cursor \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl r> \END_STYLE Begin a reversed incremental search through the current buffer \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl s> \END_STYLE Save the current buffer with it's given filename \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl t> \END_STYLE Begin an incremenal search through the current buffer for the word under the cursor \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl T> \END_STYLE Create a jump location list of all loaded exact matches of the word under the cursor \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl u> \END_STYLE Convert text in the range to uppercase \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl v> \END_STYLE Paste from the clipboard \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <alt v> \END_STYLE Toggle the virtual whitespace system \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl V> \END_STYLE Paste the next item on the clipboard, 4coder keeps a finite history of past 64 copies \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl x> \END_STYLE Copy text from the range and delete the range (aka cut) \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl y> \END_STYLE Redo \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl z> \END_STYLE Undo \END_ITEM
\ITEM Note: 'the range' in the following commands refers to the text between the mark and cursor.
\ITEM \STYLE{code} <ctrl space> \END Set mark to the cursor position
\ITEM \STYLE{code} <ctrl a> \END Replace a substring in the range
\ITEM \STYLE{code} <ctrl c> \END Copy text from the range
\ITEM \STYLE{code} <ctrl d> \END Delete the text in the range
\ITEM \STYLE{code} <ctrl e> \END Center the active view on the cursor
\ITEM \STYLE{code} <ctrl E> \END Move the view so that it's left edge is near the cursor's current x position
\ITEM \STYLE{code} <ctrl f> \END Begin an incremental search through the current buffer
\ITEM \STYLE{code} <ctrl F> \END Create a jump location list of all loaded exact matches of a string
\ITEM \STYLE{code} <alt F> \END Create a jump location list of all loaded substring matches of a string without case sensitivity
\ITEM \STYLE{code} <ctrl g> \END Goto a specific line number
\ITEM \STYLE{code} <ctrl j> \END Convert text in the range to lowercase
\ITEM \STYLE{code} <ctrl K> \END Kill the current buffer
\ITEM \STYLE{code} <ctrl l> \END Toggle line wrapping on the current buffer
\ITEM \STYLE{code} <ctrl m> \END Swap the cursor and mark positions
\ITEM \STYLE{code} <ctrl O> \END Reload the current buffer from the file system
\ITEM \STYLE{code} <ctrl q> \END Begin an iterative query replace
\ITEM \STYLE{code} <ctrl Q> \END Begin an iterative query replace to replace the word under the cursor
\ITEM \STYLE{code} <ctrl r> \END Begin a reversed incremental search through the current buffer
\ITEM \STYLE{code} <ctrl s> \END Save the current buffer with it's given filename
\ITEM \STYLE{code} <ctrl t> \END Begin an incremenal search through the current buffer for the word under the cursor
\ITEM \STYLE{code} <ctrl T> \END Create a jump location list of all loaded exact matches of the word under the cursor
\ITEM \STYLE{code} <ctrl u> \END Convert text in the range to uppercase
\ITEM \STYLE{code} <ctrl v> \END Paste from the clipboard
\ITEM \STYLE{code} <alt v> \END Toggle the virtual whitespace system
\ITEM \STYLE{code} <ctrl V> \END Paste the next item on the clipboard, 4coder keeps a finite history of past 64 copies
\ITEM \STYLE{code} <ctrl x> \END Copy text from the range and delete the range (aka cut)
\ITEM \STYLE{code} <ctrl y> \END Redo
\ITEM \STYLE{code} <ctrl z> \END Undo
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl 2> \END_STYLE Decrease the line wrap width for the current buffer \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl 3> \END_STYLE Increase the line wrap width for the current buffer \END_ITEM
\ITEM \STYLE{code} <ctrl 2> \END Decrease the line wrap width for the current buffer
\ITEM \STYLE{code} <ctrl 3> \END Increase the line wrap width for the current buffer
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl ?> \END_STYLE Toggle the show whitespace option \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl ~> \END_STYLE Clean trailing whitespace from all lines \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <return> \END_STYLE 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 \BEGIN_STYLE{code} <shift return> \END_STYLE Like previous command but tries to open the jump location in the view that currently holds the jump location list \END_ITEM
\ITEM \STYLE{code} <ctrl ?> \END Toggle the show whitespace option
\ITEM \STYLE{code} <ctrl ~> \END Clean trailing whitespace from all lines
\ITEM \STYLE{code} <return> \END 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)
\ITEM \STYLE{code} <shift return> \END Like previous command but tries to open the jump location in the view that currently holds the jump location list
\END_LIST
\END_SECTION
\END
\END
\SECTION{Code File Bindings}
The following commands only apply in C/C++ files where the lexer (syntax highlighting) is turned on.
\BEGIN_LIST
\LIST
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl right> \END_STYLE Seek right stop at alphanumeric or camel case \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl left> \END_STYLE Seek left stop at alphanumeric or camel case \END_ITEM
\ITEM \STYLE{code} <ctrl right> \END Seek right stop at alphanumeric or camel case
\ITEM \STYLE{code} <ctrl left> \END Seek left stop at alphanumeric or camel case
\BEGIN_ITEM \BEGIN_STYLE{code} <}> \END_STYLE Insert character and trigger auto indentation \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <)> \END_STYLE Insert character and trigger auto indentation \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <]> \END_STYLE Insert character and trigger auto indentation \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <;> \END_STYLE Insert character and trigger auto indentation \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <#> \END_STYLE Insert character and trigger auto indentation \END_ITEM
\ITEM \STYLE{code} <}> \END Insert character and trigger auto indentation
\ITEM \STYLE{code} <)> \END Insert character and trigger auto indentation
\ITEM \STYLE{code} <]> \END Insert character and trigger auto indentation
\ITEM \STYLE{code} <;> \END Insert character and trigger auto indentation
\ITEM \STYLE{code} <#> \END Insert character and trigger auto indentation
\BEGIN_ITEM \BEGIN_STYLE{code} <tab> \END_STYLE Automatically complete partial word \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl tab> \END_STYLE Auto indent the range \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <shift tab> \END_STYLE Auto indent the line at the cursor \END_ITEM
\ITEM \STYLE{code} <tab> \END Automatically complete partial word
\ITEM \STYLE{code} <ctrl tab> \END Auto indent the range
\ITEM \STYLE{code} <shift tab> \END Auto indent the line at the cursor
\BEGIN_ITEM \BEGIN_STYLE{code} <alt t> \END_STYLE Insert a TODO comment \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <alt y> \END_STYLE Insert a NOTE comment \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <alt r> \END_STYLE Insert a block comment \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl [> \END_STYLE Open a pair of braces \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl {> \END_STYLE Open a pair of braces ended with a semicolon \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl }> \END_STYLE Open a pair of braces ended with a break \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <alt i> \END_STYLE Surround the range with #if 0 and #endif \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <alt 1> \END_STYLE Try to open a file named by the string surrounded by quotes under the cursor \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <alt 2> \END_STYLE Switch from .cpp \BEGIN_STYLE{code} <-> \END_STYLE .h \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl 0> \END_STYLE Insert the characters " = {0};" \END_ITEM
\BEGIN_ITEM \BEGIN_STYLE{code} <ctrl I> \END_STYLE List all function signatures in the current buffer \END_ITEM
\ITEM \STYLE{code} <alt t> \END Insert a TODO comment
\ITEM \STYLE{code} <alt y> \END Insert a NOTE comment
\ITEM \STYLE{code} <alt r> \END Insert a block comment
\ITEM \STYLE{code} <ctrl [> \END Open a pair of braces
\ITEM \STYLE{code} <ctrl {> \END Open a pair of braces ended with a semicolon
\ITEM \STYLE{code} <ctrl }> \END Open a pair of braces ended with a break
\ITEM \STYLE{code} <alt i> \END Surround the range with #if 0 and #endif
\ITEM \STYLE{code} <alt 1> \END Try to open a file named by the string surrounded by quotes under the cursor
\ITEM \STYLE{code} <alt 2> \END Switch from .cpp \STYLE{code} <-> \END .h
\ITEM \STYLE{code} <ctrl 0> \END Insert the characters " = {0};"
\ITEM \STYLE{code} <ctrl I> \END List all function signatures in the current buffer
\END_LIST
\END_SECTION
\END
\END

View File

@ -1,76 +1,68 @@
\META_PARSE{custom_funcs}{4ed_api_implementation.cpp}
\META_PARSE{custom_types}{4coder_API/types.h}
\META_PARSE{string} {string/internal_4coder_string.cpp}
\META_PARSE{lexer_funcs} {4cpp/4cpp_lexer.h}
\META_PARSE{lexer_types} {4cpp/4cpp_lexer_types.h}
\BEGIN_LINK{document:home}
\IMAGE{image:4coder_logo}{width:200}
\END_LINK
\INCLUDE{site_header.txt}
\TABLE_OF_CONTENTS
\SECTION{Introduction}{introduction}
\INCLUDE{introduction.txt}
\END_SECTION
\END
\SECTION{4coder Systems}{4coder_systems}
\TODO
\END_SECTION
\END
\SECTION{Types and Functions}{types_and_functions}
\SECTION{Function List}
\DOC_LIST{custom_funcs}{mangle:to lower}
\END_SECTION
\END
\SECTION{Type List}
\DOC_LIST{custom_types}
\END_SECTION
\END
\SECTION{Function Descriptions}
\DOC_FULL{custom_funcs}{mangle:to lower}
\END_SECTION
\END
\SECTION{Type Descriptions}
\DOC_FULL{custom_types}
\END_SECTION
\END_SECTION
\END
\END
\SECTION{String Library}{string_library}
\SECTION{String Library Intro}
\TODO
\END_SECTION
\END
\SECTION{String Function List}
\DOC_LIST{string}
\END_SECTION
\END
\SECTION{String Function Descriptions}
\DOC_FULL{string}
\END_SECTION
\END_SECTION
\END
\END
\SECTION{Lexer Library}{lexer_library}
\SECTION{Lexer Intro}
\INCLUDE{lexer_introduction.txt}
\END_SECTION
\END
\SECTION{Lexer Function List}
\DOC_LIST{lexer_funcs}
\END_SECTION
\END
\SECTION{Lexer Type List}
\DOC_LIST{lexer_types}
\END_SECTION
\END
\SECTION{Lexer Function Descriptions}
\DOC_FULL{lexer_funcs}
\END_SECTION
\END
\SECTION{Lexer Type Descriptions}
\DOC_FULL{lexer_types}
\END_SECTION
\END_SECTION
\END
\END

View File

@ -1,73 +1,71 @@
\BEGIN_LINK{document:home}
\IMAGE{image:4coder_logo}{width:200}
\END_LINK
\INCLUDE{site_header.txt}
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, it might be missing from this list, or it might actually be missing from 4coder, you should contact \BEGIN_STYLE{code} editor@4coder.net \END_STYLE to ask questions and make requests.
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 \LINK{document:bindings} binding list \END. If a feature is missing here you should check out the \LINK{document:roadmap} roadmap \END page to see what is coming in the future. If the feature you want is on neither, it might be missing from this list, or it might actually be missing from 4coder, you should contact \STYLE{code} editor@4coder.net \END to ask questions and make requests.
\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
\BEGIN_ITEM Incremental word complete with matching words in open files \END_ITEM
\BEGIN_ITEM Incremental word search \END_ITEM
\BEGIN_ITEM Word replace \END_ITEM
\BEGIN_ITEM List all occurences of words in open buffers \END_ITEM
\BEGIN_ITEM Clipboard history and "paste-next" to copy multiple chunks of text around easily \END_ITEM
\END_LIST
\END_SECTION
\LIST
\ITEM Support for UTF8 encoded files
\ITEM Cursor-Mark editing paradigm
\ITEM Navigation by characters, words, tokens, lines, and blank lines
\ITEM Modern style undo and redo
\ITEM Incremental word complete with matching words in open files
\ITEM Incremental word search
\ITEM Word replace
\ITEM List all occurences of words in open buffers
\ITEM Clipboard history and "paste-next" to copy multiple chunks of text around easily
\END
\END
\SECTION{C/C++ Editing}
\BEGIN_LIST
\BEGIN_ITEM Code highlighting for C/C++ code \END_ITEM
\BEGIN_ITEM Code auto-layout rendering engine \END_ITEM
\BEGIN_ITEM Text level auto-indenting \END_ITEM
\BEGIN_ITEM Run scripts and command line commands in editor \END_ITEM
\BEGIN_ITEM Jump to error \END_ITEM
\END_LIST
\END_SECTION
\LIST
\ITEM Code highlighting for C/C++ code
\ITEM Code auto-layout rendering engine
\ITEM Text level auto-indenting
\ITEM Run scripts and command line commands in editor
\ITEM Jump to error
\END
\END
\SECTION{Project Organization}
\BEGIN_LIST
\BEGIN_ITEM Set 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
\END_SECTION
\LIST
\ITEM Set file extensions you care about in your project type to automatically open all code files
\ITEM Set shell/terminal commands to various fkeys for build scripts, test scripts etc
\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
\END
\SECTION{The Customization API}
These features are included in the alpha builds for supporters at the $5 tier and above.
\BEGIN_LIST
\BEGIN_ITEM Easy key rebinding \END_ITEM
\BEGIN_ITEM Create custom commands \END_ITEM
\BEGIN_ITEM Buffer reading and editing \END_ITEM
\BEGIN_ITEM View opening, closing, positioning \END_ITEM
\BEGIN_ITEM Access to the code intelligence engine \END_ITEM
\BEGIN_ITEM Access to the clipboard \END_ITEM
\END_LIST
\END_SECTION
\LIST
\ITEM Easy key rebinding
\ITEM Create custom commands
\ITEM Buffer reading and editing
\ITEM View opening, closing, positioning
\ITEM Access to the code intelligence engine
\ITEM Access to the clipboard
\END
\END
\SECTION{The Experimental Features}
These features are included in the alpha builds for supporters at the $10 tier and above and are generally only partially implemented, hence not being fully upgraded to the standard build.
\BEGIN_LIST
\BEGIN_ITEM Moving cursor and mark to surrounding and matching braces
\BEGIN_ITEM Rectangular delete
\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
\END_SECTION
\LIST
\ITEM Moving cursor and mark to surrounding and matching braces
\ITEM Rectangular delete
\ITEM Multi-line editing
\ITEM Rename a parameter
\ITEM Write in explicit enum values from 0 to n
\ITEM Scope aware features: scope navigation & scope absorb down
\END
\END
\SECTION{Transition From Emacs}
4coder's current setup and editing paradigm is modeled after emacs, so it is very natural to transition to 4coder from emacs for many users. 4coder customization is quite different from emacs though, so anyone who wants to keep their current keybinds will have to take the time to rewrite the keybinding code. Once the initial transition is done, any user who prefers C++ to Lisp will have a much better time in their 4coder configuration code.
\END_SECTION
\END
\SECTION{Transition From Vim}
For vim users the built-in editing paradigm will not line up with editing habits, but thanks to the open customization model, a vim paradigm and default vim key bindings can be used in 4coder. The vim customization \BEGIN_LINK{!https://github.com/Chronister/4vim} here \END_LINK is an early example of this with many basic vim systems up and running.
For vim users the built-in editing paradigm will not line up with editing habits, but thanks to the open customization model, a vim paradigm and default vim key bindings can be used in 4coder. The vim customization \LINK{!https://github.com/Chronister/4vim} here \END is an early example of this with many basic vim systems up and running.
Right now 4coder is admittedly not great for vim users, but the transition path exists so keep your eyes on 4coder as better vim emulation is still on the way.
\END_SECTION
\END

View File

@ -1,23 +1,21 @@
\BEGIN_LINK{document:home}
\IMAGE{image:4coder_logo}{width:200}
\END_LINK
\INCLUDE{site_header.txt}
4coder is a code editor that lives in a space between an IDE and a power editor such as Emacs or Vim. It targets maximum ease of customization, extension, and cross platform reliability. Earlier versions of 4coder focussed entirely on C/C++ but it is now transitioning to be a more general purpose editor. Here you can learn about the features of 4coder, how to get started with 4coder, and how to get the absolute most out of 4coder.
If you cannot find what you are looking for please contact \BEGIN_STYLE{code} editor@4coder.net \END_STYLE with questions.
If you cannot find what you are looking for please contact \STYLE{code} editor@4coder.net \END with questions.
\BEGIN_LINK{!http://patreon.com/mr4thdimention} Get an alpha build by supporting development \END_LINK
\LINK{!http://patreon.com/mr4thdimention} Get an alpha build by supporting development \END
\BEGIN_LINK{document:features} The official 4coder feature list \END_LINK
\LINK{document:features} The official 4coder feature list \END
\BEGIN_LINK{document:bindings} The list of default 4coder bindings \END_LINK
\LINK{document:bindings} The list of default 4coder bindings \END
\BEGIN_LINK{document:roadmap} The official 4coder road map \END_LINK
\LINK{document:roadmap} The official 4coder road map \END
\BEGIN_LINK{document:custom_docs} The official documentation for the 4coder customization system \END_LINK
\LINK{document:custom_docs} The official documentation for the 4coder customization system \END
\BEGIN_LINK{document:tutorials} Using 4coder tutorials \END_LINK
\LINK{document:tutorials} Using 4coder tutorials \END
\IMAGE{image:screen_1}

View File

@ -1,4 +1,4 @@
This is the documentation for \VERSION. The documentation is still under construction so some of the links are linking to sections that have not been written yet. What is here should be correct and I suspect useful even without some of the other sections.
If you have questions or discover errors please contact \BEGIN_STYLE{code}editor@4coder.net\END_STYLE or to get help from members of the 4coder and handmade network community you can post on the 4coder forums hosted at \BEGIN_STYLE{code}4coder.handmade.network\END_STYLE.
If you have questions or discover errors please contact \STYLE{code}editor@4coder.net\END or to get help from members of the 4coder and handmade network community you can post on the 4coder forums hosted at \STYLE{code}4coder.handmade.network\END.

View File

@ -1,40 +1,38 @@
\BEGIN_LINK{document:home}
\IMAGE{image:4coder_logo}{width:200}
\END_LINK
\INCLUDE{site_header.txt}
Right now I am working on upgrading some core internal systems that should buy me the flexibility I need to get the rest of the envisioned features done. Because these core upgrades are experimental in nature, it's hard to predict how long it will take before they are ready.
\SECTION{Improve the Core Buffer Systems}
\BEGIN_LIST
\BEGIN_ITEM Programmable code wrapping. \END_ITEM
\BEGIN_ITEM Virtual/Ghost text for features such as word complete and code folding. \END_ITEM
\BEGIN_ITEM Binary buffer mode. \END_ITEM
\BEGIN_ITEM Fix up the undo/redo system. \END_ITEM
\BEGIN_ITEM Expose undo/redo system in the custom layer. \END_ITEM
\END_LIST
\END_SECTION
\LIST
\ITEM Programmable code wrapping.
\ITEM Virtual/Ghost text for features such as word complete and code folding.
\ITEM Binary buffer mode.
\ITEM Fix up the undo/redo system.
\ITEM Expose undo/redo system in the custom layer.
\END
\END
\SECTION{Provide Customizations for Multiple Editing Paradgims}
\BEGIN_LIST
\BEGIN_ITEM Restructure custom layer to work as an event loop. \END_ITEM
\BEGIN_ITEM Custom layer reloading at runtime. \END_ITEM
\BEGIN_ITEM New frameworks for vim like and sublime like editing. \END_ITEM
\END_LIST
\END_SECTION
\LIST
\ITEM Restructure custom layer to work as an event loop.
\ITEM Custom layer reloading at runtime.
\ITEM New frameworks for vim like and sublime like editing.
\END
\END
\SECTION{Platform Layer Features and Porting Issues}
\BEGIN_LIST
\BEGIN_ITEM Upgrade the worker thread system to better support async and parallel solutions. \END_ITEM
\BEGIN_ITEM Support for double click opening files in an existing window. \END_ITEM
\BEGIN_ITEM Make the rendeirng system modular. \END_ITEM
\END_LIST
\END_SECTION
\LIST
\ITEM Upgrade the worker thread system to better support async and parallel solutions.
\ITEM Support for double click opening files in an existing window.
\ITEM Make the rendeirng system modular.
\END
\END
\SECTION{Buffer Driven GUI}
\BEGIN_LIST
\BEGIN_ITEM Labels, clickable buttons, text fields. \END_ITEM
\BEGIN_ITEM Tables. \END_ITEM
\BEGIN_ITEM IMGUI helper wrapper. \END_ITEM
\END_LIST
\END_SECTION
\LIST
\ITEM Labels, clickable buttons, text fields.
\ITEM Tables.
\ITEM IMGUI helper wrapper.
\END
\END

View File

@ -0,0 +1,12 @@
\META_PARSE{custom_funcs}{4ed_api_implementation.cpp}
\META_PARSE{custom_types}{4coder_API/types.h}
\META_PARSE{string} {string/internal_4coder_string.cpp}
\META_PARSE{lexer_funcs} {4cpp/4cpp_lexer.h}
\META_PARSE{lexer_types} {4cpp/4cpp_lexer_types.h}
\LINK{document:home}
\IMAGE{image:4coder_logo}{width:200}
\END

View File

@ -1,7 +1,5 @@
\BEGIN_LINK{document:home}
\IMAGE{image:4coder_logo}{width:200}
\END_LINK
\INCLUDE{site_header.txt}
Getting started with 4coder and navigating your files: