Merge with mac changes
commit
9a36222662
|
@ -1,4 +1,3 @@
|
|||
|
||||
#if !defined(FCODER_TYPES_H)
|
||||
#define FCODER_TYPES_H
|
||||
|
||||
|
@ -188,6 +187,8 @@ ENUM(uint32_t, Buffer_Create_Flag){
|
|||
BufferCreate_MustAttachToFile = 0x10,
|
||||
/* DOC(Indicates that when create_buffer searches for already existing buffers that match the name parameter, it should only search by buffer name, and that it should not attach a file to the buffer even if it can. Caution! Buffers that don't have attached files cannot be saved.) */
|
||||
BufferCreate_NeverAttachToFile = 0x20,
|
||||
/* DOC(Normally the new file hook is called on any created buffer. Passing this flag will prevent the new file hook from being called automatically by the core.) */
|
||||
BufferCreate_SuppressNewFileHook = 0x40,
|
||||
};
|
||||
|
||||
/* DOC(Buffer_Creation_Data is a struct used as a local handle for the creation of a buffer. )
|
||||
|
@ -211,10 +212,16 @@ ENUM(uint32_t, Buffer_Kill_Flag){
|
|||
BufferKill_AlwaysKill = 0x2,
|
||||
};
|
||||
|
||||
/* DOC(A status enumeration returned by kill_buffer.)
|
||||
DOC_SEE(kill_buffer) */
|
||||
ENUM(int32_t, Buffer_Kill_Result){
|
||||
/* DOC(The buffer was successfully killed.) */
|
||||
BufferKillResult_Killed = 0,
|
||||
/* DOC(The buffer was not killed because it is dirty. This can be overriden with the flag BufferKill_AlwaysKill. This result is usually followed up by launching a "sure to kill" dialogue, but that is entirely optional.) */
|
||||
BufferKillResult_Dirty = 1,
|
||||
/* DOC(The buffer was not killed because it is unkillable. Unkillable buffers are the buffers that must be open for the core's purposes. *messages* and *scratch* are unkillable buffers.) */
|
||||
BufferKillResult_Unkillable = 2,
|
||||
/* DOC(The specified buffer does not exist.) */
|
||||
BufferKillResult_DoesNotExist = 3,
|
||||
};
|
||||
|
||||
|
@ -310,7 +317,8 @@ ENUM(int32_t, Mouse_Cursor_Show_Type){
|
|||
MouseCursorShow_Never,
|
||||
/* DOC(The MouseCursorShow_Never mode always shows the cursor.) */
|
||||
MouseCursorShow_Always,
|
||||
// MouseCursorShow_WhenActive,// TODO(allen): coming soon
|
||||
// TODO(allen): coming soon
|
||||
// MouseCursorShow_WhenActive,
|
||||
};
|
||||
|
||||
/* DOC(A View_Split_Position specifies where a new view should be placed as a result of a view split operation.) */
|
||||
|
@ -381,7 +389,7 @@ STRUCT Mouse_State{
|
|||
|
||||
GLOBAL_VAR Mouse_State null_mouse_state = {0};
|
||||
|
||||
/* DOC(Range describes an integer range typically used for ranges within a buffer. Ranges tend are usually not passed as a Range struct into the API, but this struct is used to return ranges.
|
||||
/* DOC(Range describes an integer range typically used for ranges within a buffer. Ranges are not used to pass into the API, but this struct is used for returns.
|
||||
|
||||
Throughout the API ranges are thought of in the form [min,max) where max is "one past the end" of the range that is actually read/edited/modified.) */
|
||||
UNION Range{
|
||||
|
@ -405,8 +413,11 @@ UNION Range{
|
|||
};
|
||||
};
|
||||
|
||||
/* DOC(An array of ranges. This is just a plain pointer bundled with a count, no additional special structure.) */
|
||||
STRUCT Range_Array{
|
||||
/* DOC(A pointer to the array of ranges.) */
|
||||
Range *ranges;
|
||||
/* DOC(The number of ranges in the array.) */
|
||||
int32_t count;
|
||||
};
|
||||
|
||||
|
@ -679,55 +690,127 @@ STRUCT View_Summary{
|
|||
GUI_Scroll_Vars scroll_vars;
|
||||
};
|
||||
|
||||
/* DOC(The enumeration of types of managed objects.) */
|
||||
ENUM(int32_t, Managed_Object_Type)
|
||||
{
|
||||
/* DOC(This type value indicates that the specified object for an operation is not a valid managed object.
|
||||
A handle for a managed object can "go bad" when it's scope is cleared, or when it is freed, so it is possible to store handles and check them for validity on use. However, all managed object APIs do the necessary checks on their parameters and return appropriate failure results on bad handles.) */
|
||||
ManagedObjectType_Error = 0,
|
||||
/* DOC(A memory object is used for straightforward memory allocation in a managed scope. These objects have no special cleanup, no extra operations, and their memory storage is never touched by the core.) */
|
||||
ManagedObjectType_Memory = 1,
|
||||
/* DOC(A marker object is used to place markers into buffers that move along with the text upon which they are placed. A marker object has a specific buffer to which it is attached, and must be allocated in a scope dependent upon the lifetime of that buffer. Marker objects always use the Marker type for their items, and their item size is always sizeof(Marker). When a marker object is freed, all of the marker visuals attached to it are also freed and the specific buffer of the object no longer adjusts the marker data when edits occur.) */
|
||||
ManagedObjectType_Markers = 2,
|
||||
ManagedObjectType_COUNT = 3,
|
||||
};
|
||||
|
||||
/* DOC(A handle to a managed scope. A managed scope contains variables and objects all of which can be freed and reset in optimized bulk operations. Many managed scopes are created and destroyed by the core to track the lifetime of entities like buffers and views. Because a managed scope contains it's own copy of the managed variables, managed scopes can also be used as a keying mechanism to store and retrieve special information related to entities like buffers and views.) */
|
||||
TYPEDEF uint64_t Managed_Scope;
|
||||
|
||||
/* DOC(An id refering to a managed variable. Managed variables are created globally, but each managed scope has it's own set of values for the managed variables. Managed variables are created via a unique string. Attempting to create a variable with the same name as an existing variable fails. When naming variables it is recommended that you place a 'module name' followed by a '.' and then a descriptive variable name to distinguish your variables from variables written by other 4coder users that might someday need to work together in the same configuration. Example: "MyUniqueCustomization.variable_name"). The variable's id is used to set and get the value from managed scopes. */
|
||||
TYPEDEF int32_t Managed_Variable_ID;
|
||||
|
||||
/* DOC(A handle to a managed object. Managed objects have various behaviors and special uses depending on their type. All managed objects share the property of being tied to a managed scope, so that they are cleaned up and freed when that scope's contents are cleared or when the scope is destroyed, they all support store and load operations, although not all with the exact same meanings and implications, and they can all be freed individually instead of with the entire scope.) */
|
||||
TYPEDEF uint64_t Managed_Object;
|
||||
|
||||
static Managed_Scope ManagedScope_NULL = 0;
|
||||
static Managed_Variable_ID ManagedVariableIndex_ERROR = -1;
|
||||
static Managed_Object ManagedObject_NULL = 0;
|
||||
|
||||
/* DOC(A multi-member identifier for a marker visual. A marker visual is attached to a marker object (Marker_Object), it is freed when the marker object is freed or when it is specifically destroyed. Multiple marker visuals can be placed on a single marker object.)
|
||||
DOC_SEE(Marker_Visual_Type)
|
||||
DOC_SEE(Marker_Visual_Symbolic_Color)
|
||||
DOC_SEE(Marker_Visual_Text_Style)
|
||||
DOC_SEE(Marker_Visual_Take_Rule)
|
||||
DOC_SEE(Marker_Visual_Priority_Level)
|
||||
*/
|
||||
STRUCT Marker_Visual{
|
||||
Managed_Scope scope;
|
||||
uint32_t slot_id;
|
||||
uint32_t gen_id;
|
||||
};
|
||||
|
||||
/*
|
||||
DOC(The enumeration of visual effects that a marker visual can create. All effects have a color aspect and text_color aspect. The exact meaning of these aspects depends upon the effect's type.
|
||||
|
||||
There are several effect styles, two effect styles never conflict with one another, each style can be applied to each character. If two effects of the same style are applied to the same character, then the effect with the higher priority is rendered, and the lower priority effect is ignored. The render order for effects is:
|
||||
|
||||
Highlight Style
|
||||
|
||||
Wire Frame Style
|
||||
|
||||
I-Bar Style
|
||||
|
||||
Some effects are character oriented, meaning they have an effect on the individual character/characters that the markers specify. Other effects are line oriented, meaning that they effect the entire line on which their markers are placed. Line oriented highlight style effects are always overriden by character oriented highlight style effects of the same style, regardless of relative priority levels.
|
||||
|
||||
Single marked effects use each marker to specify a single point at which an effect is applied. Range marked effects take pairs of markers to specify a left inclusive right eclusive range to effect.
|
||||
|
||||
In range marked effects, two conflicting effects with the same priority level are further resolved by prefering the effect with the higher-index starting position. This means that if range A completely contains range B and they have the same priority level, then range B will be visible, and range A will be visible wherever range B is not.
|
||||
)
|
||||
*/
|
||||
ENUM(int32_t, Marker_Visual_Type)
|
||||
{
|
||||
/* DOC(No visual effect, with this type it is as if the marker visual does not exist.) */
|
||||
VisualType_Invisible = 0,
|
||||
/* DOC(Shows a block around the background of each marked character. The color aspect determines the color of the block behind the characters, the text_color aspect determines the color of the characters.
|
||||
|
||||
This is a character oriented highlight style single marked effect.) */
|
||||
VisualType_CharacterBlocks = 1,
|
||||
/* DOC(Shows a rectangle outline around each marked character. The color aspect determines the color of the rectangle, the text_color aspect is ignored.
|
||||
|
||||
This is a character oriented wire frame style single marked effect.) */
|
||||
VisualType_CharacterWireFrames = 2,
|
||||
/* DOC(Shows a single pixel line on the left side of each marked character. The color aspect determines the color of the line, the text_color aspect is ignored.
|
||||
|
||||
This is a character oriented wire frame style single marked effect.) */
|
||||
VisualType_CharacterIBars = 3,
|
||||
/* DOC(Shows a block in the background of the entire line on which the marker is placed. The color aspect determines the color of the highlight, the text_color aspect is ignored.
|
||||
|
||||
This is a line oriented highlight style single marked effect.) */
|
||||
VisualType_LineHighlights = 4,
|
||||
/* DOC(Shows a block around the background of each character between the range pairs. The color aspect determines the color of the highlight, the text_color aspect is ignored.
|
||||
|
||||
This is a character oriented highlight style range marked effect.) */
|
||||
VisualType_CharacterHighlightRanges = 5,
|
||||
/* DOC(Shows a block in the background of the entire line on each line within the range. The color aspect determines the color of the highlight, the text_color aspect is ignored.
|
||||
|
||||
This is a line oriented highlight style range marked effect.) */
|
||||
VisualType_LineHighlightRanges = 6,
|
||||
VisualType_COUNT = 7,
|
||||
};
|
||||
|
||||
/* DOC(Special codes that can be used as the color aspects of marker visual effects. These special codes are for convenience and in some cases effects that could not be expressed as 32-bit colors.) */
|
||||
ENUM(uint32_t, Marker_Visual_Symbolic_Color)
|
||||
{
|
||||
/* DOC(When default is used for text_color aspect, the text is unchanged from the coloring the core would apply to it. For all effects, the default value of the color aspect for all effects is the same as transparent. For convenience it is guaranteed this will always be the zero value, so that users may simply pass 0 to color aspects they do not wish to set.) */
|
||||
SymbolicColor_Default = 0,
|
||||
/* DOC(Since all symbolic color codes have their alpha channel set to zero, this code is reserved to get the effect one would get for using a tranparent 32-bit color.) */
|
||||
SymbolicColor_Transparent = 1,
|
||||
/* DOC(This flag bit-ored with a style tag will be reevaluated at render time to the color of the specific tag in the currently active palette. The macro SymbolicColorFromPalette(Stag_CODE) applies the bit-or to Stag_CODE. For example SymbolicColorFromPalette(Stag_Cursor) will always evaluate to the color of the current cursor. Note that this evaluation happens at render time, so that if the palette changes, the evaluated color will also change.) */
|
||||
SymbolicColor__StagColorFlag = 0x00800000,
|
||||
};
|
||||
#define SymbolicColorFromPalette(x) ((x)|SymbolicColor__StagColorFlag)
|
||||
|
||||
/* DOC(Not implemented, but reserved for future use. Where this type is used in the API the value passed should always be zero for now.) */
|
||||
ENUM(int32_t, Marker_Visual_Text_Style)
|
||||
{
|
||||
MARKER_TEXT_STYLE_NOT_YET_IMPLEMENTED,
|
||||
};
|
||||
|
||||
/* DOC(The take rule of a marker visual specifies how to iterate the markers in the marker object when applying the visual effect. For range marked effects, which use a pair of markers to specify a left inclusive right exclusive range, it is not necessary that two markers be adjacent in the marker object when they are taken. The first taken marker is paired to the second taken marker, the third to the fourth, etc, regardless of any gaps between the consecutively taken markers. If the take rule overflows the marker object, the effect is still applied, but the iteration is cut short as soon as it would overflow.) */
|
||||
STRUCT Marker_Visual_Take_Rule{
|
||||
/* DOC(The index of the first marker to take. Indices are zero based. The default value is zero.) */
|
||||
int32_t first_index;
|
||||
/* DOC(From the start of a "step" take_count_per_step markers. Markers taken in the same step have consectuive indices. For example, if the first marker taken has index = 0, and the take_count_per_step = 2, then the second marker taken will have index = 1. The default value is 1.) */
|
||||
int32_t take_count_per_step;
|
||||
/* DOC(The stride between each "step". After taking take_count_per_step markers from the current step, the iteation advances to the next step counting from the start of current step. So if 2 markers are taken per step, and the stride is 3, then the pattern of taken markers will be **.**.**.**. where * is a tken marker. The core automatically adjusts this field to be at least equal to take_count_per_step before using it to iterate. The default value is 1.) */
|
||||
int32_t step_stride_in_marker_count;
|
||||
/* DOC(The maximum number of markers to be taken durring iteration. Since overflow does not cause the visual effect to fail, and is prevented internally, this field can be set to the max value of a signed 32-bit integer and will take as many markers as possible until it hits the end of the marker object. If the maximum count is reached mid-step, the iteration stops without completeing the step.) */
|
||||
int32_t maximum_number_of_markers;
|
||||
};
|
||||
|
||||
/* DOC(A helper enumeration for common priority levels. Although any unsigned integer is a valid priority level, the following five levels are used to establish a standard convention. Highest priority is given to effects immediately at the cursor, mark, and highlighted range. Default priority is given to actively attached effects like compilation error highlights. Passive effects like scope highlighting go to Lowest priority.
|
||||
|
||||
This system is considered a temporary measure and will eventually be replaced with a priority level brokering system to enable cooperation between modules [note made 4.0.29].) */
|
||||
ENUM(uint32_t, Marker_Visual_Priority_Level){
|
||||
VisualPriority_Lowest = 0,
|
||||
VisualPriority_Low = 1000,
|
||||
|
@ -744,59 +827,86 @@ STRUCT Query_Bar{
|
|||
String string;
|
||||
};
|
||||
|
||||
/* DOC(An enumeration of the types of UI widget items that can be placed in a UI.) */
|
||||
ENUM(int16_t, UI_Item_Type){
|
||||
/* DOC(An 'option' is a rectangle with a margin that can be highlighted, and a main string in default text color, and a secondary string in pop2 color, on a single line centered vertically in the item rectangle.) */
|
||||
UIType_Option = 0,
|
||||
/* DOC(A 'text field' is a rectangle with a query string in pop1 color, and a main string in default text color, on a single line centered verticall in the item rectangle.) */
|
||||
UIType_TextField = 1,
|
||||
/* DOC(A 'color theme' is a rectangle that ignores the active color palette and previews a specified color palette, with a specified string on the first line. This item is particularly meant for creating the color theme lister, but could be reused for anything, however there is no way to remove all the sample text in the widget added alongside the main string.) */
|
||||
UIType_ColorTheme = 2,
|
||||
};
|
||||
|
||||
/* DOC(An enumeration of the levels of activation that can be placed on an item in a UI, this can effect the appearance of some widgets.) */
|
||||
ENUM(int8_t, UI_Activation_Level){
|
||||
UIActivation_None = 0,
|
||||
UIActivation_Hover = 1,
|
||||
UIActivation_Active = 2,
|
||||
};
|
||||
|
||||
/* DOC(An enumeration of the coordinate systems in which an item's rectangle can be specified. This is not always a convenience feature as it means after scrolling the widget data does not necessarily needed to be updated, thus saving extra work. All coordiante systems are in pixels, with y increasing downward, and x increasing rightward.) */
|
||||
ENUM(int8_t, UI_Coordinate_System){
|
||||
/* DOC(The 'scrolled' coordiante system is effected by the scroll value of the view. If the y scroll value is at 100 and an item is placed with a vertical range from 50 to 90, the item is not visible. When the y scroll value is at 0, this coordinate system aligns with the view relative coordiante system.) */
|
||||
UICoordinates_Scrolled = 0,
|
||||
/* DOC(The 'view relative' coordiante system is only effected by the screen coordinates of the view. (0,0) is always the top left corner of space inside the view margin.) */
|
||||
UICoordinates_ViewRelative = 1,
|
||||
UICoordinates_COUNT = 2,
|
||||
};
|
||||
|
||||
/* DOC(A UI_Item is essentially the data to specify a single widget. The exact appearance and qualities of a displayed widget are determined by the item's type.)
|
||||
DOC_SEE(UI_Item_Type)
|
||||
DOC_SEE(UI_Activation_Level)
|
||||
DOC_SEE(UI_Coordinate_System)
|
||||
*/
|
||||
STRUCT UI_Item{
|
||||
/* DOC(The type of the item.) */
|
||||
UI_Item_Type type;
|
||||
/* DOC(The activation level of the item.) */
|
||||
UI_Activation_Level activation_level;
|
||||
/* DOC(The coordinate system in which the item's rectanlge is expressed.) */
|
||||
UI_Coordinate_System coordinates;
|
||||
/* DOC(The rectangle of an item, combined with it's coordinate system, specify where on the screen the widget will be rendered.) */
|
||||
i32_Rect rectangle;
|
||||
// 32-bits of padding to fill here
|
||||
union{
|
||||
struct{
|
||||
/* DOC(The main string of an 'option' widget.) */
|
||||
String string;
|
||||
/* DOC(The secondary string of an 'option' widget.) */
|
||||
String status;
|
||||
} option;
|
||||
struct{
|
||||
/* DOC(The query string of a 'text field' widget.) */
|
||||
String query;
|
||||
/* DOC(The main string of an 'text field' widget.) */
|
||||
String string;
|
||||
} text_field;
|
||||
struct{
|
||||
/* DOC(The custom first line string of the color theme preview block.) */
|
||||
String string;
|
||||
/* DOC(The index of the color theme to be used with the preview block.) */
|
||||
int32_t index;
|
||||
} color_theme;
|
||||
};
|
||||
/* DOC(All items can have an attached user_data pointer to associate the item back to whatever user space data or object is needed for interactign with the item.) */
|
||||
void *user_data;
|
||||
i32_Rect rectangle;
|
||||
};
|
||||
|
||||
/* DOC(Wraps a UI_Item in a doubly linked list node.) */
|
||||
STRUCT UI_Item_Node{
|
||||
UI_Item_Node *next;
|
||||
UI_Item_Node *prev;
|
||||
UI_Item fixed;
|
||||
};
|
||||
|
||||
/* DOC(A zero-ended doubly linked list object.) */
|
||||
STRUCT UI_List{
|
||||
UI_Item_Node *first;
|
||||
UI_Item_Node *last;
|
||||
int32_t count;
|
||||
};
|
||||
|
||||
/* DOC(An array of UI_Items and a set of bounding boxes that store the union item rectangle per coordiante system, used to optimize activation and re-render operations.) */
|
||||
STRUCT UI_Control{
|
||||
UI_Item *items;
|
||||
int32_t count;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
config := [version] {assignment}
|
||||
sconfig := [version] {assignment}
|
||||
|
||||
version := "version" "(" INTEGER ")" ";"
|
||||
assignment := lvalue "=" rvalue ";"
|
||||
|
|
|
@ -45,21 +45,35 @@ COMMAND_CALLER_HOOK(default_command_caller){
|
|||
Managed_Scope scope = view_get_managed_scope(app, view.view_id);
|
||||
managed_variable_set(app, scope, view_next_rewrite_loc, 0);
|
||||
if (fcoder_mode == FCoderMode_NotepadLike){
|
||||
managed_variable_set(app, scope, view_snap_mark_to_cursor, true);
|
||||
for (View_Summary view_it = get_view_first(app, AccessAll);
|
||||
view_it.exists;
|
||||
get_view_next(app, &view_it, AccessAll)){
|
||||
Managed_Scope scope_it = view_get_managed_scope(app, view_it.view_id);
|
||||
managed_variable_set(app, scope_it, view_snap_mark_to_cursor, true);
|
||||
}
|
||||
}
|
||||
|
||||
////
|
||||
exec_command(app, cmd);
|
||||
////
|
||||
|
||||
uint64_t next_rewrite = 0;
|
||||
managed_variable_get(app, scope, view_next_rewrite_loc, &next_rewrite);
|
||||
managed_variable_set(app, scope, view_rewrite_loc, next_rewrite);
|
||||
if (fcoder_mode == FCoderMode_NotepadLike){
|
||||
uint64_t val = 0;
|
||||
if (managed_variable_get(app, scope, view_snap_mark_to_cursor, &val)){
|
||||
if (val != 0){
|
||||
view = get_view(app, view.view_id, AccessAll);
|
||||
view_set_mark(app, &view, seek_pos(view.cursor.pos));
|
||||
for (View_Summary view_it = get_view_first(app, AccessAll);
|
||||
view_it.exists;
|
||||
get_view_next(app, &view_it, AccessAll)){
|
||||
Managed_Scope scope_it = view_get_managed_scope(app, view_it.view_id);
|
||||
uint64_t val = 0;
|
||||
if (managed_variable_get(app, scope_it, view_snap_mark_to_cursor, &val)){
|
||||
if (val != 0){
|
||||
view_set_mark(app, &view_it, seek_pos(view_it.cursor.pos));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
|
@ -318,7 +332,7 @@ RENDER_CALLER_SIG(default_render_caller){
|
|||
}
|
||||
|
||||
// NOTE(allen): Line highlight setup
|
||||
if (highlight_line_at_cursor){
|
||||
if (highlight_line_at_cursor && is_active_view){
|
||||
Theme_Color color = {0};
|
||||
color.tag = Stag_Highlight_Cursor_Line;
|
||||
get_theme_colors(app, &color, 1);
|
||||
|
@ -690,9 +704,11 @@ OPEN_FILE_HOOK_SIG(default_file_settings){
|
|||
}
|
||||
|
||||
OPEN_FILE_HOOK_SIG(default_new_file){
|
||||
#if 0
|
||||
Buffer_Summary buffer = get_buffer(app, buffer_id, AccessOpen);
|
||||
char str[] = "/*\nNew File\n*/\n\n\n";
|
||||
buffer_replace_range(app, &buffer, 0, 0, str, sizeof(str)-1);
|
||||
#endif
|
||||
|
||||
// no meaning for return
|
||||
return(0);
|
||||
|
|
|
@ -79,6 +79,7 @@ struct Application_Links;
|
|||
#define MANAGED_OBJECT_LOAD_DATA_SIG(n) bool32 n(Application_Links *app, Managed_Object object, uint32_t first_index, uint32_t count, void *mem_out)
|
||||
#define GET_USER_INPUT_SIG(n) User_Input n(Application_Links *app, Input_Type_Flag get_type, Input_Type_Flag abort_type)
|
||||
#define GET_COMMAND_INPUT_SIG(n) User_Input n(Application_Links *app)
|
||||
#define SET_COMMAND_INPUT_SIG(n) void n(Application_Links *app, Key_Event_Data key_data)
|
||||
#define GET_MOUSE_STATE_SIG(n) Mouse_State n(Application_Links *app)
|
||||
#define START_QUERY_BAR_SIG(n) bool32 n(Application_Links *app, Query_Bar *bar, uint32_t flags)
|
||||
#define END_QUERY_BAR_SIG(n) void n(Application_Links *app, Query_Bar *bar, uint32_t flags)
|
||||
|
@ -196,6 +197,7 @@ typedef MANAGED_OBJECT_STORE_DATA_SIG(Managed_Object_Store_Data_Function);
|
|||
typedef MANAGED_OBJECT_LOAD_DATA_SIG(Managed_Object_Load_Data_Function);
|
||||
typedef GET_USER_INPUT_SIG(Get_User_Input_Function);
|
||||
typedef GET_COMMAND_INPUT_SIG(Get_Command_Input_Function);
|
||||
typedef SET_COMMAND_INPUT_SIG(Set_Command_Input_Function);
|
||||
typedef GET_MOUSE_STATE_SIG(Get_Mouse_State_Function);
|
||||
typedef START_QUERY_BAR_SIG(Start_Query_Bar_Function);
|
||||
typedef END_QUERY_BAR_SIG(End_Query_Bar_Function);
|
||||
|
@ -315,6 +317,7 @@ Managed_Object_Store_Data_Function *managed_object_store_data;
|
|||
Managed_Object_Load_Data_Function *managed_object_load_data;
|
||||
Get_User_Input_Function *get_user_input;
|
||||
Get_Command_Input_Function *get_command_input;
|
||||
Set_Command_Input_Function *set_command_input;
|
||||
Get_Mouse_State_Function *get_mouse_state;
|
||||
Start_Query_Bar_Function *start_query_bar;
|
||||
End_Query_Bar_Function *end_query_bar;
|
||||
|
@ -433,6 +436,7 @@ Managed_Object_Store_Data_Function *managed_object_store_data_;
|
|||
Managed_Object_Load_Data_Function *managed_object_load_data_;
|
||||
Get_User_Input_Function *get_user_input_;
|
||||
Get_Command_Input_Function *get_command_input_;
|
||||
Set_Command_Input_Function *set_command_input_;
|
||||
Get_Mouse_State_Function *get_mouse_state_;
|
||||
Start_Query_Bar_Function *start_query_bar_;
|
||||
End_Query_Bar_Function *end_query_bar_;
|
||||
|
@ -559,6 +563,7 @@ app_links->managed_object_store_data_ = Managed_Object_Store_Data;\
|
|||
app_links->managed_object_load_data_ = Managed_Object_Load_Data;\
|
||||
app_links->get_user_input_ = Get_User_Input;\
|
||||
app_links->get_command_input_ = Get_Command_Input;\
|
||||
app_links->set_command_input_ = Set_Command_Input;\
|
||||
app_links->get_mouse_state_ = Get_Mouse_State;\
|
||||
app_links->start_query_bar_ = Start_Query_Bar;\
|
||||
app_links->end_query_bar_ = End_Query_Bar;\
|
||||
|
@ -677,6 +682,7 @@ static inline bool32 managed_object_store_data(Application_Links *app, Managed_O
|
|||
static inline bool32 managed_object_load_data(Application_Links *app, Managed_Object object, uint32_t first_index, uint32_t count, void *mem_out){return(app->managed_object_load_data(app, object, first_index, count, mem_out));}
|
||||
static inline User_Input get_user_input(Application_Links *app, Input_Type_Flag get_type, Input_Type_Flag abort_type){return(app->get_user_input(app, get_type, abort_type));}
|
||||
static inline User_Input get_command_input(Application_Links *app){return(app->get_command_input(app));}
|
||||
static inline void set_command_input(Application_Links *app, Key_Event_Data key_data){(app->set_command_input(app, key_data));}
|
||||
static inline Mouse_State get_mouse_state(Application_Links *app){return(app->get_mouse_state(app));}
|
||||
static inline bool32 start_query_bar(Application_Links *app, Query_Bar *bar, uint32_t flags){return(app->start_query_bar(app, bar, flags));}
|
||||
static inline void end_query_bar(Application_Links *app, Query_Bar *bar, uint32_t flags){(app->end_query_bar(app, bar, flags));}
|
||||
|
@ -795,6 +801,7 @@ static inline bool32 managed_object_store_data(Application_Links *app, Managed_O
|
|||
static inline bool32 managed_object_load_data(Application_Links *app, Managed_Object object, uint32_t first_index, uint32_t count, void *mem_out){return(app->managed_object_load_data_(app, object, first_index, count, mem_out));}
|
||||
static inline User_Input get_user_input(Application_Links *app, Input_Type_Flag get_type, Input_Type_Flag abort_type){return(app->get_user_input_(app, get_type, abort_type));}
|
||||
static inline User_Input get_command_input(Application_Links *app){return(app->get_command_input_(app));}
|
||||
static inline void set_command_input(Application_Links *app, Key_Event_Data key_data){(app->set_command_input_(app, key_data));}
|
||||
static inline Mouse_State get_mouse_state(Application_Links *app){return(app->get_mouse_state_(app));}
|
||||
static inline bool32 start_query_bar(Application_Links *app, Query_Bar *bar, uint32_t flags){return(app->start_query_bar_(app, bar, flags));}
|
||||
static inline void end_query_bar(Application_Links *app, Query_Bar *bar, uint32_t flags){(app->end_query_bar_(app, bar, flags));}
|
||||
|
|
|
@ -1,673 +0,0 @@
|
|||
#if !defined(META_PASS)
|
||||
#define command_id(c) (fcoder_metacmd_ID_##c)
|
||||
#define command_metadata(c) (&fcoder_metacmd_table[command_id(c)])
|
||||
#define command_metadata_by_id(id) (&fcoder_metacmd_table[id])
|
||||
#define command_one_past_last_id 216
|
||||
#if defined(CUSTOM_COMMAND_SIG)
|
||||
#define PROC_LINKS(x,y) x
|
||||
#else
|
||||
#define PROC_LINKS(x,y) y
|
||||
#endif
|
||||
#if defined(CUSTOM_COMMAND_SIG)
|
||||
CUSTOM_COMMAND_SIG(allow_mouse);
|
||||
CUSTOM_COMMAND_SIG(auto_tab_line_at_cursor);
|
||||
CUSTOM_COMMAND_SIG(auto_tab_range);
|
||||
CUSTOM_COMMAND_SIG(auto_tab_whole_file);
|
||||
CUSTOM_COMMAND_SIG(backspace_char);
|
||||
CUSTOM_COMMAND_SIG(backspace_word);
|
||||
CUSTOM_COMMAND_SIG(basic_change_active_panel);
|
||||
CUSTOM_COMMAND_SIG(build_in_build_panel);
|
||||
CUSTOM_COMMAND_SIG(build_search);
|
||||
CUSTOM_COMMAND_SIG(center_view);
|
||||
CUSTOM_COMMAND_SIG(change_active_panel);
|
||||
CUSTOM_COMMAND_SIG(change_active_panel_backwards);
|
||||
CUSTOM_COMMAND_SIG(change_to_build_panel);
|
||||
CUSTOM_COMMAND_SIG(clean_all_lines);
|
||||
CUSTOM_COMMAND_SIG(click_set_cursor);
|
||||
CUSTOM_COMMAND_SIG(click_set_cursor_and_mark);
|
||||
CUSTOM_COMMAND_SIG(click_set_cursor_if_lbutton);
|
||||
CUSTOM_COMMAND_SIG(click_set_mark);
|
||||
CUSTOM_COMMAND_SIG(close_all_code);
|
||||
CUSTOM_COMMAND_SIG(close_build_panel);
|
||||
CUSTOM_COMMAND_SIG(close_panel);
|
||||
CUSTOM_COMMAND_SIG(command_lister);
|
||||
CUSTOM_COMMAND_SIG(copy);
|
||||
CUSTOM_COMMAND_SIG(cursor_mark_swap);
|
||||
CUSTOM_COMMAND_SIG(cut);
|
||||
CUSTOM_COMMAND_SIG(decrease_face_size);
|
||||
CUSTOM_COMMAND_SIG(decrease_line_wrap);
|
||||
CUSTOM_COMMAND_SIG(delete_char);
|
||||
CUSTOM_COMMAND_SIG(delete_current_scope);
|
||||
CUSTOM_COMMAND_SIG(delete_file_query);
|
||||
CUSTOM_COMMAND_SIG(delete_line);
|
||||
CUSTOM_COMMAND_SIG(delete_range);
|
||||
CUSTOM_COMMAND_SIG(delete_word);
|
||||
CUSTOM_COMMAND_SIG(duplicate_line);
|
||||
CUSTOM_COMMAND_SIG(eol_dosify);
|
||||
CUSTOM_COMMAND_SIG(eol_nixify);
|
||||
CUSTOM_COMMAND_SIG(execute_any_cli);
|
||||
CUSTOM_COMMAND_SIG(execute_previous_cli);
|
||||
CUSTOM_COMMAND_SIG(exit_4coder);
|
||||
CUSTOM_COMMAND_SIG(goto_beginning_of_file);
|
||||
CUSTOM_COMMAND_SIG(goto_end_of_file);
|
||||
CUSTOM_COMMAND_SIG(goto_first_jump_direct);
|
||||
CUSTOM_COMMAND_SIG(goto_first_jump_same_panel_sticky);
|
||||
CUSTOM_COMMAND_SIG(goto_first_jump_sticky);
|
||||
CUSTOM_COMMAND_SIG(goto_jump_at_cursor_direct);
|
||||
CUSTOM_COMMAND_SIG(goto_jump_at_cursor_same_panel_direct);
|
||||
CUSTOM_COMMAND_SIG(goto_jump_at_cursor_same_panel_sticky);
|
||||
CUSTOM_COMMAND_SIG(goto_jump_at_cursor_sticky);
|
||||
CUSTOM_COMMAND_SIG(goto_line);
|
||||
CUSTOM_COMMAND_SIG(goto_next_jump_direct);
|
||||
CUSTOM_COMMAND_SIG(goto_next_jump_no_skips_direct);
|
||||
CUSTOM_COMMAND_SIG(goto_next_jump_no_skips_sticky);
|
||||
CUSTOM_COMMAND_SIG(goto_next_jump_sticky);
|
||||
CUSTOM_COMMAND_SIG(goto_prev_jump_direct);
|
||||
CUSTOM_COMMAND_SIG(goto_prev_jump_no_skips_direct);
|
||||
CUSTOM_COMMAND_SIG(goto_prev_jump_no_skips_sticky);
|
||||
CUSTOM_COMMAND_SIG(goto_prev_jump_sticky);
|
||||
CUSTOM_COMMAND_SIG(hide_filebar);
|
||||
CUSTOM_COMMAND_SIG(hide_scrollbar);
|
||||
CUSTOM_COMMAND_SIG(highlight_next_scope_absolute);
|
||||
CUSTOM_COMMAND_SIG(highlight_prev_scope_absolute);
|
||||
CUSTOM_COMMAND_SIG(highlight_surrounding_scope);
|
||||
CUSTOM_COMMAND_SIG(if0_off);
|
||||
CUSTOM_COMMAND_SIG(increase_face_size);
|
||||
CUSTOM_COMMAND_SIG(increase_line_wrap);
|
||||
CUSTOM_COMMAND_SIG(interactive_kill_buffer);
|
||||
CUSTOM_COMMAND_SIG(interactive_new);
|
||||
CUSTOM_COMMAND_SIG(interactive_open);
|
||||
CUSTOM_COMMAND_SIG(interactive_open_or_new);
|
||||
CUSTOM_COMMAND_SIG(interactive_switch_buffer);
|
||||
CUSTOM_COMMAND_SIG(kill_buffer);
|
||||
CUSTOM_COMMAND_SIG(left_adjust_view);
|
||||
CUSTOM_COMMAND_SIG(list_all_functions_all_buffers);
|
||||
CUSTOM_COMMAND_SIG(list_all_functions_all_buffers_lister);
|
||||
CUSTOM_COMMAND_SIG(list_all_functions_current_buffer);
|
||||
CUSTOM_COMMAND_SIG(list_all_functions_current_buffer_lister);
|
||||
CUSTOM_COMMAND_SIG(list_all_locations);
|
||||
CUSTOM_COMMAND_SIG(list_all_locations_case_insensitive);
|
||||
CUSTOM_COMMAND_SIG(list_all_locations_of_identifier);
|
||||
CUSTOM_COMMAND_SIG(list_all_locations_of_identifier_case_insensitive);
|
||||
CUSTOM_COMMAND_SIG(list_all_locations_of_selection);
|
||||
CUSTOM_COMMAND_SIG(list_all_locations_of_selection_case_insensitive);
|
||||
CUSTOM_COMMAND_SIG(list_all_locations_of_type_definition);
|
||||
CUSTOM_COMMAND_SIG(list_all_locations_of_type_definition_of_identifier);
|
||||
CUSTOM_COMMAND_SIG(list_all_substring_locations);
|
||||
CUSTOM_COMMAND_SIG(list_all_substring_locations_case_insensitive);
|
||||
CUSTOM_COMMAND_SIG(lister__activate);
|
||||
CUSTOM_COMMAND_SIG(lister__backspace_text_field);
|
||||
CUSTOM_COMMAND_SIG(lister__backspace_text_field__default);
|
||||
CUSTOM_COMMAND_SIG(lister__backspace_text_field__file_path);
|
||||
CUSTOM_COMMAND_SIG(lister__mouse_press);
|
||||
CUSTOM_COMMAND_SIG(lister__mouse_release);
|
||||
CUSTOM_COMMAND_SIG(lister__move_down);
|
||||
CUSTOM_COMMAND_SIG(lister__move_down__default);
|
||||
CUSTOM_COMMAND_SIG(lister__move_up);
|
||||
CUSTOM_COMMAND_SIG(lister__move_up__default);
|
||||
CUSTOM_COMMAND_SIG(lister__quit);
|
||||
CUSTOM_COMMAND_SIG(lister__repaint);
|
||||
CUSTOM_COMMAND_SIG(lister__wheel_scroll);
|
||||
CUSTOM_COMMAND_SIG(lister__write_character);
|
||||
CUSTOM_COMMAND_SIG(lister__write_character__default);
|
||||
CUSTOM_COMMAND_SIG(lister__write_character__file_path);
|
||||
CUSTOM_COMMAND_SIG(lister__write_character__fixed_list);
|
||||
CUSTOM_COMMAND_SIG(load_project);
|
||||
CUSTOM_COMMAND_SIG(make_directory_query);
|
||||
CUSTOM_COMMAND_SIG(mouse_wheel_scroll);
|
||||
CUSTOM_COMMAND_SIG(move_down);
|
||||
CUSTOM_COMMAND_SIG(move_down_10);
|
||||
CUSTOM_COMMAND_SIG(move_down_textual);
|
||||
CUSTOM_COMMAND_SIG(move_left);
|
||||
CUSTOM_COMMAND_SIG(move_line_down);
|
||||
CUSTOM_COMMAND_SIG(move_line_up);
|
||||
CUSTOM_COMMAND_SIG(move_right);
|
||||
CUSTOM_COMMAND_SIG(move_up);
|
||||
CUSTOM_COMMAND_SIG(move_up_10);
|
||||
CUSTOM_COMMAND_SIG(newline_or_goto_position_direct);
|
||||
CUSTOM_COMMAND_SIG(newline_or_goto_position_same_panel_direct);
|
||||
CUSTOM_COMMAND_SIG(newline_or_goto_position_same_panel_sticky);
|
||||
CUSTOM_COMMAND_SIG(newline_or_goto_position_sticky);
|
||||
CUSTOM_COMMAND_SIG(open_all_code);
|
||||
CUSTOM_COMMAND_SIG(open_all_code_recursive);
|
||||
CUSTOM_COMMAND_SIG(open_color_tweaker);
|
||||
CUSTOM_COMMAND_SIG(open_file_in_quotes);
|
||||
CUSTOM_COMMAND_SIG(open_in_other);
|
||||
CUSTOM_COMMAND_SIG(open_long_braces);
|
||||
CUSTOM_COMMAND_SIG(open_long_braces_break);
|
||||
CUSTOM_COMMAND_SIG(open_long_braces_semicolon);
|
||||
CUSTOM_COMMAND_SIG(open_matching_file_cpp);
|
||||
CUSTOM_COMMAND_SIG(open_panel_hsplit);
|
||||
CUSTOM_COMMAND_SIG(open_panel_vsplit);
|
||||
CUSTOM_COMMAND_SIG(page_down);
|
||||
CUSTOM_COMMAND_SIG(page_up);
|
||||
CUSTOM_COMMAND_SIG(paste);
|
||||
CUSTOM_COMMAND_SIG(paste_and_indent);
|
||||
CUSTOM_COMMAND_SIG(paste_next);
|
||||
CUSTOM_COMMAND_SIG(paste_next_and_indent);
|
||||
CUSTOM_COMMAND_SIG(place_in_scope);
|
||||
CUSTOM_COMMAND_SIG(project_command_lister);
|
||||
CUSTOM_COMMAND_SIG(project_fkey_command);
|
||||
CUSTOM_COMMAND_SIG(project_go_to_root_directory);
|
||||
CUSTOM_COMMAND_SIG(query_replace);
|
||||
CUSTOM_COMMAND_SIG(query_replace_identifier);
|
||||
CUSTOM_COMMAND_SIG(query_replace_selection);
|
||||
CUSTOM_COMMAND_SIG(redo);
|
||||
CUSTOM_COMMAND_SIG(reload_themes);
|
||||
CUSTOM_COMMAND_SIG(remap_interactive);
|
||||
CUSTOM_COMMAND_SIG(rename_file_query);
|
||||
CUSTOM_COMMAND_SIG(reopen);
|
||||
CUSTOM_COMMAND_SIG(replace_in_range);
|
||||
CUSTOM_COMMAND_SIG(reverse_search);
|
||||
CUSTOM_COMMAND_SIG(reverse_search_identifier);
|
||||
CUSTOM_COMMAND_SIG(save);
|
||||
CUSTOM_COMMAND_SIG(save_all_dirty_buffers);
|
||||
CUSTOM_COMMAND_SIG(save_to_query);
|
||||
CUSTOM_COMMAND_SIG(scope_absorb_down);
|
||||
CUSTOM_COMMAND_SIG(search);
|
||||
CUSTOM_COMMAND_SIG(search_identifier);
|
||||
CUSTOM_COMMAND_SIG(seek_alphanumeric_left);
|
||||
CUSTOM_COMMAND_SIG(seek_alphanumeric_or_camel_left);
|
||||
CUSTOM_COMMAND_SIG(seek_alphanumeric_or_camel_right);
|
||||
CUSTOM_COMMAND_SIG(seek_alphanumeric_right);
|
||||
CUSTOM_COMMAND_SIG(seek_beginning_of_line);
|
||||
CUSTOM_COMMAND_SIG(seek_beginning_of_textual_line);
|
||||
CUSTOM_COMMAND_SIG(seek_end_of_line);
|
||||
CUSTOM_COMMAND_SIG(seek_end_of_textual_line);
|
||||
CUSTOM_COMMAND_SIG(seek_token_left);
|
||||
CUSTOM_COMMAND_SIG(seek_token_right);
|
||||
CUSTOM_COMMAND_SIG(seek_white_or_token_left);
|
||||
CUSTOM_COMMAND_SIG(seek_white_or_token_right);
|
||||
CUSTOM_COMMAND_SIG(seek_whitespace_down);
|
||||
CUSTOM_COMMAND_SIG(seek_whitespace_down_end_line);
|
||||
CUSTOM_COMMAND_SIG(seek_whitespace_left);
|
||||
CUSTOM_COMMAND_SIG(seek_whitespace_right);
|
||||
CUSTOM_COMMAND_SIG(seek_whitespace_up);
|
||||
CUSTOM_COMMAND_SIG(seek_whitespace_up_end_line);
|
||||
CUSTOM_COMMAND_SIG(select_all);
|
||||
CUSTOM_COMMAND_SIG(set_bindings_choose);
|
||||
CUSTOM_COMMAND_SIG(set_bindings_default);
|
||||
CUSTOM_COMMAND_SIG(set_bindings_mac_default);
|
||||
CUSTOM_COMMAND_SIG(set_mark);
|
||||
CUSTOM_COMMAND_SIG(set_mode_to_notepad_like);
|
||||
CUSTOM_COMMAND_SIG(set_mode_to_original);
|
||||
CUSTOM_COMMAND_SIG(setup_build_bat);
|
||||
CUSTOM_COMMAND_SIG(setup_build_bat_and_sh);
|
||||
CUSTOM_COMMAND_SIG(setup_build_sh);
|
||||
CUSTOM_COMMAND_SIG(setup_new_project);
|
||||
CUSTOM_COMMAND_SIG(show_filebar);
|
||||
CUSTOM_COMMAND_SIG(show_scrollbar);
|
||||
CUSTOM_COMMAND_SIG(snipe_token_or_word);
|
||||
CUSTOM_COMMAND_SIG(snipe_token_or_word_right);
|
||||
CUSTOM_COMMAND_SIG(snippet_lister);
|
||||
CUSTOM_COMMAND_SIG(suppress_mouse);
|
||||
CUSTOM_COMMAND_SIG(swap_buffers_between_panels);
|
||||
CUSTOM_COMMAND_SIG(to_lowercase);
|
||||
CUSTOM_COMMAND_SIG(to_uppercase);
|
||||
CUSTOM_COMMAND_SIG(toggle_filebar);
|
||||
CUSTOM_COMMAND_SIG(toggle_fullscreen);
|
||||
CUSTOM_COMMAND_SIG(toggle_highlight_enclosing_scopes);
|
||||
CUSTOM_COMMAND_SIG(toggle_highlight_line_at_cursor);
|
||||
CUSTOM_COMMAND_SIG(toggle_line_wrap);
|
||||
CUSTOM_COMMAND_SIG(toggle_mouse);
|
||||
CUSTOM_COMMAND_SIG(toggle_paren_matching_helper);
|
||||
CUSTOM_COMMAND_SIG(toggle_show_whitespace);
|
||||
CUSTOM_COMMAND_SIG(toggle_virtual_whitespace);
|
||||
CUSTOM_COMMAND_SIG(undo);
|
||||
CUSTOM_COMMAND_SIG(view_buffer_other_panel);
|
||||
CUSTOM_COMMAND_SIG(view_jump_list_with_lister);
|
||||
CUSTOM_COMMAND_SIG(word_complete);
|
||||
CUSTOM_COMMAND_SIG(write_and_auto_tab);
|
||||
CUSTOM_COMMAND_SIG(write_block);
|
||||
CUSTOM_COMMAND_SIG(write_character);
|
||||
CUSTOM_COMMAND_SIG(write_hack);
|
||||
CUSTOM_COMMAND_SIG(write_note);
|
||||
CUSTOM_COMMAND_SIG(write_todo);
|
||||
CUSTOM_COMMAND_SIG(write_underscore);
|
||||
CUSTOM_COMMAND_SIG(write_zero_struct);
|
||||
#endif
|
||||
struct Command_Metadata{
|
||||
PROC_LINKS(Custom_Command_Function, void) *proc;
|
||||
char *name;
|
||||
int32_t name_len;
|
||||
char *description;
|
||||
int32_t description_len;
|
||||
char *source_name;
|
||||
int32_t source_name_len;
|
||||
int32_t line_number;
|
||||
};
|
||||
static Command_Metadata fcoder_metacmd_table[216] = {
|
||||
{ PROC_LINKS(allow_mouse, 0), "allow_mouse", 11, "Shows the mouse and causes all mouse input to be processed normally.", 68, "/Users/allenwebster/4ed/code/4coder_default_framework.cpp", 57, 240 },
|
||||
{ PROC_LINKS(auto_tab_line_at_cursor, 0), "auto_tab_line_at_cursor", 23, "Auto-indents the line on which the cursor sits.", 47, "/Users/allenwebster/4ed/code/4coder_auto_indent.cpp", 51, 722 },
|
||||
{ PROC_LINKS(auto_tab_range, 0), "auto_tab_range", 14, "Auto-indents the range between the cursor and the mark.", 55, "/Users/allenwebster/4ed/code/4coder_auto_indent.cpp", 51, 733 },
|
||||
{ PROC_LINKS(auto_tab_whole_file, 0), "auto_tab_whole_file", 19, "Audo-indents the entire current buffer.", 39, "/Users/allenwebster/4ed/code/4coder_auto_indent.cpp", 51, 712 },
|
||||
{ PROC_LINKS(backspace_char, 0), "backspace_char", 14, "Deletes the character to the left of the cursor.", 48, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 73 },
|
||||
{ PROC_LINKS(backspace_word, 0), "backspace_word", 14, "Delete characters between the cursor position and the first alphanumeric boundary to the left.", 94, "/Users/allenwebster/4ed/code/4coder_seek.cpp", 44, 1258 },
|
||||
{ PROC_LINKS(basic_change_active_panel, 0), "basic_change_active_panel", 25, "Change the currently active panel, moving to the panel with the next highest view_id. Will not skipe the build panel if it is open.", 132, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 479 },
|
||||
{ PROC_LINKS(build_in_build_panel, 0), "build_in_build_panel", 20, "Looks for a build.bat, build.sh, or makefile in the current and parent directories. Runs the first that it finds and prints the output to *compilation*. Puts the *compilation* buffer in a panel at the footer of the current view.", 230, "/Users/allenwebster/4ed/code/4coder_build_commands.cpp", 54, 187 },
|
||||
{ PROC_LINKS(build_search, 0), "build_search", 12, "Looks for a build.bat, build.sh, or makefile in the current and parent directories. Runs the first that it finds and prints the output to *compilation*.", 153, "/Users/allenwebster/4ed/code/4coder_build_commands.cpp", 54, 155 },
|
||||
{ PROC_LINKS(center_view, 0), "center_view", 11, "Centers the view vertically on the line on which the cursor sits.", 65, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 121 },
|
||||
{ PROC_LINKS(change_active_panel, 0), "change_active_panel", 19, "Change the currently active panel, moving to the panel with the next highest view_id.", 85, "/Users/allenwebster/4ed/code/4coder_default_framework.cpp", 57, 144 },
|
||||
{ PROC_LINKS(change_active_panel_backwards, 0), "change_active_panel_backwards", 29, "Change the currently active panel, moving to the panel with the next lowest view_id.", 84, "/Users/allenwebster/4ed/code/4coder_default_framework.cpp", 57, 154 },
|
||||
{ PROC_LINKS(change_to_build_panel, 0), "change_to_build_panel", 21, "If the special build panel is open, makes the build panel the active panel.", 75, "/Users/allenwebster/4ed/code/4coder_build_commands.cpp", 54, 209 },
|
||||
{ PROC_LINKS(clean_all_lines, 0), "clean_all_lines", 15, "Removes trailing whitespace from all lines in the current buffer.", 65, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 414 },
|
||||
{ PROC_LINKS(click_set_cursor, 0), "click_set_cursor", 16, "Sets the cursor position to the mouse position.", 47, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 188 },
|
||||
{ PROC_LINKS(click_set_cursor_and_mark, 0), "click_set_cursor_and_mark", 25, "Sets the cursor position and mark to the mouse position.", 56, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 175 },
|
||||
{ PROC_LINKS(click_set_cursor_if_lbutton, 0), "click_set_cursor_if_lbutton", 27, "If the mouse left button is pressed, sets the cursor position to the mouse position.", 84, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 201 },
|
||||
{ PROC_LINKS(click_set_mark, 0), "click_set_mark", 14, "Sets the mark position to the mouse position.", 45, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 216 },
|
||||
{ PROC_LINKS(close_all_code, 0), "close_all_code", 14, "Closes any buffer with a filename ending with an extension configured to be recognized as a code file type.", 107, "/Users/allenwebster/4ed/code/4coder_project_commands.cpp", 56, 1060 },
|
||||
{ PROC_LINKS(close_build_panel, 0), "close_build_panel", 17, "If the special build panel is open, closes it.", 46, "/Users/allenwebster/4ed/code/4coder_build_commands.cpp", 54, 203 },
|
||||
{ PROC_LINKS(close_panel, 0), "close_panel", 11, "Closes the currently active panel if it is not the only panel open.", 67, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 487 },
|
||||
{ PROC_LINKS(command_lister, 0), "command_lister", 14, "Opens an interactive list of all registered commands.", 53, "/Users/allenwebster/4ed/code/4coder_lists.cpp", 45, 935 },
|
||||
{ PROC_LINKS(copy, 0), "copy", 4, "Copy the text in the range from the cursor to the mark onto the clipboard.", 74, "/Users/allenwebster/4ed/code/4coder_clipboard.cpp", 49, 26 },
|
||||
{ PROC_LINKS(cursor_mark_swap, 0), "cursor_mark_swap", 16, "Swaps the position of the cursor and the mark.", 46, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 99 },
|
||||
{ PROC_LINKS(cut, 0), "cut", 3, "Cut the text in the range from the cursor to the mark onto the clipboard.", 73, "/Users/allenwebster/4ed/code/4coder_clipboard.cpp", 49, 35 },
|
||||
{ PROC_LINKS(decrease_face_size, 0), "decrease_face_size", 18, "Decrease the size of the face used by the current buffer.", 57, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 577 },
|
||||
{ PROC_LINKS(decrease_line_wrap, 0), "decrease_line_wrap", 18, "Decrases the current buffer's width for line wrapping.", 54, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 554 },
|
||||
{ PROC_LINKS(delete_char, 0), "delete_char", 11, "Deletes the character to the right of the cursor.", 49, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 56 },
|
||||
{ PROC_LINKS(delete_current_scope, 0), "delete_current_scope", 20, "Deletes the braces surrounding the currently selected scope. Leaves the contents within the scope.", 99, "/Users/allenwebster/4ed/code/4coder_scope_commands.cpp", 54, 523 },
|
||||
{ PROC_LINKS(delete_file_query, 0), "delete_file_query", 17, "Deletes the file of the current buffer if 4coder has the appropriate access rights. Will ask the user for confirmation first.", 125, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 1123 },
|
||||
{ PROC_LINKS(delete_line, 0), "delete_line", 11, "Delete the line the on which the cursor sits.", 45, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 1373 },
|
||||
{ PROC_LINKS(delete_range, 0), "delete_range", 12, "Deletes the text in the range between the cursor and the mark.", 62, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 109 },
|
||||
{ PROC_LINKS(delete_word, 0), "delete_word", 11, "Delete characters between the cursor position and the first alphanumeric boundary to the right.", 95, "/Users/allenwebster/4ed/code/4coder_seek.cpp", 44, 1264 },
|
||||
{ PROC_LINKS(duplicate_line, 0), "duplicate_line", 14, "Create a copy of the line on which the cursor sits.", 51, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 1351 },
|
||||
{ PROC_LINKS(eol_dosify, 0), "eol_dosify", 10, "Puts the buffer in DOS line ending mode.", 40, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 607 },
|
||||
{ PROC_LINKS(eol_nixify, 0), "eol_nixify", 10, "Puts the buffer in NIX line ending mode.", 40, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 615 },
|
||||
{ PROC_LINKS(execute_any_cli, 0), "execute_any_cli", 15, "Queries for an output buffer name and system command, runs the system command as a CLI and prints the output to the specified buffer.", 133, "/Users/allenwebster/4ed/code/4coder_system_command.cpp", 54, 23 },
|
||||
{ PROC_LINKS(execute_previous_cli, 0), "execute_previous_cli", 20, "If the command execute_any_cli has already been used, this will execute a CLI reusing the most recent buffer name and command.", 126, "/Users/allenwebster/4ed/code/4coder_system_command.cpp", 54, 7 },
|
||||
{ PROC_LINKS(exit_4coder, 0), "exit_4coder", 11, "Attempts to close 4coder.", 25, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 623 },
|
||||
{ PROC_LINKS(goto_beginning_of_file, 0), "goto_beginning_of_file", 22, "Sets the cursor to the beginning of the file.", 45, "/Users/allenwebster/4ed/code/4coder_seek.cpp", 44, 1177 },
|
||||
{ PROC_LINKS(goto_end_of_file, 0), "goto_end_of_file", 16, "Sets the cursor to the end of the file.", 39, "/Users/allenwebster/4ed/code/4coder_seek.cpp", 44, 1185 },
|
||||
{ PROC_LINKS(goto_first_jump_direct, 0), "goto_first_jump_direct", 22, "If a buffer containing jump locations has been locked in, goes to the first jump in the buffer.", 95, "/Users/allenwebster/4ed/code/4coder_jump_direct.cpp", 51, 84 },
|
||||
{ PROC_LINKS(goto_first_jump_same_panel_sticky, 0), "goto_first_jump_same_panel_sticky", 33, "If a buffer containing jump locations has been locked in, goes to the first jump in the buffer and views the buffer in the panel where the jump list was.", 153, "/Users/allenwebster/4ed/code/4coder_jump_sticky.cpp", 51, 550 },
|
||||
{ PROC_LINKS(goto_first_jump_sticky, 0), "goto_first_jump_sticky", 22, "If a buffer containing jump locations has been locked in, goes to the first jump in the buffer.", 95, "/Users/allenwebster/4ed/code/4coder_jump_sticky.cpp", 51, 532 },
|
||||
{ PROC_LINKS(goto_jump_at_cursor_direct, 0), "goto_jump_at_cursor_direct", 26, "If the cursor is found to be on a jump location, parses the jump location and brings up the file and position in another view and changes the active panel to the view containing the jump.", 187, "/Users/allenwebster/4ed/code/4coder_jump_direct.cpp", 51, 8 },
|
||||
{ PROC_LINKS(goto_jump_at_cursor_same_panel_direct, 0), "goto_jump_at_cursor_same_panel_direct", 37, "If the cursor is found to be on a jump location, parses the jump location and brings up the file and position in this view, losing the compilation output or jump list..", 168, "/Users/allenwebster/4ed/code/4coder_jump_direct.cpp", 51, 29 },
|
||||
{ PROC_LINKS(goto_jump_at_cursor_same_panel_sticky, 0), "goto_jump_at_cursor_same_panel_sticky", 37, "If the cursor is found to be on a jump location, parses the jump location and brings up the file and position in this view, losing the compilation output or jump list.", 167, "/Users/allenwebster/4ed/code/4coder_jump_sticky.cpp", 51, 376 },
|
||||
{ PROC_LINKS(goto_jump_at_cursor_sticky, 0), "goto_jump_at_cursor_sticky", 26, "If the cursor is found to be on a jump location, parses the jump location and brings up the file and position in another view and changes the active panel to the view containing the jump.", 187, "/Users/allenwebster/4ed/code/4coder_jump_sticky.cpp", 51, 348 },
|
||||
{ PROC_LINKS(goto_line, 0), "goto_line", 9, "Queries the user for a number, and jumps the cursor to the corresponding line.", 78, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 631 },
|
||||
{ PROC_LINKS(goto_next_jump_direct, 0), "goto_next_jump_direct", 21, "If a buffer containing jump locations has been locked in, goes to the next jump in the buffer, skipping sub jump locations.", 123, "/Users/allenwebster/4ed/code/4coder_jump_direct.cpp", 51, 48 },
|
||||
{ PROC_LINKS(goto_next_jump_no_skips_direct, 0), "goto_next_jump_no_skips_direct", 30, "If a buffer containing jump locations has been locked in, goes to the next jump in the buffer, and does not skip sub jump locations.", 132, "/Users/allenwebster/4ed/code/4coder_jump_direct.cpp", 51, 66 },
|
||||
{ PROC_LINKS(goto_next_jump_no_skips_sticky, 0), "goto_next_jump_no_skips_sticky", 30, "If a buffer containing jump locations has been locked in, goes to the next jump in the buffer, and does not skip sub jump locations.", 132, "/Users/allenwebster/4ed/code/4coder_jump_sticky.cpp", 51, 501 },
|
||||
{ PROC_LINKS(goto_next_jump_sticky, 0), "goto_next_jump_sticky", 21, "If a buffer containing jump locations has been locked in, goes to the next jump in the buffer, skipping sub jump locations.", 123, "/Users/allenwebster/4ed/code/4coder_jump_sticky.cpp", 51, 471 },
|
||||
{ PROC_LINKS(goto_prev_jump_direct, 0), "goto_prev_jump_direct", 21, "If a buffer containing jump locations has been locked in, goes to the previous jump in the buffer, skipping sub jump locations.", 127, "/Users/allenwebster/4ed/code/4coder_jump_direct.cpp", 51, 57 },
|
||||
{ PROC_LINKS(goto_prev_jump_no_skips_direct, 0), "goto_prev_jump_no_skips_direct", 30, "If a buffer containing jump locations has been locked in, goes to the previous jump in the buffer, and does not skip sub jump locations.", 136, "/Users/allenwebster/4ed/code/4coder_jump_direct.cpp", 51, 75 },
|
||||
{ PROC_LINKS(goto_prev_jump_no_skips_sticky, 0), "goto_prev_jump_no_skips_sticky", 30, "If a buffer containing jump locations has been locked in, goes to the previous jump in the buffer, and does not skip sub jump locations.", 136, "/Users/allenwebster/4ed/code/4coder_jump_sticky.cpp", 51, 517 },
|
||||
{ PROC_LINKS(goto_prev_jump_sticky, 0), "goto_prev_jump_sticky", 21, "If a buffer containing jump locations has been locked in, goes to the previous jump in the buffer, skipping sub jump locations.", 127, "/Users/allenwebster/4ed/code/4coder_jump_sticky.cpp", 51, 487 },
|
||||
{ PROC_LINKS(hide_filebar, 0), "hide_filebar", 12, "Sets the current view to hide it's filebar.", 43, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 517 },
|
||||
{ PROC_LINKS(hide_scrollbar, 0), "hide_scrollbar", 14, "Sets the current view to hide it's scrollbar.", 45, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 503 },
|
||||
{ PROC_LINKS(highlight_next_scope_absolute, 0), "highlight_next_scope_absolute", 29, "Finds the first scope started by '{' after the cursor and puts the cursor and mark on the '{' and '}'.", 102, "/Users/allenwebster/4ed/code/4coder_scope_commands.cpp", 54, 400 },
|
||||
{ PROC_LINKS(highlight_prev_scope_absolute, 0), "highlight_prev_scope_absolute", 29, "Finds the first scope started by '{' before the cursor and puts the cursor and mark on the '{' and '}'.", 103, "/Users/allenwebster/4ed/code/4coder_scope_commands.cpp", 54, 419 },
|
||||
{ PROC_LINKS(highlight_surrounding_scope, 0), "highlight_surrounding_scope", 27, "Finds the scope enclosed by '{' '}' surrounding the cursor and puts the cursor and mark on the '{' and '}'.", 107, "/Users/allenwebster/4ed/code/4coder_scope_commands.cpp", 54, 385 },
|
||||
{ PROC_LINKS(if0_off, 0), "if0_off", 7, "Surround the range between the cursor and mark with an '#if 0' and an '#endif'", 78, "/Users/allenwebster/4ed/code/4coder_combined_write_commands.cpp", 63, 81 },
|
||||
{ PROC_LINKS(increase_face_size, 0), "increase_face_size", 18, "Increase the size of the face used by the current buffer.", 57, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 565 },
|
||||
{ PROC_LINKS(increase_line_wrap, 0), "increase_line_wrap", 18, "Increases the current buffer's width for line wrapping.", 55, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 543 },
|
||||
{ PROC_LINKS(interactive_kill_buffer, 0), "interactive_kill_buffer", 23, "Interactively kill an open buffer.", 34, "/Users/allenwebster/4ed/code/4coder_lists.cpp", 45, 749 },
|
||||
{ PROC_LINKS(interactive_new, 0), "interactive_new", 15, "Interactively creates a new file.", 33, "/Users/allenwebster/4ed/code/4coder_lists.cpp", 45, 853 },
|
||||
{ PROC_LINKS(interactive_open, 0), "interactive_open", 16, "Interactively opens a file.", 27, "/Users/allenwebster/4ed/code/4coder_lists.cpp", 45, 881 },
|
||||
{ PROC_LINKS(interactive_open_or_new, 0), "interactive_open_or_new", 23, "Interactively open a file out of the file system.", 49, "/Users/allenwebster/4ed/code/4coder_lists.cpp", 45, 819 },
|
||||
{ PROC_LINKS(interactive_switch_buffer, 0), "interactive_switch_buffer", 25, "Interactively switch to an open buffer.", 39, "/Users/allenwebster/4ed/code/4coder_lists.cpp", 45, 730 },
|
||||
{ PROC_LINKS(kill_buffer, 0), "kill_buffer", 11, "Kills the current buffer.", 25, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 1543 },
|
||||
{ PROC_LINKS(left_adjust_view, 0), "left_adjust_view", 16, "Sets the left size of the view near the x position of the cursor.", 65, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 136 },
|
||||
{ PROC_LINKS(list_all_functions_all_buffers, 0), "list_all_functions_all_buffers", 30, "Creates a jump list of lines from all buffers that appear to define or declare functions.", 89, "/Users/allenwebster/4ed/code/4coder_function_list.cpp", 53, 358 },
|
||||
{ PROC_LINKS(list_all_functions_all_buffers_lister, 0), "list_all_functions_all_buffers_lister", 37, "Creates a lister of locations that look like function definitions and declarations all buffers.", 95, "/Users/allenwebster/4ed/code/4coder_function_list.cpp", 53, 364 },
|
||||
{ PROC_LINKS(list_all_functions_current_buffer, 0), "list_all_functions_current_buffer", 33, "Creates a jump list of lines of the current buffer that appear to define or declare functions.", 94, "/Users/allenwebster/4ed/code/4coder_function_list.cpp", 53, 335 },
|
||||
{ PROC_LINKS(list_all_functions_current_buffer_lister, 0), "list_all_functions_current_buffer_lister", 40, "Creates a lister of locations that look like function definitions and declarations in the buffer.", 97, "/Users/allenwebster/4ed/code/4coder_function_list.cpp", 53, 345 },
|
||||
{ PROC_LINKS(list_all_locations, 0), "list_all_locations", 18, "Queries the user for a string and lists all exact case-sensitive matches found in all open buffers.", 99, "/Users/allenwebster/4ed/code/4coder_search.cpp", 46, 769 },
|
||||
{ PROC_LINKS(list_all_locations_case_insensitive, 0), "list_all_locations_case_insensitive", 35, "Queries the user for a string and lists all exact case-insensitive matches found in all open buffers.", 101, "/Users/allenwebster/4ed/code/4coder_search.cpp", 46, 783 },
|
||||
{ PROC_LINKS(list_all_locations_of_identifier, 0), "list_all_locations_of_identifier", 32, "Reads a token or word under the cursor and lists all exact case-sensitive mathces in all open buffers.", 102, "/Users/allenwebster/4ed/code/4coder_search.cpp", 46, 797 },
|
||||
{ PROC_LINKS(list_all_locations_of_identifier_case_insensitive, 0), "list_all_locations_of_identifier_case_insensitive", 49, "Reads a token or word under the cursor and lists all exact case-insensitive mathces in all open buffers.", 104, "/Users/allenwebster/4ed/code/4coder_search.cpp", 46, 804 },
|
||||
{ PROC_LINKS(list_all_locations_of_selection, 0), "list_all_locations_of_selection", 31, "Reads the string in the selected range and lists all exact case-sensitive mathces in all open buffers.", 102, "/Users/allenwebster/4ed/code/4coder_search.cpp", 46, 811 },
|
||||
{ PROC_LINKS(list_all_locations_of_selection_case_insensitive, 0), "list_all_locations_of_selection_case_insensitive", 48, "Reads the string in the selected range and lists all exact case-insensitive mathces in all open buffers.", 104, "/Users/allenwebster/4ed/code/4coder_search.cpp", 46, 818 },
|
||||
{ PROC_LINKS(list_all_locations_of_type_definition, 0), "list_all_locations_of_type_definition", 37, "Queries user for string, lists all locations of strings that appear to define a type whose name matches the input string.", 121, "/Users/allenwebster/4ed/code/4coder_search.cpp", 46, 825 },
|
||||
{ PROC_LINKS(list_all_locations_of_type_definition_of_identifier, 0), "list_all_locations_of_type_definition_of_identifier", 51, "Reads a token or word under the cursor and lists all locations of strings that appear to define a type whose name matches it.", 125, "/Users/allenwebster/4ed/code/4coder_search.cpp", 46, 836 },
|
||||
{ PROC_LINKS(list_all_substring_locations, 0), "list_all_substring_locations", 28, "Queries the user for a string and lists all case-sensitive substring matches found in all open buffers.", 103, "/Users/allenwebster/4ed/code/4coder_search.cpp", 46, 776 },
|
||||
{ PROC_LINKS(list_all_substring_locations_case_insensitive, 0), "list_all_substring_locations_case_insensitive", 45, "Queries the user for a string and lists all case-insensitive substring matches found in all open buffers.", 105, "/Users/allenwebster/4ed/code/4coder_search.cpp", 46, 790 },
|
||||
{ PROC_LINKS(lister__activate, 0), "lister__activate", 16, "A lister mode command that activates the list's action on the highlighted item.", 79, "/Users/allenwebster/4ed/code/4coder_lists.cpp", 45, 15 },
|
||||
{ PROC_LINKS(lister__backspace_text_field, 0), "lister__backspace_text_field", 28, "A lister mode command that dispatches to the lister's backspace text field handler.", 83, "/Users/allenwebster/4ed/code/4coder_lists.cpp", 45, 41 },
|
||||
{ PROC_LINKS(lister__backspace_text_field__default, 0), "lister__backspace_text_field__default", 37, "A lister mode command that backspaces one character from the text field.", 72, "/Users/allenwebster/4ed/code/4coder_lists.cpp", 45, 146 },
|
||||
{ PROC_LINKS(lister__backspace_text_field__file_path, 0), "lister__backspace_text_field__file_path", 39, "A lister mode command that backspaces one character from the text field of a file system list.", 94, "/Users/allenwebster/4ed/code/4coder_lists.cpp", 45, 218 },
|
||||
{ PROC_LINKS(lister__mouse_press, 0), "lister__mouse_press", 19, "A lister mode command that beings a click interaction with a list item under the mouse.", 87, "/Users/allenwebster/4ed/code/4coder_lists.cpp", 45, 86 },
|
||||
{ PROC_LINKS(lister__mouse_release, 0), "lister__mouse_release", 21, "A lister mode command that ends a click interaction with a list item under the mouse, possibly activating it.", 109, "/Users/allenwebster/4ed/code/4coder_lists.cpp", 45, 98 },
|
||||
{ PROC_LINKS(lister__move_down, 0), "lister__move_down", 17, "A lister mode command that dispatches to the lister's navigate down handler.", 76, "/Users/allenwebster/4ed/code/4coder_lists.cpp", 45, 61 },
|
||||
{ PROC_LINKS(lister__move_down__default, 0), "lister__move_down__default", 26, "A lister mode command that moves the highlighted item one down in the list.", 75, "/Users/allenwebster/4ed/code/4coder_lists.cpp", 45, 177 },
|
||||
{ PROC_LINKS(lister__move_up, 0), "lister__move_up", 15, "A lister mode command that dispatches to the lister's navigate up handler.", 74, "/Users/allenwebster/4ed/code/4coder_lists.cpp", 45, 51 },
|
||||
{ PROC_LINKS(lister__move_up__default, 0), "lister__move_up__default", 24, "A lister mode command that moves the highlighted item one up in the list.", 73, "/Users/allenwebster/4ed/code/4coder_lists.cpp", 45, 161 },
|
||||
{ PROC_LINKS(lister__quit, 0), "lister__quit", 12, "A lister mode command that quits the list without executing any actions.", 72, "/Users/allenwebster/4ed/code/4coder_lists.cpp", 45, 8 },
|
||||
{ PROC_LINKS(lister__repaint, 0), "lister__repaint", 15, "A lister mode command that updates the lists UI data.", 53, "/Users/allenwebster/4ed/code/4coder_lists.cpp", 45, 115 },
|
||||
{ PROC_LINKS(lister__wheel_scroll, 0), "lister__wheel_scroll", 20, "A lister mode command that scrolls the list in response to the mouse wheel.", 75, "/Users/allenwebster/4ed/code/4coder_lists.cpp", 45, 71 },
|
||||
{ PROC_LINKS(lister__write_character, 0), "lister__write_character", 23, "A lister mode command that dispatches to the lister's write character handler.", 78, "/Users/allenwebster/4ed/code/4coder_lists.cpp", 45, 31 },
|
||||
{ PROC_LINKS(lister__write_character__default, 0), "lister__write_character__default", 32, "A lister mode command that inserts a new character to the text field.", 69, "/Users/allenwebster/4ed/code/4coder_lists.cpp", 45, 126 },
|
||||
{ PROC_LINKS(lister__write_character__file_path, 0), "lister__write_character__file_path", 34, "A lister mode command that inserts a character into the text field of a file system list.", 89, "/Users/allenwebster/4ed/code/4coder_lists.cpp", 45, 193 },
|
||||
{ PROC_LINKS(lister__write_character__fixed_list, 0), "lister__write_character__fixed_list", 35, "A lister mode command that handles input for the fixed sure to kill list.", 73, "/Users/allenwebster/4ed/code/4coder_lists.cpp", 45, 253 },
|
||||
{ PROC_LINKS(load_project, 0), "load_project", 12, "Looks for a project.4coder file in the current directory and tries to load it. Looks in parent directories until a project file is found or there are no more parents.", 167, "/Users/allenwebster/4ed/code/4coder_project_commands.cpp", 56, 1083 },
|
||||
{ PROC_LINKS(make_directory_query, 0), "make_directory_query", 20, "Queries the user for a name and creates a new directory with the given name.", 76, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 1231 },
|
||||
{ PROC_LINKS(mouse_wheel_scroll, 0), "mouse_wheel_scroll", 18, "Reads the scroll wheel value from the mouse state and scrolls accordingly.", 74, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 229 },
|
||||
{ PROC_LINKS(move_down, 0), "move_down", 9, "Moves the cursor down one line.", 31, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 293 },
|
||||
{ PROC_LINKS(move_down_10, 0), "move_down_10", 12, "Moves the cursor down ten lines.", 32, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 305 },
|
||||
{ PROC_LINKS(move_down_textual, 0), "move_down_textual", 17, "Moves down to the next line of actual text, regardless of line wrapping.", 72, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 311 },
|
||||
{ PROC_LINKS(move_left, 0), "move_left", 9, "Moves the cursor one character to the left.", 43, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 342 },
|
||||
{ PROC_LINKS(move_line_down, 0), "move_line_down", 14, "Swaps the line under the cursor with the line below it, and moves the cursor down with it.", 90, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 1328 },
|
||||
{ PROC_LINKS(move_line_up, 0), "move_line_up", 12, "Swaps the line under the cursor with the line above it, and moves the cursor up with it.", 88, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 1264 },
|
||||
{ PROC_LINKS(move_right, 0), "move_right", 10, "Moves the cursor one character to the right.", 44, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 352 },
|
||||
{ PROC_LINKS(move_up, 0), "move_up", 7, "Moves the cursor up one line.", 29, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 287 },
|
||||
{ PROC_LINKS(move_up_10, 0), "move_up_10", 10, "Moves the cursor up ten lines.", 30, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 299 },
|
||||
{ PROC_LINKS(newline_or_goto_position_direct, 0), "newline_or_goto_position_direct", 31, "If the buffer in the active view is writable, inserts a character, otherwise performs goto_jump_at_cursor.", 106, "/Users/allenwebster/4ed/code/4coder_jump_direct.cpp", 51, 101 },
|
||||
{ PROC_LINKS(newline_or_goto_position_same_panel_direct, 0), "newline_or_goto_position_same_panel_direct", 42, "If the buffer in the active view is writable, inserts a character, otherwise performs goto_jump_at_cursor_same_panel.", 117, "/Users/allenwebster/4ed/code/4coder_jump_direct.cpp", 51, 116 },
|
||||
{ PROC_LINKS(newline_or_goto_position_same_panel_sticky, 0), "newline_or_goto_position_same_panel_sticky", 42, "If the buffer in the active view is writable, inserts a character, otherwise performs goto_jump_at_cursor_same_panel.", 117, "/Users/allenwebster/4ed/code/4coder_jump_sticky.cpp", 51, 588 },
|
||||
{ PROC_LINKS(newline_or_goto_position_sticky, 0), "newline_or_goto_position_sticky", 31, "If the buffer in the active view is writable, inserts a character, otherwise performs goto_jump_at_cursor.", 106, "/Users/allenwebster/4ed/code/4coder_jump_sticky.cpp", 51, 573 },
|
||||
{ PROC_LINKS(open_all_code, 0), "open_all_code", 13, "Open all code in the current directory. File types are determined by extensions. An extension is considered code based on the extensions specified in 4coder.config.", 164, "/Users/allenwebster/4ed/code/4coder_project_commands.cpp", 56, 1067 },
|
||||
{ PROC_LINKS(open_all_code_recursive, 0), "open_all_code_recursive", 23, "Works as open_all_code but also runs in all subdirectories.", 59, "/Users/allenwebster/4ed/code/4coder_project_commands.cpp", 56, 1074 },
|
||||
{ PROC_LINKS(open_color_tweaker, 0), "open_color_tweaker", 18, "Opens the 4coder theme selector list.", 37, "/Users/allenwebster/4ed/code/4coder_lists.cpp", 45, 897 },
|
||||
{ PROC_LINKS(open_file_in_quotes, 0), "open_file_in_quotes", 19, "Reads a filename from surrounding '\"' characters and attempts to open the corresponding file.", 94, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 1450 },
|
||||
{ PROC_LINKS(open_in_other, 0), "open_in_other", 13, "Interactively opens a file in the other panel.", 46, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 1601 },
|
||||
{ PROC_LINKS(open_long_braces, 0), "open_long_braces", 16, "At the cursor, insert a '{' and '}' separated by a blank line.", 62, "/Users/allenwebster/4ed/code/4coder_combined_write_commands.cpp", 63, 57 },
|
||||
{ PROC_LINKS(open_long_braces_break, 0), "open_long_braces_break", 22, "At the cursor, insert a '{' and '}break;' separated by a blank line.", 68, "/Users/allenwebster/4ed/code/4coder_combined_write_commands.cpp", 63, 73 },
|
||||
{ PROC_LINKS(open_long_braces_semicolon, 0), "open_long_braces_semicolon", 26, "At the cursor, insert a '{' and '};' separated by a blank line.", 63, "/Users/allenwebster/4ed/code/4coder_combined_write_commands.cpp", 63, 65 },
|
||||
{ PROC_LINKS(open_matching_file_cpp, 0), "open_matching_file_cpp", 22, "If the current file is a *.cpp or *.h, attempts to open the corresponding *.h or *.cpp file in the other view.", 110, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 1486 },
|
||||
{ PROC_LINKS(open_panel_hsplit, 0), "open_panel_hsplit", 17, "Create a new panel by horizontally splitting the active panel.", 62, "/Users/allenwebster/4ed/code/4coder_default_framework.cpp", 57, 173 },
|
||||
{ PROC_LINKS(open_panel_vsplit, 0), "open_panel_vsplit", 17, "Create a new panel by vertically splitting the active panel.", 60, "/Users/allenwebster/4ed/code/4coder_default_framework.cpp", 57, 164 },
|
||||
{ PROC_LINKS(page_down, 0), "page_down", 9, "Scrolls the view down one view height and moves the cursor down one view height.", 80, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 331 },
|
||||
{ PROC_LINKS(page_up, 0), "page_up", 7, "Scrolls the view up one view height and moves the cursor up one view height.", 76, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 322 },
|
||||
{ PROC_LINKS(paste, 0), "paste", 5, "At the cursor, insert the text at the top of the clipboard.", 59, "/Users/allenwebster/4ed/code/4coder_clipboard.cpp", 49, 46 },
|
||||
{ PROC_LINKS(paste_and_indent, 0), "paste_and_indent", 16, "Paste from the top of clipboard and run auto-indent on the newly pasted text.", 77, "/Users/allenwebster/4ed/code/4coder_clipboard.cpp", 49, 134 },
|
||||
{ PROC_LINKS(paste_next, 0), "paste_next", 10, "If the previous command was paste or paste_next, replaces the paste range with the next text down on the clipboard, otherwise operates as the paste command.", 156, "/Users/allenwebster/4ed/code/4coder_clipboard.cpp", 49, 85 },
|
||||
{ PROC_LINKS(paste_next_and_indent, 0), "paste_next_and_indent", 21, "Paste the next item on the clipboard and run auto-indent on the newly pasted text.", 82, "/Users/allenwebster/4ed/code/4coder_clipboard.cpp", 49, 141 },
|
||||
{ PROC_LINKS(place_in_scope, 0), "place_in_scope", 14, "Wraps the code contained in the range between cursor and mark with a new curly brace scope.", 91, "/Users/allenwebster/4ed/code/4coder_scope_commands.cpp", 54, 517 },
|
||||
{ PROC_LINKS(project_command_lister, 0), "project_command_lister", 22, "Open a lister of all commands in the currently loaded project.", 62, "/Users/allenwebster/4ed/code/4coder_project_commands.cpp", 56, 1529 },
|
||||
{ PROC_LINKS(project_fkey_command, 0), "project_fkey_command", 20, "Run an 'fkey command' configured in a project.4coder file. Determines the index of the 'fkey command' by which function key or numeric key was pressed to trigger the command.", 175, "/Users/allenwebster/4ed/code/4coder_project_commands.cpp", 56, 1090 },
|
||||
{ PROC_LINKS(project_go_to_root_directory, 0), "project_go_to_root_directory", 28, "Changes 4coder's hot directory to the root directory of the currently loaded project. With no loaded project nothing hapepns.", 125, "/Users/allenwebster/4ed/code/4coder_project_commands.cpp", 56, 1115 },
|
||||
{ PROC_LINKS(query_replace, 0), "query_replace", 13, "Queries the user for two strings, and incrementally replaces every occurence of the first string with the second string.", 120, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 1007 },
|
||||
{ PROC_LINKS(query_replace_identifier, 0), "query_replace_identifier", 24, "Queries the user for a string, and incrementally replace every occurence of the word or token found at the cursor with the specified string.", 140, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 1031 },
|
||||
{ PROC_LINKS(query_replace_selection, 0), "query_replace_selection", 23, "Queries the user for a string, and incrementally replace every occurence of the string found in the selected range with the specified string.", 141, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 1049 },
|
||||
{ PROC_LINKS(redo, 0), "redo", 4, "Advances forewards through the undo history.", 44, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 1558 },
|
||||
{ PROC_LINKS(reload_themes, 0), "reload_themes", 13, "Loads all the theme files in the theme folder, replacing duplicates with the new theme data.", 92, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 1578 },
|
||||
{ PROC_LINKS(remap_interactive, 0), "remap_interactive", 17, "Switch to a named key binding map.", 34, "/Users/allenwebster/4ed/code/4coder_default_framework.cpp", 57, 290 },
|
||||
{ PROC_LINKS(rename_file_query, 0), "rename_file_query", 17, "Queries the user for a new name and renames the file of the current buffer, altering the buffer's name too.", 107, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 1189 },
|
||||
{ PROC_LINKS(reopen, 0), "reopen", 6, "Reopen the current buffer from the hard drive.", 46, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 1564 },
|
||||
{ PROC_LINKS(replace_in_range, 0), "replace_in_range", 16, "Queries the user for two strings, and replaces all occurences of the first string in the range between the cursor and the mark with the second string.", 150, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 888 },
|
||||
{ PROC_LINKS(reverse_search, 0), "reverse_search", 14, "Begins an incremental search up through the current buffer for a user specified string.", 87, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 859 },
|
||||
{ PROC_LINKS(reverse_search_identifier, 0), "reverse_search_identifier", 25, "Begins an incremental search up through the current buffer for the word or token under the cursor.", 98, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 877 },
|
||||
{ PROC_LINKS(save, 0), "save", 4, "Saves the current buffer.", 25, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 1570 },
|
||||
{ PROC_LINKS(save_all_dirty_buffers, 0), "save_all_dirty_buffers", 22, "Saves all buffers marked dirty (showing the '*' indicator).", 59, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 1093 },
|
||||
{ PROC_LINKS(save_to_query, 0), "save_to_query", 13, "Queries the user for a file name and saves the contents of the current buffer, altering the buffer's name too.", 110, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 1149 },
|
||||
{ PROC_LINKS(scope_absorb_down, 0), "scope_absorb_down", 17, "If a scope is currently selected, and a statement or block statement is present below the current scope, the statement is moved into the scope.", 143, "/Users/allenwebster/4ed/code/4coder_scope_commands.cpp", 54, 774 },
|
||||
{ PROC_LINKS(search, 0), "search", 6, "Begins an incremental search down through the current buffer for a user specified string.", 89, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 852 },
|
||||
{ PROC_LINKS(search_identifier, 0), "search_identifier", 17, "Begins an incremental search down through the current buffer for the word or token under the cursor.", 100, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 866 },
|
||||
{ PROC_LINKS(seek_alphanumeric_left, 0), "seek_alphanumeric_left", 22, "Seek left for boundary between alphanumeric characters and non-alphanumeric characters.", 87, "/Users/allenwebster/4ed/code/4coder_seek.cpp", 44, 1238 },
|
||||
{ PROC_LINKS(seek_alphanumeric_or_camel_left, 0), "seek_alphanumeric_or_camel_left", 31, "Seek left for boundary between alphanumeric characters or camel case word and non-alphanumeric characters.", 106, "/Users/allenwebster/4ed/code/4coder_seek.cpp", 44, 1250 },
|
||||
{ PROC_LINKS(seek_alphanumeric_or_camel_right, 0), "seek_alphanumeric_or_camel_right", 32, "Seek right for boundary between alphanumeric characters or camel case word and non-alphanumeric characters.", 107, "/Users/allenwebster/4ed/code/4coder_seek.cpp", 44, 1244 },
|
||||
{ PROC_LINKS(seek_alphanumeric_right, 0), "seek_alphanumeric_right", 23, "Seek right for boundary between alphanumeric characters and non-alphanumeric characters.", 88, "/Users/allenwebster/4ed/code/4coder_seek.cpp", 44, 1232 },
|
||||
{ PROC_LINKS(seek_beginning_of_line, 0), "seek_beginning_of_line", 22, "Seeks the cursor to the beginning of the visual line.", 53, "/Users/allenwebster/4ed/code/4coder_seek.cpp", 44, 1131 },
|
||||
{ PROC_LINKS(seek_beginning_of_textual_line, 0), "seek_beginning_of_textual_line", 30, "Seeks the cursor to the beginning of the line across all text.", 62, "/Users/allenwebster/4ed/code/4coder_seek.cpp", 44, 1111 },
|
||||
{ PROC_LINKS(seek_end_of_line, 0), "seek_end_of_line", 16, "Seeks the cursor to the end of the visual line.", 47, "/Users/allenwebster/4ed/code/4coder_seek.cpp", 44, 1143 },
|
||||
{ PROC_LINKS(seek_end_of_textual_line, 0), "seek_end_of_textual_line", 24, "Seeks the cursor to the end of the line across all text.", 56, "/Users/allenwebster/4ed/code/4coder_seek.cpp", 44, 1121 },
|
||||
{ PROC_LINKS(seek_token_left, 0), "seek_token_left", 15, "Seek left for the next beginning of a token.", 44, "/Users/allenwebster/4ed/code/4coder_seek.cpp", 44, 1214 },
|
||||
{ PROC_LINKS(seek_token_right, 0), "seek_token_right", 16, "Seek right for the next end of a token.", 39, "/Users/allenwebster/4ed/code/4coder_seek.cpp", 44, 1208 },
|
||||
{ PROC_LINKS(seek_white_or_token_left, 0), "seek_white_or_token_left", 24, "Seek left for the next end of a token or boundary between whitespace and non-whitespace.", 88, "/Users/allenwebster/4ed/code/4coder_seek.cpp", 44, 1226 },
|
||||
{ PROC_LINKS(seek_white_or_token_right, 0), "seek_white_or_token_right", 25, "Seek right for the next end of a token or boundary between whitespace and non-whitespace.", 89, "/Users/allenwebster/4ed/code/4coder_seek.cpp", 44, 1220 },
|
||||
{ PROC_LINKS(seek_whitespace_down, 0), "seek_whitespace_down", 20, "Seeks the cursor down to the next blank line.", 45, "/Users/allenwebster/4ed/code/4coder_seek.cpp", 44, 1101 },
|
||||
{ PROC_LINKS(seek_whitespace_down_end_line, 0), "seek_whitespace_down_end_line", 29, "Seeks the cursor down to the next blank line and places it at the end of the line.", 82, "/Users/allenwebster/4ed/code/4coder_seek.cpp", 44, 1166 },
|
||||
{ PROC_LINKS(seek_whitespace_left, 0), "seek_whitespace_left", 20, "Seek left for the next boundary between whitespace and non-whitespace.", 70, "/Users/allenwebster/4ed/code/4coder_seek.cpp", 44, 1202 },
|
||||
{ PROC_LINKS(seek_whitespace_right, 0), "seek_whitespace_right", 21, "Seek right for the next boundary between whitespace and non-whitespace.", 71, "/Users/allenwebster/4ed/code/4coder_seek.cpp", 44, 1196 },
|
||||
{ PROC_LINKS(seek_whitespace_up, 0), "seek_whitespace_up", 18, "Seeks the cursor up to the next blank line.", 43, "/Users/allenwebster/4ed/code/4coder_seek.cpp", 44, 1091 },
|
||||
{ PROC_LINKS(seek_whitespace_up_end_line, 0), "seek_whitespace_up_end_line", 27, "Seeks the cursor up to the next blank line and places it at the end of the line.", 80, "/Users/allenwebster/4ed/code/4coder_seek.cpp", 44, 1155 },
|
||||
{ PROC_LINKS(select_all, 0), "select_all", 10, "Puts the cursor at the top of the file, and the mark at the bottom of the file.", 79, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 362 },
|
||||
{ PROC_LINKS(set_bindings_choose, 0), "set_bindings_choose", 19, "Remap keybindings using the 'choose' mapping rule.", 50, "/Users/allenwebster/4ed/code/4coder_remapping_commands.cpp", 58, 47 },
|
||||
{ PROC_LINKS(set_bindings_default, 0), "set_bindings_default", 20, "Remap keybindings using the 'default' mapping rule.", 51, "/Users/allenwebster/4ed/code/4coder_remapping_commands.cpp", 58, 61 },
|
||||
{ PROC_LINKS(set_bindings_mac_default, 0), "set_bindings_mac_default", 24, "Remap keybindings using the 'mac-default' mapping rule.", 55, "/Users/allenwebster/4ed/code/4coder_remapping_commands.cpp", 58, 75 },
|
||||
{ PROC_LINKS(set_mark, 0), "set_mark", 8, "Sets the mark to the current position of the cursor.", 52, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 91 },
|
||||
{ PROC_LINKS(set_mode_to_notepad_like, 0), "set_mode_to_notepad_like", 24, "Sets the edit mode to Notepad like.", 35, "/Users/allenwebster/4ed/code/4coder_default_framework.cpp", 57, 258 },
|
||||
{ PROC_LINKS(set_mode_to_original, 0), "set_mode_to_original", 20, "Sets the edit mode to 4coder original.", 38, "/Users/allenwebster/4ed/code/4coder_default_framework.cpp", 57, 252 },
|
||||
{ PROC_LINKS(setup_build_bat, 0), "setup_build_bat", 15, "Queries the user for several configuration options and initializes a new build batch script.", 92, "/Users/allenwebster/4ed/code/4coder_project_commands.cpp", 56, 1500 },
|
||||
{ PROC_LINKS(setup_build_bat_and_sh, 0), "setup_build_bat_and_sh", 22, "Queries the user for several configuration options and initializes a new build batch script.", 92, "/Users/allenwebster/4ed/code/4coder_project_commands.cpp", 56, 1512 },
|
||||
{ PROC_LINKS(setup_build_sh, 0), "setup_build_sh", 14, "Queries the user for several configuration options and initializes a new build shell script.", 92, "/Users/allenwebster/4ed/code/4coder_project_commands.cpp", 56, 1506 },
|
||||
{ PROC_LINKS(setup_new_project, 0), "setup_new_project", 17, "Queries the user for several configuration options and initializes a new 4coder project with build scripts for every OS.", 120, "/Users/allenwebster/4ed/code/4coder_project_commands.cpp", 56, 1493 },
|
||||
{ PROC_LINKS(show_filebar, 0), "show_filebar", 12, "Sets the current view to show it's filebar.", 43, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 510 },
|
||||
{ PROC_LINKS(show_scrollbar, 0), "show_scrollbar", 14, "Sets the current view to show it's scrollbar.", 45, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 496 },
|
||||
{ PROC_LINKS(snipe_token_or_word, 0), "snipe_token_or_word", 19, "Delete a single, whole token on or to the left of the cursor and post it to the clipboard.", 90, "/Users/allenwebster/4ed/code/4coder_seek.cpp", 44, 1270 },
|
||||
{ PROC_LINKS(snipe_token_or_word_right, 0), "snipe_token_or_word_right", 25, "Delete a single, whole token on or to the right of the cursor and post it to the clipboard.", 91, "/Users/allenwebster/4ed/code/4coder_seek.cpp", 44, 1276 },
|
||||
{ PROC_LINKS(snippet_lister, 0), "snippet_lister", 14, "Opens a snippet lister for inserting whole pre-written snippets of text.", 72, "/Users/allenwebster/4ed/code/4coder_combined_write_commands.cpp", 63, 193 },
|
||||
{ PROC_LINKS(suppress_mouse, 0), "suppress_mouse", 14, "Hides the mouse and causes all mosue input (clicks, position, wheel) to be ignored.", 83, "/Users/allenwebster/4ed/code/4coder_default_framework.cpp", 57, 234 },
|
||||
{ PROC_LINKS(swap_buffers_between_panels, 0), "swap_buffers_between_panels", 27, "Set the other non-active panel to view the buffer that the active panel views, and switch to that panel.", 104, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 1510 },
|
||||
{ PROC_LINKS(to_lowercase, 0), "to_lowercase", 12, "Converts all ascii text in the range between the cursor and the mark to lowercase.", 82, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 394 },
|
||||
{ PROC_LINKS(to_uppercase, 0), "to_uppercase", 12, "Converts all ascii text in the range between the cursor and the mark to uppercase.", 82, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 374 },
|
||||
{ PROC_LINKS(toggle_filebar, 0), "toggle_filebar", 14, "Toggles the visibility status of the current view's filebar.", 60, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 524 },
|
||||
{ PROC_LINKS(toggle_fullscreen, 0), "toggle_fullscreen", 17, "Toggle fullscreen mode on or off. The change(s) do not take effect until the next frame.", 89, "/Users/allenwebster/4ed/code/4coder_default_framework.cpp", 57, 282 },
|
||||
{ PROC_LINKS(toggle_highlight_enclosing_scopes, 0), "toggle_highlight_enclosing_scopes", 33, "In code files scopes surrounding the cursor are highlighted with distinguishing colors.", 87, "/Users/allenwebster/4ed/code/4coder_default_framework.cpp", 57, 270 },
|
||||
{ PROC_LINKS(toggle_highlight_line_at_cursor, 0), "toggle_highlight_line_at_cursor", 31, "Toggles the line highlight at the cursor.", 41, "/Users/allenwebster/4ed/code/4coder_default_framework.cpp", 57, 264 },
|
||||
{ PROC_LINKS(toggle_line_wrap, 0), "toggle_line_wrap", 16, "Toggles the current buffer's line wrapping status.", 50, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 533 },
|
||||
{ PROC_LINKS(toggle_mouse, 0), "toggle_mouse", 12, "Toggles the mouse suppression mode, see suppress_mouse and allow_mouse.", 71, "/Users/allenwebster/4ed/code/4coder_default_framework.cpp", 57, 246 },
|
||||
{ PROC_LINKS(toggle_paren_matching_helper, 0), "toggle_paren_matching_helper", 28, "In code files matching parentheses pairs are colored with distinguishing colors.", 80, "/Users/allenwebster/4ed/code/4coder_default_framework.cpp", 57, 276 },
|
||||
{ PROC_LINKS(toggle_show_whitespace, 0), "toggle_show_whitespace", 22, "Toggles the current buffer's whitespace visibility status.", 58, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 600 },
|
||||
{ PROC_LINKS(toggle_virtual_whitespace, 0), "toggle_virtual_whitespace", 25, "Toggles the current buffer's virtual whitespace status.", 55, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 589 },
|
||||
{ PROC_LINKS(undo, 0), "undo", 4, "Advances backwards through the undo history.", 44, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 1552 },
|
||||
{ PROC_LINKS(view_buffer_other_panel, 0), "view_buffer_other_panel", 23, "Set the other non-active panel to view the buffer that the active panel views, and switch to that panel.", 104, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 1500 },
|
||||
{ PROC_LINKS(view_jump_list_with_lister, 0), "view_jump_list_with_lister", 26, "When executed on a buffer with jumps, creates a persistent lister for all the jumps", 83, "/Users/allenwebster/4ed/code/4coder_jump_lister.cpp", 51, 108 },
|
||||
{ PROC_LINKS(word_complete, 0), "word_complete", 13, "Iteratively tries completing the word to the left of the cursor with other words in open buffers that have the same prefix string.", 130, "/Users/allenwebster/4ed/code/4coder_search.cpp", 46, 856 },
|
||||
{ PROC_LINKS(write_and_auto_tab, 0), "write_and_auto_tab", 18, "Inserts a character and auto-indents the line on which the cursor sits.", 71, "/Users/allenwebster/4ed/code/4coder_auto_indent.cpp", 51, 745 },
|
||||
{ PROC_LINKS(write_block, 0), "write_block", 11, "At the cursor, insert a block comment.", 38, "/Users/allenwebster/4ed/code/4coder_combined_write_commands.cpp", 63, 105 },
|
||||
{ PROC_LINKS(write_character, 0), "write_character", 15, "Inserts whatever character was used to trigger this command.", 60, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 40 },
|
||||
{ PROC_LINKS(write_hack, 0), "write_hack", 10, "At the cursor, insert a '// HACK' comment, includes user name if it was specified in config.4coder.", 99, "/Users/allenwebster/4ed/code/4coder_combined_write_commands.cpp", 63, 93 },
|
||||
{ PROC_LINKS(write_note, 0), "write_note", 10, "At the cursor, insert a '// NOTE' comment, includes user name if it was specified in config.4coder.", 99, "/Users/allenwebster/4ed/code/4coder_combined_write_commands.cpp", 63, 99 },
|
||||
{ PROC_LINKS(write_todo, 0), "write_todo", 10, "At the cursor, insert a '// TODO' comment, includes user name if it was specified in config.4coder.", 99, "/Users/allenwebster/4ed/code/4coder_combined_write_commands.cpp", 63, 87 },
|
||||
{ PROC_LINKS(write_underscore, 0), "write_underscore", 16, "Inserts an underscore.", 22, "/Users/allenwebster/4ed/code/4coder_base_commands.cpp", 53, 49 },
|
||||
{ PROC_LINKS(write_zero_struct, 0), "write_zero_struct", 17, "At the cursor, insert a ' = {0};'.", 34, "/Users/allenwebster/4ed/code/4coder_combined_write_commands.cpp", 63, 111 },
|
||||
};
|
||||
static int32_t fcoder_metacmd_ID_allow_mouse = 0;
|
||||
static int32_t fcoder_metacmd_ID_auto_tab_line_at_cursor = 1;
|
||||
static int32_t fcoder_metacmd_ID_auto_tab_range = 2;
|
||||
static int32_t fcoder_metacmd_ID_auto_tab_whole_file = 3;
|
||||
static int32_t fcoder_metacmd_ID_backspace_char = 4;
|
||||
static int32_t fcoder_metacmd_ID_backspace_word = 5;
|
||||
static int32_t fcoder_metacmd_ID_basic_change_active_panel = 6;
|
||||
static int32_t fcoder_metacmd_ID_build_in_build_panel = 7;
|
||||
static int32_t fcoder_metacmd_ID_build_search = 8;
|
||||
static int32_t fcoder_metacmd_ID_center_view = 9;
|
||||
static int32_t fcoder_metacmd_ID_change_active_panel = 10;
|
||||
static int32_t fcoder_metacmd_ID_change_active_panel_backwards = 11;
|
||||
static int32_t fcoder_metacmd_ID_change_to_build_panel = 12;
|
||||
static int32_t fcoder_metacmd_ID_clean_all_lines = 13;
|
||||
static int32_t fcoder_metacmd_ID_click_set_cursor = 14;
|
||||
static int32_t fcoder_metacmd_ID_click_set_cursor_and_mark = 15;
|
||||
static int32_t fcoder_metacmd_ID_click_set_cursor_if_lbutton = 16;
|
||||
static int32_t fcoder_metacmd_ID_click_set_mark = 17;
|
||||
static int32_t fcoder_metacmd_ID_close_all_code = 18;
|
||||
static int32_t fcoder_metacmd_ID_close_build_panel = 19;
|
||||
static int32_t fcoder_metacmd_ID_close_panel = 20;
|
||||
static int32_t fcoder_metacmd_ID_command_lister = 21;
|
||||
static int32_t fcoder_metacmd_ID_copy = 22;
|
||||
static int32_t fcoder_metacmd_ID_cursor_mark_swap = 23;
|
||||
static int32_t fcoder_metacmd_ID_cut = 24;
|
||||
static int32_t fcoder_metacmd_ID_decrease_face_size = 25;
|
||||
static int32_t fcoder_metacmd_ID_decrease_line_wrap = 26;
|
||||
static int32_t fcoder_metacmd_ID_delete_char = 27;
|
||||
static int32_t fcoder_metacmd_ID_delete_current_scope = 28;
|
||||
static int32_t fcoder_metacmd_ID_delete_file_query = 29;
|
||||
static int32_t fcoder_metacmd_ID_delete_line = 30;
|
||||
static int32_t fcoder_metacmd_ID_delete_range = 31;
|
||||
static int32_t fcoder_metacmd_ID_delete_word = 32;
|
||||
static int32_t fcoder_metacmd_ID_duplicate_line = 33;
|
||||
static int32_t fcoder_metacmd_ID_eol_dosify = 34;
|
||||
static int32_t fcoder_metacmd_ID_eol_nixify = 35;
|
||||
static int32_t fcoder_metacmd_ID_execute_any_cli = 36;
|
||||
static int32_t fcoder_metacmd_ID_execute_previous_cli = 37;
|
||||
static int32_t fcoder_metacmd_ID_exit_4coder = 38;
|
||||
static int32_t fcoder_metacmd_ID_goto_beginning_of_file = 39;
|
||||
static int32_t fcoder_metacmd_ID_goto_end_of_file = 40;
|
||||
static int32_t fcoder_metacmd_ID_goto_first_jump_direct = 41;
|
||||
static int32_t fcoder_metacmd_ID_goto_first_jump_same_panel_sticky = 42;
|
||||
static int32_t fcoder_metacmd_ID_goto_first_jump_sticky = 43;
|
||||
static int32_t fcoder_metacmd_ID_goto_jump_at_cursor_direct = 44;
|
||||
static int32_t fcoder_metacmd_ID_goto_jump_at_cursor_same_panel_direct = 45;
|
||||
static int32_t fcoder_metacmd_ID_goto_jump_at_cursor_same_panel_sticky = 46;
|
||||
static int32_t fcoder_metacmd_ID_goto_jump_at_cursor_sticky = 47;
|
||||
static int32_t fcoder_metacmd_ID_goto_line = 48;
|
||||
static int32_t fcoder_metacmd_ID_goto_next_jump_direct = 49;
|
||||
static int32_t fcoder_metacmd_ID_goto_next_jump_no_skips_direct = 50;
|
||||
static int32_t fcoder_metacmd_ID_goto_next_jump_no_skips_sticky = 51;
|
||||
static int32_t fcoder_metacmd_ID_goto_next_jump_sticky = 52;
|
||||
static int32_t fcoder_metacmd_ID_goto_prev_jump_direct = 53;
|
||||
static int32_t fcoder_metacmd_ID_goto_prev_jump_no_skips_direct = 54;
|
||||
static int32_t fcoder_metacmd_ID_goto_prev_jump_no_skips_sticky = 55;
|
||||
static int32_t fcoder_metacmd_ID_goto_prev_jump_sticky = 56;
|
||||
static int32_t fcoder_metacmd_ID_hide_filebar = 57;
|
||||
static int32_t fcoder_metacmd_ID_hide_scrollbar = 58;
|
||||
static int32_t fcoder_metacmd_ID_highlight_next_scope_absolute = 59;
|
||||
static int32_t fcoder_metacmd_ID_highlight_prev_scope_absolute = 60;
|
||||
static int32_t fcoder_metacmd_ID_highlight_surrounding_scope = 61;
|
||||
static int32_t fcoder_metacmd_ID_if0_off = 62;
|
||||
static int32_t fcoder_metacmd_ID_increase_face_size = 63;
|
||||
static int32_t fcoder_metacmd_ID_increase_line_wrap = 64;
|
||||
static int32_t fcoder_metacmd_ID_interactive_kill_buffer = 65;
|
||||
static int32_t fcoder_metacmd_ID_interactive_new = 66;
|
||||
static int32_t fcoder_metacmd_ID_interactive_open = 67;
|
||||
static int32_t fcoder_metacmd_ID_interactive_open_or_new = 68;
|
||||
static int32_t fcoder_metacmd_ID_interactive_switch_buffer = 69;
|
||||
static int32_t fcoder_metacmd_ID_kill_buffer = 70;
|
||||
static int32_t fcoder_metacmd_ID_left_adjust_view = 71;
|
||||
static int32_t fcoder_metacmd_ID_list_all_functions_all_buffers = 72;
|
||||
static int32_t fcoder_metacmd_ID_list_all_functions_all_buffers_lister = 73;
|
||||
static int32_t fcoder_metacmd_ID_list_all_functions_current_buffer = 74;
|
||||
static int32_t fcoder_metacmd_ID_list_all_functions_current_buffer_lister = 75;
|
||||
static int32_t fcoder_metacmd_ID_list_all_locations = 76;
|
||||
static int32_t fcoder_metacmd_ID_list_all_locations_case_insensitive = 77;
|
||||
static int32_t fcoder_metacmd_ID_list_all_locations_of_identifier = 78;
|
||||
static int32_t fcoder_metacmd_ID_list_all_locations_of_identifier_case_insensitive = 79;
|
||||
static int32_t fcoder_metacmd_ID_list_all_locations_of_selection = 80;
|
||||
static int32_t fcoder_metacmd_ID_list_all_locations_of_selection_case_insensitive = 81;
|
||||
static int32_t fcoder_metacmd_ID_list_all_locations_of_type_definition = 82;
|
||||
static int32_t fcoder_metacmd_ID_list_all_locations_of_type_definition_of_identifier = 83;
|
||||
static int32_t fcoder_metacmd_ID_list_all_substring_locations = 84;
|
||||
static int32_t fcoder_metacmd_ID_list_all_substring_locations_case_insensitive = 85;
|
||||
static int32_t fcoder_metacmd_ID_lister__activate = 86;
|
||||
static int32_t fcoder_metacmd_ID_lister__backspace_text_field = 87;
|
||||
static int32_t fcoder_metacmd_ID_lister__backspace_text_field__default = 88;
|
||||
static int32_t fcoder_metacmd_ID_lister__backspace_text_field__file_path = 89;
|
||||
static int32_t fcoder_metacmd_ID_lister__mouse_press = 90;
|
||||
static int32_t fcoder_metacmd_ID_lister__mouse_release = 91;
|
||||
static int32_t fcoder_metacmd_ID_lister__move_down = 92;
|
||||
static int32_t fcoder_metacmd_ID_lister__move_down__default = 93;
|
||||
static int32_t fcoder_metacmd_ID_lister__move_up = 94;
|
||||
static int32_t fcoder_metacmd_ID_lister__move_up__default = 95;
|
||||
static int32_t fcoder_metacmd_ID_lister__quit = 96;
|
||||
static int32_t fcoder_metacmd_ID_lister__repaint = 97;
|
||||
static int32_t fcoder_metacmd_ID_lister__wheel_scroll = 98;
|
||||
static int32_t fcoder_metacmd_ID_lister__write_character = 99;
|
||||
static int32_t fcoder_metacmd_ID_lister__write_character__default = 100;
|
||||
static int32_t fcoder_metacmd_ID_lister__write_character__file_path = 101;
|
||||
static int32_t fcoder_metacmd_ID_lister__write_character__fixed_list = 102;
|
||||
static int32_t fcoder_metacmd_ID_load_project = 103;
|
||||
static int32_t fcoder_metacmd_ID_make_directory_query = 104;
|
||||
static int32_t fcoder_metacmd_ID_mouse_wheel_scroll = 105;
|
||||
static int32_t fcoder_metacmd_ID_move_down = 106;
|
||||
static int32_t fcoder_metacmd_ID_move_down_10 = 107;
|
||||
static int32_t fcoder_metacmd_ID_move_down_textual = 108;
|
||||
static int32_t fcoder_metacmd_ID_move_left = 109;
|
||||
static int32_t fcoder_metacmd_ID_move_line_down = 110;
|
||||
static int32_t fcoder_metacmd_ID_move_line_up = 111;
|
||||
static int32_t fcoder_metacmd_ID_move_right = 112;
|
||||
static int32_t fcoder_metacmd_ID_move_up = 113;
|
||||
static int32_t fcoder_metacmd_ID_move_up_10 = 114;
|
||||
static int32_t fcoder_metacmd_ID_newline_or_goto_position_direct = 115;
|
||||
static int32_t fcoder_metacmd_ID_newline_or_goto_position_same_panel_direct = 116;
|
||||
static int32_t fcoder_metacmd_ID_newline_or_goto_position_same_panel_sticky = 117;
|
||||
static int32_t fcoder_metacmd_ID_newline_or_goto_position_sticky = 118;
|
||||
static int32_t fcoder_metacmd_ID_open_all_code = 119;
|
||||
static int32_t fcoder_metacmd_ID_open_all_code_recursive = 120;
|
||||
static int32_t fcoder_metacmd_ID_open_color_tweaker = 121;
|
||||
static int32_t fcoder_metacmd_ID_open_file_in_quotes = 122;
|
||||
static int32_t fcoder_metacmd_ID_open_in_other = 123;
|
||||
static int32_t fcoder_metacmd_ID_open_long_braces = 124;
|
||||
static int32_t fcoder_metacmd_ID_open_long_braces_break = 125;
|
||||
static int32_t fcoder_metacmd_ID_open_long_braces_semicolon = 126;
|
||||
static int32_t fcoder_metacmd_ID_open_matching_file_cpp = 127;
|
||||
static int32_t fcoder_metacmd_ID_open_panel_hsplit = 128;
|
||||
static int32_t fcoder_metacmd_ID_open_panel_vsplit = 129;
|
||||
static int32_t fcoder_metacmd_ID_page_down = 130;
|
||||
static int32_t fcoder_metacmd_ID_page_up = 131;
|
||||
static int32_t fcoder_metacmd_ID_paste = 132;
|
||||
static int32_t fcoder_metacmd_ID_paste_and_indent = 133;
|
||||
static int32_t fcoder_metacmd_ID_paste_next = 134;
|
||||
static int32_t fcoder_metacmd_ID_paste_next_and_indent = 135;
|
||||
static int32_t fcoder_metacmd_ID_place_in_scope = 136;
|
||||
static int32_t fcoder_metacmd_ID_project_command_lister = 137;
|
||||
static int32_t fcoder_metacmd_ID_project_fkey_command = 138;
|
||||
static int32_t fcoder_metacmd_ID_project_go_to_root_directory = 139;
|
||||
static int32_t fcoder_metacmd_ID_query_replace = 140;
|
||||
static int32_t fcoder_metacmd_ID_query_replace_identifier = 141;
|
||||
static int32_t fcoder_metacmd_ID_query_replace_selection = 142;
|
||||
static int32_t fcoder_metacmd_ID_redo = 143;
|
||||
static int32_t fcoder_metacmd_ID_reload_themes = 144;
|
||||
static int32_t fcoder_metacmd_ID_remap_interactive = 145;
|
||||
static int32_t fcoder_metacmd_ID_rename_file_query = 146;
|
||||
static int32_t fcoder_metacmd_ID_reopen = 147;
|
||||
static int32_t fcoder_metacmd_ID_replace_in_range = 148;
|
||||
static int32_t fcoder_metacmd_ID_reverse_search = 149;
|
||||
static int32_t fcoder_metacmd_ID_reverse_search_identifier = 150;
|
||||
static int32_t fcoder_metacmd_ID_save = 151;
|
||||
static int32_t fcoder_metacmd_ID_save_all_dirty_buffers = 152;
|
||||
static int32_t fcoder_metacmd_ID_save_to_query = 153;
|
||||
static int32_t fcoder_metacmd_ID_scope_absorb_down = 154;
|
||||
static int32_t fcoder_metacmd_ID_search = 155;
|
||||
static int32_t fcoder_metacmd_ID_search_identifier = 156;
|
||||
static int32_t fcoder_metacmd_ID_seek_alphanumeric_left = 157;
|
||||
static int32_t fcoder_metacmd_ID_seek_alphanumeric_or_camel_left = 158;
|
||||
static int32_t fcoder_metacmd_ID_seek_alphanumeric_or_camel_right = 159;
|
||||
static int32_t fcoder_metacmd_ID_seek_alphanumeric_right = 160;
|
||||
static int32_t fcoder_metacmd_ID_seek_beginning_of_line = 161;
|
||||
static int32_t fcoder_metacmd_ID_seek_beginning_of_textual_line = 162;
|
||||
static int32_t fcoder_metacmd_ID_seek_end_of_line = 163;
|
||||
static int32_t fcoder_metacmd_ID_seek_end_of_textual_line = 164;
|
||||
static int32_t fcoder_metacmd_ID_seek_token_left = 165;
|
||||
static int32_t fcoder_metacmd_ID_seek_token_right = 166;
|
||||
static int32_t fcoder_metacmd_ID_seek_white_or_token_left = 167;
|
||||
static int32_t fcoder_metacmd_ID_seek_white_or_token_right = 168;
|
||||
static int32_t fcoder_metacmd_ID_seek_whitespace_down = 169;
|
||||
static int32_t fcoder_metacmd_ID_seek_whitespace_down_end_line = 170;
|
||||
static int32_t fcoder_metacmd_ID_seek_whitespace_left = 171;
|
||||
static int32_t fcoder_metacmd_ID_seek_whitespace_right = 172;
|
||||
static int32_t fcoder_metacmd_ID_seek_whitespace_up = 173;
|
||||
static int32_t fcoder_metacmd_ID_seek_whitespace_up_end_line = 174;
|
||||
static int32_t fcoder_metacmd_ID_select_all = 175;
|
||||
static int32_t fcoder_metacmd_ID_set_bindings_choose = 176;
|
||||
static int32_t fcoder_metacmd_ID_set_bindings_default = 177;
|
||||
static int32_t fcoder_metacmd_ID_set_bindings_mac_default = 178;
|
||||
static int32_t fcoder_metacmd_ID_set_mark = 179;
|
||||
static int32_t fcoder_metacmd_ID_set_mode_to_notepad_like = 180;
|
||||
static int32_t fcoder_metacmd_ID_set_mode_to_original = 181;
|
||||
static int32_t fcoder_metacmd_ID_setup_build_bat = 182;
|
||||
static int32_t fcoder_metacmd_ID_setup_build_bat_and_sh = 183;
|
||||
static int32_t fcoder_metacmd_ID_setup_build_sh = 184;
|
||||
static int32_t fcoder_metacmd_ID_setup_new_project = 185;
|
||||
static int32_t fcoder_metacmd_ID_show_filebar = 186;
|
||||
static int32_t fcoder_metacmd_ID_show_scrollbar = 187;
|
||||
static int32_t fcoder_metacmd_ID_snipe_token_or_word = 188;
|
||||
static int32_t fcoder_metacmd_ID_snipe_token_or_word_right = 189;
|
||||
static int32_t fcoder_metacmd_ID_snippet_lister = 190;
|
||||
static int32_t fcoder_metacmd_ID_suppress_mouse = 191;
|
||||
static int32_t fcoder_metacmd_ID_swap_buffers_between_panels = 192;
|
||||
static int32_t fcoder_metacmd_ID_to_lowercase = 193;
|
||||
static int32_t fcoder_metacmd_ID_to_uppercase = 194;
|
||||
static int32_t fcoder_metacmd_ID_toggle_filebar = 195;
|
||||
static int32_t fcoder_metacmd_ID_toggle_fullscreen = 196;
|
||||
static int32_t fcoder_metacmd_ID_toggle_highlight_enclosing_scopes = 197;
|
||||
static int32_t fcoder_metacmd_ID_toggle_highlight_line_at_cursor = 198;
|
||||
static int32_t fcoder_metacmd_ID_toggle_line_wrap = 199;
|
||||
static int32_t fcoder_metacmd_ID_toggle_mouse = 200;
|
||||
static int32_t fcoder_metacmd_ID_toggle_paren_matching_helper = 201;
|
||||
static int32_t fcoder_metacmd_ID_toggle_show_whitespace = 202;
|
||||
static int32_t fcoder_metacmd_ID_toggle_virtual_whitespace = 203;
|
||||
static int32_t fcoder_metacmd_ID_undo = 204;
|
||||
static int32_t fcoder_metacmd_ID_view_buffer_other_panel = 205;
|
||||
static int32_t fcoder_metacmd_ID_view_jump_list_with_lister = 206;
|
||||
static int32_t fcoder_metacmd_ID_word_complete = 207;
|
||||
static int32_t fcoder_metacmd_ID_write_and_auto_tab = 208;
|
||||
static int32_t fcoder_metacmd_ID_write_block = 209;
|
||||
static int32_t fcoder_metacmd_ID_write_character = 210;
|
||||
static int32_t fcoder_metacmd_ID_write_hack = 211;
|
||||
static int32_t fcoder_metacmd_ID_write_note = 212;
|
||||
static int32_t fcoder_metacmd_ID_write_todo = 213;
|
||||
static int32_t fcoder_metacmd_ID_write_underscore = 214;
|
||||
static int32_t fcoder_metacmd_ID_write_zero_struct = 215;
|
||||
#endif
|
|
@ -142,9 +142,9 @@ bind(context, 'T', MDFR_ALT, list_all_locations_of_type_definition_of_identifier
|
|||
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, '[', MDFR_ALT, highlight_surrounding_scope);
|
||||
bind(context, ']', MDFR_ALT, highlight_prev_scope_absolute);
|
||||
bind(context, '\'', MDFR_ALT, highlight_next_scope_absolute);
|
||||
bind(context, '[', MDFR_ALT, select_surrounding_scope);
|
||||
bind(context, ']', MDFR_ALT, select_prev_scope_absolute);
|
||||
bind(context, '\'', MDFR_ALT, select_next_scope_absolute);
|
||||
bind(context, '/', MDFR_ALT, place_in_scope);
|
||||
bind(context, '-', MDFR_ALT, delete_current_scope);
|
||||
bind(context, 'j', MDFR_ALT, scope_absorb_down);
|
||||
|
@ -187,7 +187,7 @@ bind(context, 'n', MDFR_CTRL, goto_next_jump_sticky);
|
|||
bind(context, 'N', MDFR_CTRL, goto_prev_jump_sticky);
|
||||
bind(context, 'M', MDFR_CTRL, goto_first_jump_sticky);
|
||||
bind(context, 'm', MDFR_CTRL, build_in_build_panel);
|
||||
bind(context, 'b', MDFR_ALT, toggle_filebar);
|
||||
bind(context, 'b', MDFR_CTRL, toggle_filebar);
|
||||
bind(context, 'z', MDFR_CTRL, execute_any_cli);
|
||||
bind(context, 'Z', MDFR_CTRL, execute_previous_cli);
|
||||
bind(context, 'x', MDFR_CTRL, command_lister);
|
||||
|
@ -312,9 +312,9 @@ bind(context, 'T', MDFR_CTRL, list_all_locations_of_type_definition_of_identifie
|
|||
bind(context, '[', MDFR_CMND, open_long_braces);
|
||||
bind(context, '{', MDFR_CMND, open_long_braces_semicolon);
|
||||
bind(context, '}', MDFR_CMND, open_long_braces_break);
|
||||
bind(context, '[', MDFR_CTRL, highlight_surrounding_scope);
|
||||
bind(context, ']', MDFR_CTRL, highlight_prev_scope_absolute);
|
||||
bind(context, '\'', MDFR_CTRL, highlight_next_scope_absolute);
|
||||
bind(context, '[', MDFR_CTRL, select_surrounding_scope);
|
||||
bind(context, ']', MDFR_CTRL, select_prev_scope_absolute);
|
||||
bind(context, '\'', MDFR_CTRL, select_next_scope_absolute);
|
||||
bind(context, '/', MDFR_CTRL, place_in_scope);
|
||||
bind(context, '-', MDFR_CTRL, delete_current_scope);
|
||||
bind(context, 'j', MDFR_CTRL, scope_absorb_down);
|
||||
|
@ -514,9 +514,9 @@ static Meta_Key_Bind fcoder_binds_for_default_default_code_map[31] = {
|
|||
{0, 91, 1, "open_long_braces", 16, LINK_PROCS(open_long_braces)},
|
||||
{0, 123, 1, "open_long_braces_semicolon", 26, LINK_PROCS(open_long_braces_semicolon)},
|
||||
{0, 125, 1, "open_long_braces_break", 22, LINK_PROCS(open_long_braces_break)},
|
||||
{0, 91, 2, "highlight_surrounding_scope", 27, LINK_PROCS(highlight_surrounding_scope)},
|
||||
{0, 93, 2, "highlight_prev_scope_absolute", 29, LINK_PROCS(highlight_prev_scope_absolute)},
|
||||
{0, 39, 2, "highlight_next_scope_absolute", 29, LINK_PROCS(highlight_next_scope_absolute)},
|
||||
{0, 91, 2, "select_surrounding_scope", 24, LINK_PROCS(select_surrounding_scope)},
|
||||
{0, 93, 2, "select_prev_scope_absolute", 26, LINK_PROCS(select_prev_scope_absolute)},
|
||||
{0, 39, 2, "select_next_scope_absolute", 26, LINK_PROCS(select_next_scope_absolute)},
|
||||
{0, 47, 2, "place_in_scope", 14, LINK_PROCS(place_in_scope)},
|
||||
{0, 45, 2, "delete_current_scope", 20, LINK_PROCS(delete_current_scope)},
|
||||
{0, 106, 2, "scope_absorb_down", 17, LINK_PROCS(scope_absorb_down)},
|
||||
|
@ -563,7 +563,7 @@ static Meta_Key_Bind fcoder_binds_for_mac_default_mapid_global[38] = {
|
|||
{0, 78, 1, "goto_prev_jump_sticky", 21, LINK_PROCS(goto_prev_jump_sticky)},
|
||||
{0, 77, 1, "goto_first_jump_sticky", 22, LINK_PROCS(goto_first_jump_sticky)},
|
||||
{0, 109, 1, "build_in_build_panel", 20, LINK_PROCS(build_in_build_panel)},
|
||||
{0, 98, 2, "toggle_filebar", 14, LINK_PROCS(toggle_filebar)},
|
||||
{0, 98, 1, "toggle_filebar", 14, LINK_PROCS(toggle_filebar)},
|
||||
{0, 122, 1, "execute_any_cli", 15, LINK_PROCS(execute_any_cli)},
|
||||
{0, 90, 1, "execute_previous_cli", 20, LINK_PROCS(execute_previous_cli)},
|
||||
{0, 120, 1, "command_lister", 14, LINK_PROCS(command_lister)},
|
||||
|
@ -687,9 +687,9 @@ static Meta_Key_Bind fcoder_binds_for_mac_default_default_code_map[31] = {
|
|||
{0, 91, 4, "open_long_braces", 16, LINK_PROCS(open_long_braces)},
|
||||
{0, 123, 4, "open_long_braces_semicolon", 26, LINK_PROCS(open_long_braces_semicolon)},
|
||||
{0, 125, 4, "open_long_braces_break", 22, LINK_PROCS(open_long_braces_break)},
|
||||
{0, 91, 1, "highlight_surrounding_scope", 27, LINK_PROCS(highlight_surrounding_scope)},
|
||||
{0, 93, 1, "highlight_prev_scope_absolute", 29, LINK_PROCS(highlight_prev_scope_absolute)},
|
||||
{0, 39, 1, "highlight_next_scope_absolute", 29, LINK_PROCS(highlight_next_scope_absolute)},
|
||||
{0, 91, 1, "select_surrounding_scope", 24, LINK_PROCS(select_surrounding_scope)},
|
||||
{0, 93, 1, "select_prev_scope_absolute", 26, LINK_PROCS(select_prev_scope_absolute)},
|
||||
{0, 39, 1, "select_next_scope_absolute", 26, LINK_PROCS(select_next_scope_absolute)},
|
||||
{0, 47, 1, "place_in_scope", 14, LINK_PROCS(place_in_scope)},
|
||||
{0, 45, 1, "delete_current_scope", 20, LINK_PROCS(delete_current_scope)},
|
||||
{0, 106, 1, "scope_absorb_down", 17, LINK_PROCS(scope_absorb_down)},
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
// For a quick way to extend the default keywords:
|
||||
// #define FCPP_LEXER_EXTRA_KEYWORDS "my_keywords.h"
|
||||
// And in the file "my_keywords.h", list the keywords you want.
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
// TOP
|
||||
|
||||
#ifndef FCPP_LEXER_TYPES_INC
|
||||
|
|
|
@ -382,7 +382,7 @@ view_set_to_region(Application_Links *app, View_Summary *view, int32_t major_pos
|
|||
}
|
||||
}
|
||||
|
||||
CUSTOM_COMMAND_SIG(highlight_surrounding_scope)
|
||||
CUSTOM_COMMAND_SIG(select_surrounding_scope)
|
||||
CUSTOM_DOC("Finds the scope enclosed by '{' '}' surrounding the cursor and puts the cursor and mark on the '{' and '}'.")
|
||||
{
|
||||
uint32_t access = AccessProtected;
|
||||
|
@ -394,10 +394,11 @@ CUSTOM_DOC("Finds the scope enclosed by '{' '}' surrounding the cursor and puts
|
|||
view_set_cursor(app, &view, seek_pos(range.first), true);
|
||||
view_set_mark(app, &view, seek_pos(range.end));
|
||||
view_set_to_region(app, &view, range.first, range.end, scope_center_threshold);
|
||||
no_mark_snap_to_cursor(app, view.view_id);
|
||||
}
|
||||
}
|
||||
|
||||
CUSTOM_COMMAND_SIG(highlight_next_scope_absolute)
|
||||
CUSTOM_COMMAND_SIG(select_next_scope_absolute)
|
||||
CUSTOM_DOC("Finds the first scope started by '{' after the cursor and puts the cursor and mark on the '{' and '}'.")
|
||||
{
|
||||
uint32_t access = AccessProtected;
|
||||
|
@ -412,11 +413,12 @@ CUSTOM_DOC("Finds the first scope started by '{' after the cursor and puts the c
|
|||
view_set_cursor(app, &view, seek_pos(top), true);
|
||||
view_set_mark(app, &view, seek_pos(bottom));
|
||||
view_set_to_region(app, &view, top, bottom, scope_center_threshold);
|
||||
no_mark_snap_to_cursor(app, view.view_id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
CUSTOM_COMMAND_SIG(highlight_prev_scope_absolute)
|
||||
CUSTOM_COMMAND_SIG(select_prev_scope_absolute)
|
||||
CUSTOM_DOC("Finds the first scope started by '{' before the cursor and puts the cursor and mark on the '{' and '}'.")
|
||||
{
|
||||
uint32_t access = AccessProtected;
|
||||
|
@ -430,6 +432,7 @@ CUSTOM_DOC("Finds the first scope started by '{' before the cursor and puts the
|
|||
view_set_cursor(app, &view, seek_pos(top), true);
|
||||
view_set_mark(app, &view, seek_pos(bottom));
|
||||
view_set_to_region(app, &view, top, bottom, scope_center_threshold);
|
||||
no_mark_snap_to_cursor(app, view.view_id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -791,7 +794,7 @@ CUSTOM_DOC("If a scope is currently selected, and a statement or block statement
|
|||
|
||||
Temp_Memory temp = begin_temp_memory(part);
|
||||
if (buffer_get_char(app, &buffer, top) == '{' && buffer_get_char(app, &buffer, bottom-1) == '}'){
|
||||
Range range;
|
||||
Range range = {0};
|
||||
if (find_whole_statement_down(app, &buffer, bottom, &range.start, &range.end)){
|
||||
char *string_space = push_array(part, char, range.end - range.start);
|
||||
buffer_read_range(app, &buffer, range.start, range.end, string_space);
|
||||
|
@ -842,6 +845,8 @@ CUSTOM_DOC("If a scope is currently selected, and a statement or block statement
|
|||
}
|
||||
}
|
||||
end_temp_memory(temp);
|
||||
|
||||
no_mark_snap_to_cursor(app, view.view_id);
|
||||
}
|
||||
|
||||
// BOTTOM
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
/*
|
||||
New File
|
||||
*/
|
||||
|
||||
// TOP
|
||||
|
||||
|
|
|
@ -275,22 +275,23 @@ lister_update_ui(Application_Links *app, Partition *scratch, View_Summary *view,
|
|||
Lister_Node_Ptr_Array substring_matches = {0};
|
||||
substring_matches.node_ptrs = push_array(scratch, Lister_Node*, node_count);
|
||||
|
||||
String key = state->lister.key_string;
|
||||
Absolutes absolutes = {0};
|
||||
get_absolutes(state->lister.key_string, &absolutes, true, true);
|
||||
get_absolutes(key, &absolutes, true, true);
|
||||
bool32 has_wildcard = (absolutes.count > 3);
|
||||
|
||||
for (Lister_Node *node = state->lister.options.first;
|
||||
node != 0;
|
||||
node = node->next){
|
||||
if (state->lister.key_string.size == 0 ||
|
||||
if (key.size == 0 ||
|
||||
wildcard_match_s(&absolutes, node->string, false)){
|
||||
bool32 has_wildcard = (absolutes.count > 2);
|
||||
if (match_insensitive(node->string, state->lister.key_string) && exact_matches.count == 0){
|
||||
if (match_insensitive(node->string, key) && exact_matches.count == 0){
|
||||
exact_matches.node_ptrs[exact_matches.count++] = node;
|
||||
}
|
||||
else if (!has_wildcard &&
|
||||
match_part_insensitive(node->string, state->lister.key_string) &&
|
||||
node->string.size > state->lister.key_string.size &&
|
||||
node->string.str[state->lister.key_string.size] == '.'){
|
||||
match_part_insensitive(node->string, key) &&
|
||||
node->string.size > key.size &&
|
||||
node->string.str[key.size] == '.'){
|
||||
before_extension_matches.node_ptrs[before_extension_matches.count++] = node;
|
||||
}
|
||||
else{
|
||||
|
|
1
4ed.cpp
1
4ed.cpp
|
@ -153,6 +153,7 @@ file_cursor_to_end(System_Functions *system, Models *models, Editing_File *file)
|
|||
continue;
|
||||
}
|
||||
view_cursor_move(system, view, pos);
|
||||
view->transient.edit_pos->mark = view->transient.edit_pos->cursor.pos;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1212,6 +1212,7 @@ DOC_SEE(Buffer_Create_Flag)
|
|||
Partition *part = &models->mem.part;
|
||||
|
||||
Buffer_Summary result = {0};
|
||||
b32 buffer_is_for_new_file = false;
|
||||
|
||||
if (filename_len > 0){
|
||||
Temp_Memory temp = begin_temp_memory(part);
|
||||
|
@ -1257,6 +1258,9 @@ DOC_SEE(Buffer_Create_Flag)
|
|||
}
|
||||
|
||||
if (do_empty_buffer){
|
||||
if (has_canon_name){
|
||||
buffer_is_for_new_file = true;
|
||||
}
|
||||
if ((flags & BufferCreate_NeverNew) == 0){
|
||||
file = working_set_alloc_always(working_set, heap, &models->lifetime_allocator);
|
||||
if (file != 0){
|
||||
|
@ -1313,6 +1317,16 @@ DOC_SEE(Buffer_Create_Flag)
|
|||
i32 size = buffer_size(&file->state.buffer);
|
||||
if (size > 0){
|
||||
edit_single(system, models, file, 0, size, 0, 0);
|
||||
if (has_canon_name){
|
||||
buffer_is_for_new_file = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (file != 0 && buffer_is_for_new_file &&
|
||||
(flags & BufferCreate_SuppressNewFileHook) == 0){
|
||||
if (models->hook_new_file != 0){
|
||||
models->hook_new_file(&models->app_links, file->id.id);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2490,7 +2504,7 @@ Managed_Variable_Create(Application_Links *app, char *null_terminated_name, uint
|
|||
/*
|
||||
DOC_PARAM(null_terminated_name, The unique name for this managed variable.)
|
||||
DOC_PARAM(default_value, The default value that this variable will have in a scope that has not set this variable.)
|
||||
DOC_RETURN(Returns the Managed_Variable_ID for the new variable on success or zero on failure. This call fails when a variable with the given name alraedy exists.)
|
||||
DOC_RETURN(Returns the Managed_Variable_ID for the new variable on success and zero on failure. This call fails when a variable with the given name alraedy exists.)
|
||||
DOC(Variables are stored in scopes but creating a variable does not mean that all scopes will allocate space for this variable. Space for variables is allocated sparsly on demand in each scope. Once a variable exists it will exist for the entire duration of the 4coder session and will never have a different id. The id will be used to set and get the value of the variable in managed scopes.)
|
||||
DOC_SEE(managed_variable_get_id)
|
||||
DOC_SEE(managed_variable_create_or_get_id)
|
||||
|
@ -2508,7 +2522,7 @@ API_EXPORT Managed_Variable_ID
|
|||
Managed_Variable_Get_ID(Application_Links *app, char *null_terminated_name)
|
||||
/*
|
||||
DOC_PARAM(null_terminated_name, The unique name for this managed variable.)
|
||||
DOC_RETURN(Returns the Managed_Variable_ID for the variable on success or zero on failure. This call fails when no variable that already exists has the given name.)
|
||||
DOC_RETURN(Returns the Managed_Variable_ID for the variable on success and zero on failure. This call fails when no variable that already exists has the given name.)
|
||||
DOC_SEE(managed_variable_create)
|
||||
DOC_SEE(managed_variable_create_or_get_id)
|
||||
*/
|
||||
|
@ -2596,7 +2610,7 @@ Alloc_Managed_Memory_In_Scope(Application_Links *app, Managed_Scope scope, int32
|
|||
DOC_PARAM(scope, A handle to the scope in which the new object will be allocated.)
|
||||
DOC_PARAM(item_size, The size, in bytes, of a single 'item' in this memory object. This effects the size of the allocation, and the indexing of the memory in the store and load calls.)
|
||||
DOC_PARAM(count, The number of 'items' allocated for this memory object. The total memory size is item_size*count.)
|
||||
DOC_RETURN(Returns the handle to the new object on success, or zero on failure. This call fails if scope does not refer to a valid managed scope.)
|
||||
DOC_RETURN(Returns the handle to the new object on success, and zero on failure. This call fails if scope does not refer to a valid managed scope.)
|
||||
DOC(Managed objects allocate memory that is tied to the scope. When the scope is cleared or destroyed all of the memory allocated in it is freed in bulk and the handles to the objects never again become valid. Thus the handle returned by this call will only ever refer to this memory allocation.)
|
||||
*/
|
||||
{
|
||||
|
@ -2624,7 +2638,7 @@ Alloc_Buffer_Markers_On_Buffer(Application_Links *app, Buffer_ID buffer_id, int3
|
|||
DOC_PARAM(buffer_id, The id for the buffer onto which these markers will be attached. The markers will live in the scope of the buffer, or in another scope dependent on this buffer, thus guaranteeing that when the buffer is closed, all attached markers are freed in bulk with it.)
|
||||
DOC_PARAM(count, The number of Marker items allocated in this object. The total memory size is sizeof(Marker)*count.)
|
||||
DOC_PARAM(optional_extra_scope, If this pointer is non-null, then it is treated as a scope with additional dependencies for the allocated markers. In this case, the scope of buffer and extra scope are unioned via get_managed_scope_with_multiple_dependencies and marker object lives in the resulting scope.)
|
||||
DOC_RETURN(Returns the handle to the new object on succes, or zero on failure. This call fails if buffer_id does not refer to a valid buffer, or optional_extra_scope does not refer to a valid scope.)
|
||||
DOC_RETURN(Returns the handle to the new object on succes, and zero on failure. This call fails if buffer_id does not refer to a valid buffer, or optional_extra_scope does not refer to a valid scope.)
|
||||
DOC(The created managed object is essentially a memory object with item size equal to sizeof(Marker). The primary difference is that if the buffer referred to by buffer_id is edited, the position of all markers attached to that buffer can be changed by the core. Thus this not a memory storage so much as position marking and tracking in a buffer.)
|
||||
DOC_SEE(alloc_managed_memory_in_scope)
|
||||
DOC_SEE(Marker)
|
||||
|
@ -2684,7 +2698,7 @@ API_EXPORT Marker_Visual
|
|||
Create_Marker_Visual(Application_Links *app, Managed_Object object)
|
||||
/*
|
||||
DOC_PARAM(object, A handle to the marker object on which the new visual will be attached.)
|
||||
DOC_RETURN(Returns the handle to the newly created marker visual on success, or zero on failure. This call fails when object does not refer to a valid marker object.)
|
||||
DOC_RETURN(Returns the handle to the newly created marker visual on success, and zero on failure. This call fails when object does not refer to a valid marker object.)
|
||||
DOC(A marker visual adds graphical effects to markers such as cursors, highlight ranges, text colors, etc. A marker object can have any number of attached visuals. The memory in the 4coder core for visuals is stored in the same scope as the object.)
|
||||
DOC_SEE(destroy_marker_visuals)
|
||||
*/
|
||||
|
@ -2721,7 +2735,19 @@ get_marker_visual_pointer(Models *models, Marker_Visual visual){
|
|||
}
|
||||
|
||||
API_EXPORT bool32
|
||||
Marker_Visual_Set_Effect(Application_Links *app, Marker_Visual visual, Marker_Visual_Type type, int_color color, int_color text_color, Marker_Visual_Text_Style text_style){
|
||||
Marker_Visual_Set_Effect(Application_Links *app, Marker_Visual visual, Marker_Visual_Type type, int_color color, int_color text_color, Marker_Visual_Text_Style text_style)
|
||||
/*
|
||||
DOC_PARAM(visual, A handle to the marker visual to be modified by this call.)
|
||||
DOC_PARAM(type, The new type of visual effect this marker visual will create.)
|
||||
DOC_PARAM(color, The new color aspect of the effect, exact meaning depends on the type.)
|
||||
DOC_PARAM(text_color, The new text color aspect of the effect, exact meaning depends on the type.)
|
||||
DOC_PARAM(text_style, This feature is not yet implemented and the parameter should always be 0.)
|
||||
DOC_RETURN(Returns non-zero on success, and zero on failure. This call fails when the visual handle does not refer to a valid marker visual.)
|
||||
DOC(Each effect type uses the color and text_color aspects differently. These aspects can be specified as 32-bit colors, or as "symbolic coloes" which are special values small enough that their alpha channels would be zero as 32-bit color codes. Valid symbolic color values have special rules for evaluation, and sometimes their meaning depends on the effect type too.)
|
||||
DOC_SEE(Marker_Visuals_Type)
|
||||
DOC_SEE(Marker_Visuals_Symbolic_Color)
|
||||
*/
|
||||
{
|
||||
Command_Data *cmd = (Command_Data*)app->cmd_context;
|
||||
Models *models = cmd->models;
|
||||
Marker_Visual_Data *data = get_marker_visual_pointer(models, visual);
|
||||
|
@ -2730,12 +2756,21 @@ Marker_Visual_Set_Effect(Application_Links *app, Marker_Visual visual, Marker_Vi
|
|||
data->color = color;
|
||||
data->text_color = text_color;
|
||||
data->text_style = text_style;
|
||||
return(true);
|
||||
}
|
||||
return(false);
|
||||
}
|
||||
|
||||
API_EXPORT bool32
|
||||
Marker_Visual_Set_Take_Rule(Application_Links *app, Marker_Visual visual, Marker_Visual_Take_Rule take_rule){
|
||||
Marker_Visual_Set_Take_Rule(Application_Links *app, Marker_Visual visual, Marker_Visual_Take_Rule take_rule)
|
||||
/*
|
||||
DOC_PARAM(visual, A handle to the marker visual to be modified by this call.)
|
||||
DOC_PARAM(take_rule, The new take rule for the marker visual.)
|
||||
DOC_RETURN(Returns non-zero on success, and zero on failure. This call fails when the visual handle does not refer to a valid marker visual.)
|
||||
DOC(Marker visuals have take rules so that they do not necessarily effect every marker in the marker object they were created to visualize. The take rule can effect the start of the run of markers, the total number of markers, and the stride of the markers, "taken" by this visual when applying it's effect. The word "take" should not be thought of as reserving a marker to the particular marker visual, multiple visuals may add effects to a single marker. See the documentation for Marker_Visual_Take_Rule for specifics about how the take rule can be configured.)
|
||||
DOC_SEE(Marker_Visual_Take_Rule)
|
||||
*/
|
||||
{
|
||||
Command_Data *cmd = (Command_Data*)app->cmd_context;
|
||||
Models *models = cmd->models;
|
||||
Marker_Visual_Data *data = get_marker_visual_pointer(models, visual);
|
||||
|
@ -2754,48 +2789,84 @@ Marker_Visual_Set_Take_Rule(Application_Links *app, Marker_Visual visual, Marker
|
|||
else{
|
||||
data->one_past_last_take_index = max_i32;
|
||||
}
|
||||
return(true);
|
||||
}
|
||||
return(false);
|
||||
}
|
||||
|
||||
API_EXPORT bool32
|
||||
Marker_Visual_Set_Priority(Application_Links *app, Marker_Visual visual, Marker_Visual_Priority_Level priority){
|
||||
Marker_Visual_Set_Priority(Application_Links *app, Marker_Visual visual, Marker_Visual_Priority_Level priority)
|
||||
/*
|
||||
DOC_PARAM(visual, A handle to the marker visual to be modified by this call.)
|
||||
DOC_PARAM(priority, The new priority level for this marker visual.)
|
||||
DOC_RETURN(Returns non-zero on success, and zero on failure. This call fails when the visual handle does not refer to a valid marker visual.)
|
||||
DOC(Multiple visuals effecting the same position, whether they are on the same marker object, or different marker objects, are sorted by their priority level, so that higher priority levels are displayed when they are in conflict with lower priority levels. Some effects have implicit priorities over other effects which does not take priority level into account, other effects may occur in the same position without being considered "in conflict". See the documentation for each effect for more information these relationships.)
|
||||
*/
|
||||
{
|
||||
Command_Data *cmd = (Command_Data*)app->cmd_context;
|
||||
Models *models = cmd->models;
|
||||
Marker_Visual_Data *data = get_marker_visual_pointer(models, visual);
|
||||
if (data != 0){
|
||||
data->priority = priority;
|
||||
return(true);
|
||||
}
|
||||
return(false);
|
||||
}
|
||||
|
||||
API_EXPORT bool32
|
||||
Marker_Visual_Set_View_Key(Application_Links *app, Marker_Visual visual, View_ID key_view_id){
|
||||
Marker_Visual_Set_View_Key(Application_Links *app, Marker_Visual visual, View_ID key_view_id)
|
||||
/*
|
||||
DOC_PARAM(visual, A handle to the marker visual to be modified by this call.)
|
||||
DOC_PARAM(key_view_id, The new value of the marker visual's view keying.)
|
||||
DOC_RETURN(Returns non-zero on success, and zero on failure. This call fails when the visual handle does notrefer to a valid marker visual.)
|
||||
DOC(View keying allows a marker visual to declare that it only appears in one view. For instance, if a buffer is opened in two views side-by-side, and each view has it's own cursor position, this can be used to make sure that the cursor for one view does not appear in the other view.)
|
||||
*/
|
||||
{
|
||||
Command_Data *cmd = (Command_Data*)app->cmd_context;
|
||||
Models *models = cmd->models;
|
||||
Marker_Visual_Data *data = get_marker_visual_pointer(models, visual);
|
||||
if (data != 0){
|
||||
data->key_view_id = key_view_id;
|
||||
return(true);
|
||||
}
|
||||
return(false);
|
||||
}
|
||||
|
||||
API_EXPORT bool32
|
||||
Destroy_Marker_Visual(Application_Links *app, Marker_Visual visual){
|
||||
Destroy_Marker_Visual(Application_Links *app, Marker_Visual visual)
|
||||
/*
|
||||
DOC_PARAM(visual, A handle to the marker visual to be destroyed.)
|
||||
DOC_RETURN(Returns non-zero on success, and zero on failure. This call fails when the visual handle does not refer to a valid marker visual.)
|
||||
*/
|
||||
{
|
||||
Command_Data *cmd = (Command_Data*)app->cmd_context;
|
||||
Models *models = cmd->models;
|
||||
Dynamic_Workspace *workspace = get_dynamic_workspace(models, visual.scope);
|
||||
if (workspace != 0){
|
||||
Marker_Visual_Data *data = dynamic_workspace_get_visual_pointer(workspace, visual.slot_id, visual.gen_id);
|
||||
if (data != 0){
|
||||
marker_visual_free(&workspace->visual_allocator, data);
|
||||
void *ptr = dynamic_workspace_get_pointer(workspace, data->owner_object&max_u32);
|
||||
Managed_Object_Standard_Header *header = (Managed_Object_Standard_Header*)ptr;
|
||||
if (header != 0){
|
||||
Assert(header->type == ManagedObjectType_Markers);
|
||||
Managed_Buffer_Markers_Header *markers = (Managed_Buffer_Markers_Header*)header;
|
||||
zdll_remove(markers->visual_first, markers->visual_last, data);
|
||||
markers->visual_count -= 1;
|
||||
marker_visual_free(&workspace->visual_allocator, data);
|
||||
return(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
return(false);
|
||||
}
|
||||
|
||||
API_EXPORT int32_t
|
||||
Buffer_Markers_Get_Attached_Visual_Count(Application_Links *app, Managed_Object object){
|
||||
Buffer_Markers_Get_Attached_Visual_Count(Application_Links *app, Managed_Object object)
|
||||
/*
|
||||
DOC_PARAM(object, The handle to the marker object to be queried.)
|
||||
DOC_RETURN(Returns the number of marker visuals that are currently attached to the given object. If the object handle does not refer to a valid marker object, then this call returns zero.)
|
||||
*/
|
||||
{
|
||||
Command_Data *cmd = (Command_Data*)app->cmd_context;
|
||||
Models *models = cmd->models;
|
||||
Managed_Object_Ptr_And_Workspace object_ptrs = get_dynamic_object_ptrs(models, object);
|
||||
|
@ -2807,7 +2878,13 @@ Buffer_Markers_Get_Attached_Visual_Count(Application_Links *app, Managed_Object
|
|||
}
|
||||
|
||||
API_EXPORT Marker_Visual*
|
||||
Buffer_Markers_Get_Attached_Visual(Application_Links *app, Partition *part, Managed_Object object){
|
||||
Buffer_Markers_Get_Attached_Visual(Application_Links *app, Partition *part, Managed_Object object)
|
||||
/*
|
||||
DOC_PARAM(part, The arena to be used to allocate the returned array.)
|
||||
DOC_PARAM(object, The handle to the marker object to be queried.)
|
||||
DOC_RETURN(Pushes an array onto part containing the handle to every marker visual attached to this object, and returns the pointer to it's base. If the object does not refer to a valid marker object or there is not enough space in part to allocate the array, then a null pointer is returned.)
|
||||
*/
|
||||
{
|
||||
Command_Data *cmd = (Command_Data*)app->cmd_context;
|
||||
Models *models = cmd->models;
|
||||
Managed_Object_Ptr_And_Workspace object_ptrs = get_dynamic_object_ptrs(models, object);
|
||||
|
@ -2844,6 +2921,10 @@ get_dynamic_object_memory_ptr(Managed_Object_Standard_Header *header){
|
|||
|
||||
API_EXPORT uint32_t
|
||||
Managed_Object_Get_Item_Size(Application_Links *app, Managed_Object object)
|
||||
/*
|
||||
DOC_PARAM(object, The handle to the managed object to be queried.)
|
||||
DOC_RETURN(Returns the size, in bytes, of a single item in the managed object. Item size is multiplied by the indices in store and load calls, and it is multiplied by item count to discover the total memory size of the managed object. If object does not refer to a valid managed object, this call returns zero.)
|
||||
*/
|
||||
{
|
||||
Command_Data *cmd = (Command_Data*)app->cmd_context;
|
||||
Models *models = cmd->models;
|
||||
|
@ -2856,6 +2937,10 @@ Managed_Object_Get_Item_Size(Application_Links *app, Managed_Object object)
|
|||
|
||||
API_EXPORT uint32_t
|
||||
Managed_Object_Get_Item_Count(Application_Links *app, Managed_Object object)
|
||||
/*
|
||||
DOC_PARAM(object, The handle to the managed object to be queried.)
|
||||
DOC_RETURN(Returns the count of items this object can store, this count is used to range check the indices in store and load calls. If object does not refer to a valid managed object, this call returns zero.)
|
||||
*/
|
||||
{
|
||||
Command_Data *cmd = (Command_Data*)app->cmd_context;
|
||||
Models *models = cmd->models;
|
||||
|
@ -2868,6 +2953,11 @@ Managed_Object_Get_Item_Count(Application_Links *app, Managed_Object object)
|
|||
|
||||
API_EXPORT Managed_Object_Type
|
||||
Managed_Object_Get_Type(Application_Links *app, Managed_Object object)
|
||||
/*
|
||||
DOC_PARAM(object, The handle to the managed object to be queried.)
|
||||
DOC_RETURN(Returns the type of the managed object, see Managed_Object_Type for the enumeration of possible values and their special meanings. If object does not refer to a valid managed object, this call returns ManagedObjectType_Error.)
|
||||
DOC_SEE(Managed_Object_Type)
|
||||
*/
|
||||
{
|
||||
Command_Data *cmd = (Command_Data*)app->cmd_context;
|
||||
Models *models = cmd->models;
|
||||
|
@ -2884,6 +2974,10 @@ Managed_Object_Get_Type(Application_Links *app, Managed_Object object)
|
|||
|
||||
API_EXPORT Managed_Scope
|
||||
Managed_Object_Get_Containing_Scope(Application_Links *app, Managed_Object object)
|
||||
/*
|
||||
DOC_PARAM(object, The handle to the managed object to be queried.)
|
||||
DOC_RETURN(Returns a handle to the managed scope in which this object is allocated, or zero if object does not refer to a valid managed object.)
|
||||
*/
|
||||
{
|
||||
Command_Data *cmd = (Command_Data*)app->cmd_context;
|
||||
Models *models = cmd->models;
|
||||
|
@ -2897,6 +2991,11 @@ Managed_Object_Get_Containing_Scope(Application_Links *app, Managed_Object objec
|
|||
|
||||
API_EXPORT bool32
|
||||
Managed_Object_Free(Application_Links *app, Managed_Object object)
|
||||
/*
|
||||
DOC_PARAM(object, The handle to the managed object to be freed.)
|
||||
DOC_RETURN(Returns non-zero on success and zero on failure. This call fails when object does not refer to a valid managed object.)
|
||||
DOC(Permanently frees the specified object. Not only does this free up the memory this object had allocated, but it also triggers cleanup for some types of managed objects. For instance after markers are freed, any visual effects from the markers are removed as well. See Managed_Object_Type for more information about what cleanup each type performs when it is freed.)
|
||||
*/
|
||||
{
|
||||
Command_Data *cmd = (Command_Data*)app->cmd_context;
|
||||
Models *models = cmd->models;
|
||||
|
@ -2924,6 +3023,16 @@ Managed_Object_Free(Application_Links *app, Managed_Object object)
|
|||
|
||||
API_EXPORT bool32
|
||||
Managed_Object_Store_Data(Application_Links *app, Managed_Object object, uint32_t first_index, uint32_t count, void *mem)
|
||||
/*
|
||||
DOC_PARAM(object, The handle to the managed object in which data will be stored.)
|
||||
DOC_PARAM(first_index, The first index of the range in the managed object to be stored. Managed object indics are zero based.)
|
||||
DOC_PARAM(count, The number of items in the managed object to be stored.)
|
||||
DOC_PARAM(mem, A pointer to the data to be stored, it is expected that the size of this memory is item_size*count, item_size can be queried with managed_object_get_item_size.)
|
||||
DOC_RETURN(Returns non-zero on success and zero on failure. This call fails when object does not refer to a valid managed object, and when the range of indices overflows the range of this managed object. The range of the managed object can be queried with managed_object_get_item_count.)
|
||||
DOC(All managed objects, in addition to whatever special behaviors they have, have the ability to store and load data. This storage can have special properties in certain managed object types, for instance, the data stored in marker objects are edited by the core when the buffer to which they are attached is edited. This call stores the data pointed to by mem into the item range specified by first_index and count.)
|
||||
DOC_SEE(managed_object_get_item_size)
|
||||
DOC_SEE(managed_object_get_item_count)
|
||||
*/
|
||||
{
|
||||
Command_Data *cmd = (Command_Data*)app->cmd_context;
|
||||
Models *models = cmd->models;
|
||||
|
@ -2943,6 +3052,16 @@ Managed_Object_Store_Data(Application_Links *app, Managed_Object object, uint32_
|
|||
|
||||
API_EXPORT bool32
|
||||
Managed_Object_Load_Data(Application_Links *app, Managed_Object object, uint32_t first_index, uint32_t count, void *mem_out)
|
||||
/*
|
||||
DOC_PARAM(object, The handle to the managed object from which data will be loaded.)
|
||||
DOC_PARAM(first_index, The first index of the range in the managed object to be loaded. Managed object indics are zero based.)
|
||||
DOC_PARAM(count, The number of items in the managed object to be loaded.)
|
||||
DOC_PARAM(mem_out, A pointer to the memory where loaded data will be written, it is expected that the size of this memory is item_size*count, item_size can be queried with managed_object_get_item_size.)
|
||||
DOC_RETURN(Returns non-zero on success and zero on failure. This call fails when object does not refer to a valid managed object, and when the range of indices overflows the range of this managed object. The range of the managed object can be queried with managed_object_get_item_count.)
|
||||
DOC(All managed objects, in addition to whatever special behaviors they have, have the ability to store and load data. This storage can have special properties in certain managed object types, for instance, the data stored in marker objects are edited by the core when the buffer to which they are attached is edited. This call loads the data from the item range specified by first_index and count into mem_out.)
|
||||
DOC_SEE(managed_object_get_item_size)
|
||||
DOC_SEE(managed_object_get_item_count)
|
||||
*/
|
||||
{
|
||||
Command_Data *cmd = (Command_Data*)app->cmd_context;
|
||||
Models *models = cmd->models;
|
||||
|
@ -2999,7 +3118,7 @@ DOC_RETURN(This call returns the input that triggered the currently executing co
|
|||
DOC_SEE(User_Input)
|
||||
*/{
|
||||
Command_Data *cmd = (Command_Data*)app->cmd_context;
|
||||
User_Input result;
|
||||
User_Input result = {0};
|
||||
result.type = UserInputKey;
|
||||
result.abort = 0;
|
||||
result.key = cmd->key;
|
||||
|
@ -3007,6 +3126,15 @@ DOC_SEE(User_Input)
|
|||
return(result);
|
||||
}
|
||||
|
||||
API_EXPORT void
|
||||
Set_Command_Input(Application_Links *app, Key_Event_Data key_data)
|
||||
/*
|
||||
DOC_PARAM(key_data, The new value of the "command input". Setting this effects the result returned by get_command_input until the end of this command.)
|
||||
*/{
|
||||
Command_Data *cmd = (Command_Data*)app->cmd_context;
|
||||
cmd->key = key_data;
|
||||
}
|
||||
|
||||
API_EXPORT Mouse_State
|
||||
Get_Mouse_State(Application_Links *app)
|
||||
/*
|
||||
|
@ -3071,6 +3199,9 @@ DOC(This call posts a string to the *messages* buffer.)
|
|||
|
||||
API_EXPORT int32_t
|
||||
Get_Theme_Count(Application_Links *app)
|
||||
/*
|
||||
DOC_RETURN(Returns the number of themes that currently exist in the core.)
|
||||
*/
|
||||
{
|
||||
Command_Data *cmd = (Command_Data*)app->cmd_context;
|
||||
Style_Library *library = &cmd->models->styles;
|
||||
|
@ -3079,10 +3210,14 @@ Get_Theme_Count(Application_Links *app)
|
|||
|
||||
API_EXPORT String
|
||||
Get_Theme_Name(Application_Links *app, struct Partition *arena, int32_t index)
|
||||
/*
|
||||
DOC_PARAM(arena, The arena which will be used to allocate the returned string.)
|
||||
DOC_PARAM(index, The index of the theme to query. Index zero always refers to the active theme, all other indices refer to the static copies of available themes.)
|
||||
DOC_RETURN(On success this call returns a string allocated on arena that is the name of the queried theme, on failure a null string is returned. This call fails when index is not less than the total number of themes, and when there is not enough space in arena to allocate the return string.)
|
||||
*/
|
||||
{
|
||||
Command_Data *cmd = (Command_Data*)app->cmd_context;
|
||||
Style_Library *library = &cmd->models->styles;
|
||||
|
||||
String str = {0};
|
||||
if (0 <= index && index < library->count){
|
||||
Style *style = &library->styles[index];
|
||||
|
@ -3095,7 +3230,6 @@ Get_Theme_Name(Application_Links *app, struct Partition *arena, int32_t index)
|
|||
str.str[str.size] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
return(str);
|
||||
}
|
||||
|
||||
|
@ -3154,6 +3288,10 @@ DOC(This call changes 4coder's color pallet to one of the built in themes.)
|
|||
|
||||
API_EXPORT bool32
|
||||
Change_Theme_By_Index(Application_Links *app, int32_t index)
|
||||
/*
|
||||
DOC_PARAM(index, The index parameter specifies the index of theme to begin using.)
|
||||
DOC_RETURN(Returns non-zero on success and zero on failure. This call fails when index is not less than the total number of themes.)
|
||||
*/
|
||||
{
|
||||
Command_Data *cmd = (Command_Data*)app->cmd_context;
|
||||
Style_Library *styles = &cmd->models->styles;
|
||||
|
|
|
@ -1008,7 +1008,6 @@ render_loaded_file_in_view__inner(Models *models, Render_Target *target, View *v
|
|||
|
||||
// NOTE(allen): Visual marker colors
|
||||
i32 marker_highlight_best_priority = min_i32;
|
||||
b32 marker_highlight_is_set = false;
|
||||
u32 marker_highlight = 0;
|
||||
u32 marker_highlight_text = 0;
|
||||
|
||||
|
@ -1026,7 +1025,6 @@ render_loaded_file_in_view__inner(Models *models, Render_Target *target, View *v
|
|||
case VisualType_CharacterBlocks:
|
||||
{
|
||||
if (marker->priority > marker_highlight_best_priority){
|
||||
marker_highlight_is_set = true;
|
||||
marker_highlight = marker->color;
|
||||
marker_highlight_text = marker->text_color;
|
||||
marker_highlight_best_priority = marker->priority;
|
||||
|
@ -1075,7 +1073,8 @@ render_loaded_file_in_view__inner(Models *models, Render_Target *target, View *v
|
|||
}
|
||||
for (;range_stack_top >= 0 && ind >= range_stack[range_stack_top].one_past_last;
|
||||
range_stack_top -= 1);
|
||||
if (!marker_highlight_is_set && range_stack_top >= 0){
|
||||
if (range_stack_top >= 0 &&
|
||||
range_stack[range_stack_top].priority > marker_highlight_best_priority){
|
||||
marker_highlight = range_stack[range_stack_top].color;
|
||||
marker_highlight_text = range_stack[range_stack_top].text_color;
|
||||
}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
Thank you for contributing to the 4coder project!
|
||||
|
||||
To submit bug reports or to request particular features email:
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
New in alpha 4.0.28:
|
||||
-In config.4coder "eanble_virtual_whitespace" is now separate from "enable_code_wrapping"
|
||||
-In project.4coder .os = "all" now matches for all operating systems
|
||||
|
|
|
@ -861,9 +861,9 @@ generate_remapping_code_and_data(){
|
|||
bind(mappings, '{', MDFR_CTRL, open_long_braces_semicolon);
|
||||
bind(mappings, '}', MDFR_CTRL, open_long_braces_break);
|
||||
|
||||
bind(mappings, '[', MDFR_ALT, highlight_surrounding_scope);
|
||||
bind(mappings, ']', MDFR_ALT, highlight_prev_scope_absolute);
|
||||
bind(mappings, '\'', MDFR_ALT, highlight_next_scope_absolute);
|
||||
bind(mappings, '[', MDFR_ALT, select_surrounding_scope);
|
||||
bind(mappings, ']', MDFR_ALT, select_prev_scope_absolute);
|
||||
bind(mappings, '\'', MDFR_ALT, select_next_scope_absolute);
|
||||
bind(mappings, '/', MDFR_ALT, place_in_scope);
|
||||
bind(mappings, '-', MDFR_ALT, delete_current_scope);
|
||||
bind(mappings, 'j', MDFR_ALT, scope_absorb_down);
|
||||
|
@ -921,7 +921,7 @@ generate_remapping_code_and_data(){
|
|||
bind(mappings, 'N', MDFR_CTRL, goto_prev_jump_sticky);
|
||||
bind(mappings, 'M', MDFR_CTRL, goto_first_jump_sticky);
|
||||
bind(mappings, 'm', MDFR_CTRL, build_in_build_panel);
|
||||
bind(mappings, 'b', MDFR_ALT, toggle_filebar);
|
||||
bind(mappings, 'b', MDFR_CTRL, toggle_filebar);
|
||||
|
||||
bind(mappings, 'z', MDFR_CTRL, execute_any_cli);
|
||||
bind(mappings, 'Z', MDFR_CTRL, execute_previous_cli);
|
||||
|
@ -1079,9 +1079,9 @@ generate_remapping_code_and_data(){
|
|||
bind(mappings, '{', MDFR_CMND, open_long_braces_semicolon);
|
||||
bind(mappings, '}', MDFR_CMND, open_long_braces_break);
|
||||
|
||||
bind(mappings, '[', MDFR_CTRL, highlight_surrounding_scope);
|
||||
bind(mappings, ']', MDFR_CTRL, highlight_prev_scope_absolute);
|
||||
bind(mappings, '\'', MDFR_CTRL, highlight_next_scope_absolute);
|
||||
bind(mappings, '[', MDFR_CTRL, select_surrounding_scope);
|
||||
bind(mappings, ']', MDFR_CTRL, select_prev_scope_absolute);
|
||||
bind(mappings, '\'', MDFR_CTRL, select_next_scope_absolute);
|
||||
bind(mappings, '/', MDFR_CTRL, place_in_scope);
|
||||
bind(mappings, '-', MDFR_CTRL, delete_current_scope);
|
||||
bind(mappings, 'j', MDFR_CTRL, scope_absorb_down);
|
||||
|
|
|
@ -13,36 +13,36 @@
|
|||
#define OUTPUT_FILE "linux_icon.h"
|
||||
|
||||
int main(void){
|
||||
|
||||
|
||||
FILE* f = fopen(OUTPUT_FILE, "w");
|
||||
|
||||
|
||||
fputs("/* Generated by gen_linux_icon.c */\n", f);
|
||||
|
||||
|
||||
int w = gimp_image.width, h = gimp_image.height;
|
||||
fprintf(f, "static const unsigned long linux_icon[] = {\n %d, %d,", w, h);
|
||||
|
||||
|
||||
const unsigned char* p = gimp_image.pixel_data;
|
||||
|
||||
|
||||
int i;
|
||||
for(i = 0; i < (w*h); ++i){
|
||||
|
||||
|
||||
if((i % 6) == 0){
|
||||
fputs("\n ", f);
|
||||
}
|
||||
|
||||
|
||||
unsigned int pixel = 0;
|
||||
|
||||
|
||||
pixel |= *p++ << 16L;
|
||||
pixel |= *p++ << 8L;
|
||||
pixel |= *p++;
|
||||
pixel |= *p++ << 24L;
|
||||
|
||||
|
||||
fprintf(f, " 0x%08x,", pixel);
|
||||
}
|
||||
|
||||
|
||||
fputs("\n};\n", f);
|
||||
|
||||
|
||||
fclose(f);
|
||||
|
||||
|
||||
puts("Generated linux icon in " OUTPUT_FILE);
|
||||
}
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
// to run on older distros without glibc >= 2.14
|
||||
|
||||
extern "C" {
|
||||
asm (".symver memcpy, memcpy@GLIBC_2.2.5");
|
||||
void *__wrap_memcpy(void *dest, const void *src, size_t n){
|
||||
return memcpy(dest, src, n);
|
||||
}
|
||||
asm (".symver memcpy, memcpy@GLIBC_2.2.5");
|
||||
void *__wrap_memcpy(void *dest, const void *src, size_t n){
|
||||
return memcpy(dest, src, n);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -56,24 +56,6 @@ enum{
|
|||
MDFR_SHIFT = 0x8,
|
||||
};
|
||||
|
||||
global char long_commands_str[] = R"foo(
|
||||
\SECTION{4coder Long Command}
|
||||
Long name commands that can be typed in after using the "long command" command 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 buffer to 'dos' line ending mode CRLF
|
||||
\ITEM \STYLE{code} "nix lines" \END Switch the buffer to 'nix' line ending mode LF
|
||||
\ITEM \STYLE{code} "remap" \END Change to one of the built in command bindings
|
||||
\ITEM \STYLE{code} "new project" \END Setup a new project.4coder and accompanying build scripts
|
||||
\ITEM \STYLE{code} "delete file" \END Delete the file attached to the current buffer and close the buffer
|
||||
\ITEM \STYLE{code} "rename file" \END Rename the file attached to the current buffer and reopen the buffer
|
||||
\ITEM \STYLE{code} "mkdir" \END Make a new directory in 4coder's hot directory
|
||||
\END
|
||||
\END
|
||||
)foo";
|
||||
|
||||
internal void
|
||||
generate_binding_list(char *code_directory, char *src_directory){
|
||||
char full_path[512];
|
||||
|
@ -104,8 +86,6 @@ generate_binding_list(char *code_directory, char *src_directory){
|
|||
}
|
||||
fprintf(out, "\\END\n");
|
||||
|
||||
fprintf(out, long_commands_str);
|
||||
|
||||
for (i32 i = 0; i < ArrayCount(fcoder_meta_maps); ++i){
|
||||
Meta_Mapping *mapping = &fcoder_meta_maps[i];
|
||||
|
||||
|
|
|
@ -7,22 +7,6 @@
|
|||
\ITEM \STYLE{code} "default" \END The default 4coder bindings - typically good for Windows and Linux
|
||||
\ITEM \STYLE{code} "mac-default" \END Default 4coder bindings on a Mac keyboard
|
||||
\END
|
||||
|
||||
\SECTION{4coder Long Command}
|
||||
Long name commands that can be typed in after using the "long command" command 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 buffer to 'dos' line ending mode CRLF
|
||||
\ITEM \STYLE{code} "nix lines" \END Switch the buffer to 'nix' line ending mode LF
|
||||
\ITEM \STYLE{code} "remap" \END Change to one of the built in command bindings
|
||||
\ITEM \STYLE{code} "new project" \END Setup a new project.4coder and accompanying build scripts
|
||||
\ITEM \STYLE{code} "delete file" \END Delete the file attached to the current buffer and close the buffer
|
||||
\ITEM \STYLE{code} "rename file" \END Rename the file attached to the current buffer and reopen the buffer
|
||||
\ITEM \STYLE{code} "mkdir" \END Make a new directory in 4coder's hot directory
|
||||
\END
|
||||
\END
|
||||
\SECTION{Map: default}
|
||||
\SECTION{mapid-global}
|
||||
The following bindings apply in all situations.
|
||||
|
@ -224,7 +208,7 @@ The following bindings apply in all situations.
|
|||
\ITEM \STYLE{code} <ctrl N> \END If a buffer containing jump locations has been locked in, goes to the previous jump in the buffer, skipping sub jump locations.
|
||||
\ITEM \STYLE{code} <ctrl M> \END If a buffer containing jump locations has been locked in, goes to the first jump in the buffer.
|
||||
\ITEM \STYLE{code} <ctrl m> \END Looks for a build.bat, build.sh, or makefile in the current and parent directories. Runs the first that it finds and prints the output to *compilation*. Puts the *compilation* buffer in a panel at the footer of the current view.
|
||||
\ITEM \STYLE{code} <alt b> \END Toggles the visibility status of the current view's filebar.
|
||||
\ITEM \STYLE{code} <ctrl b> \END Toggles the visibility status of the current view's filebar.
|
||||
\ITEM \STYLE{code} <ctrl z> \END Queries for an output buffer name and system command, runs the system command as a CLI and prints the output to the specified buffer.
|
||||
\ITEM \STYLE{code} <ctrl Z> \END If the command execute_any_cli has already been used, this will execute a CLI reusing the most recent buffer name and command.
|
||||
\ITEM \STYLE{code} <ctrl x> \END Opens an interactive list of all registered commands.
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
\INCLUDE{site_header.txt}
|
||||
|
||||
\TABLE_OF_CONTENTS
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
\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 \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.
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
\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 focused 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.
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
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 \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.
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
The 4cpp lexer system provides a polished, fast, flexible system that takes in C/C++ and outputs a tokenization of the text data. There are two API levels. One level is setup to let you easily get a tokenization of the file. This level manages memory for you with malloc to make it as fast as possible to start getting your tokens. The second level enables deep integration by allowing control over allocation, data chunking, and output rate control.
|
||||
|
||||
To use the quick setup API you simply include 4cpp_lexer.h and read the documentation at \DOC_LINK{cpp_lex_file}.
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
\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.
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
\META_PARSE{custom_funcs}{4ed_api_implementation.cpp}
|
||||
\META_PARSE{custom_types}{4coder_API/types.h}
|
||||
\META_PARSE{string} {string/internal_4coder_string.cpp}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
\INCLUDE{site_header.txt}
|
||||
|
||||
Getting started with 4coder and navigating your files:
|
||||
|
|
|
@ -1240,7 +1240,19 @@ non-zero if dest does not run out of space in the underlying memory.) */{
|
|||
//
|
||||
|
||||
API_EXPORT FSTRING_LINK void
|
||||
string_interpret_escapes(String src, char *dst){
|
||||
string_interpret_escapes(String src, char *dst)
|
||||
/* DOC(Rewrites a string with escape sequences into a flattened string. In particular:
|
||||
|
||||
"\\" becomes "\"
|
||||
|
||||
"\n" becomes LF
|
||||
|
||||
"\t" becomes TAB
|
||||
|
||||
"\"" becomes """
|
||||
|
||||
"0" becomes NULL
|
||||
) */{
|
||||
i32_4tech mode = 0;
|
||||
i32_4tech j = 0;
|
||||
for (i32_4tech i = 0; i < src.size; ++i){
|
||||
|
|
127
todo.txt
127
todo.txt
|
@ -1,14 +1,13 @@
|
|||
|
||||
[] Build 4.0.29
|
||||
{
|
||||
Features
|
||||
{
|
||||
[] Declarative system for keyword direct coloring
|
||||
[] set_command_input
|
||||
}
|
||||
|
||||
Bugs
|
||||
{
|
||||
[] Before '.' name matches don't sort to the top like they're supposed to.
|
||||
Repro Needed
|
||||
{
|
||||
}
|
||||
|
@ -20,64 +19,6 @@
|
|||
|
||||
Documentation
|
||||
{
|
||||
[x] buffer_get_managed_scope
|
||||
[x] view_get_managed_scope
|
||||
[x] view_start_ui_mode
|
||||
[x] view_end_ui_mode
|
||||
[x] view_set_ui
|
||||
[x] view_get_ui_copy
|
||||
[x] create_user_managed_scope
|
||||
[x] destroy_user_managed_scope
|
||||
[x] get_global_managed_scope
|
||||
[x] get_managed_scope_with_multiple_dependencies
|
||||
[x] managed_scope_clear_contents
|
||||
[x] clear_managed_scope_and_all_dependent_scopes
|
||||
[x] managed_variable_create
|
||||
[x] managed_variable_get_id
|
||||
[x] managed_variable_create_or_get_id
|
||||
[x] managed_variable_set
|
||||
[x] managed_variable_get
|
||||
[x] alloc_managed_memory_in_scope
|
||||
[x] alloc_buffer_markers_on_buffer
|
||||
[x] create_marker_visuals
|
||||
[x] marker_visuals_set_look
|
||||
[x] marker_visuals_set_take_rule
|
||||
[x] marker_visuals_set_priority
|
||||
[x] marker_visuals_set_view_key
|
||||
[] destroy_marker_visuals
|
||||
[] buffer_markers_get_attached_visuals_count
|
||||
[] buffer_markers_get_attached_visuals
|
||||
[] managed_object_get_item_size
|
||||
[] managed_object_get_item_count
|
||||
[] managed_object_get_type
|
||||
[] managed_object_get_containing_scope
|
||||
[] managed_object_free
|
||||
[] managed_object_store_data
|
||||
[] managed_object_load_data
|
||||
[] get_theme_count
|
||||
[] get_theme_name
|
||||
[] change_theme_by_index
|
||||
[] Buffer_Kill_Result
|
||||
[] Range_Array
|
||||
[] Managed_Object_Type
|
||||
[] Managed_Scope
|
||||
[] Managed_Variable_ID
|
||||
[] Managed_Object
|
||||
[] Marker_Visuals
|
||||
[] Marker_Visuals_Type
|
||||
[] Marker_Visuals_Symbolic_Color
|
||||
[] Marker_Visuals_Text_Style
|
||||
[] Marker_Visuals_Take_Rule
|
||||
[] Marker_Visuals_Priority_Level
|
||||
[] UI_Item_Type
|
||||
[] UI_Activation_Level
|
||||
[] UI_Coordinate_System
|
||||
[] UI_Item
|
||||
[] UI_Item_Node
|
||||
[] UI_List
|
||||
[] UI_Control
|
||||
[] Buffer_Name_Conflict_Entry
|
||||
[] string_interpret_escapes
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -92,6 +33,11 @@
|
|||
Bugs
|
||||
{
|
||||
[] Texture binding changes too often problem.
|
||||
Repro Needed
|
||||
{
|
||||
[] pasting long comment at top of code files doesn't always parse right away???
|
||||
[] saving to removable media -> Ask person who sent it in for more info
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -186,5 +132,66 @@ Change Log
|
|||
|
||||
[x] Cleanup names in Marker_Visuals API
|
||||
}
|
||||
|
||||
NEW THINGS
|
||||
{
|
||||
[x] buffer_get_managed_scope
|
||||
[x] view_get_managed_scope
|
||||
[x] view_start_ui_mode
|
||||
[x] view_end_ui_mode
|
||||
[x] view_set_ui
|
||||
[x] view_get_ui_copy
|
||||
[x] create_user_managed_scope
|
||||
[x] destroy_user_managed_scope
|
||||
[x] get_global_managed_scope
|
||||
[x] get_managed_scope_with_multiple_dependencies
|
||||
[x] managed_scope_clear_contents
|
||||
[x] clear_managed_scope_and_all_dependent_scopes
|
||||
[x] managed_variable_create
|
||||
[x] managed_variable_get_id
|
||||
[x] managed_variable_create_or_get_id
|
||||
[x] managed_variable_set
|
||||
[x] managed_variable_get
|
||||
[x] alloc_managed_memory_in_scope
|
||||
[x] alloc_buffer_markers_on_buffer
|
||||
[x] create_marker_visuals
|
||||
[x] marker_visuals_set_look
|
||||
[x] marker_visuals_set_take_rule
|
||||
[x] marker_visuals_set_priority
|
||||
[x] marker_visuals_set_view_key
|
||||
[x] destroy_marker_visuals
|
||||
[x] buffer_markers_get_attached_visuals_count
|
||||
[x] buffer_markers_get_attached_visuals
|
||||
[x] managed_object_get_item_size
|
||||
[x] managed_object_get_item_count
|
||||
[x] managed_object_get_type
|
||||
[x] managed_object_get_containing_scope
|
||||
[x] managed_object_free
|
||||
[x] managed_object_store_data
|
||||
[x] managed_object_load_data
|
||||
[x] get_theme_count
|
||||
[x] get_theme_name
|
||||
[x] change_theme_by_index
|
||||
[x] Buffer_Kill_Result
|
||||
[x] Range_Array
|
||||
[x] Managed_Object_Type
|
||||
[x] Managed_Scope
|
||||
[x] Managed_Variable_ID
|
||||
[x] Managed_Object
|
||||
[x] Marker_Visuals
|
||||
[x] Marker_Visuals_Type
|
||||
[x] Marker_Visuals_Symbolic_Color
|
||||
[x] Marker_Visuals_Text_Style
|
||||
[x] Marker_Visuals_Take_Rule
|
||||
[x] Marker_Visuals_Priority_Level
|
||||
[x] UI_Item_Type
|
||||
[x] UI_Activation_Level
|
||||
[x] UI_Coordinate_System
|
||||
[x] UI_Item
|
||||
[x] UI_Item_Node
|
||||
[x] UI_List
|
||||
[x] UI_Control
|
||||
[x] string_interpret_escapes
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue