remove file's font id
This commit is contained in:
parent
cdcc01ec23
commit
3430f50103
102
4coder_API.html
102
4coder_API.html
|
@ -1027,14 +1027,6 @@ the range [1,16].</div></div><hr>
|
||||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>cmdid_left_adjust_view adjusts the view to be just left of the cursor's position.</div></div>
|
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>cmdid_left_adjust_view adjusts the view to be just left of the cursor's position.</div></div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>cmdid_page_up</span></span></div>
|
|
||||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>cmdid_page_up moves the view up one whole screen height and centers the cursor there.</div></div>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>cmdid_page_down</span></span></div>
|
|
||||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>cmdid_page_down moves the view down one whole screen height and centers the cursor there.</div></div>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>cmdid_word_complete</span></span></div>
|
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>cmdid_word_complete</span></span></div>
|
||||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>cmdid_word_complete begins or continues cycling through completions for a partial word.</div></div>
|
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>cmdid_word_complete begins or continues cycling through completions for a partial word.</div></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1196,16 +1188,23 @@ the range [1,16].</div></div><hr>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>BufferSetting_Lex</span></span></div>
|
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>BufferSetting_Lex</span></span></div>
|
||||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>The BufferSetting_Lex setting is used to determine whether to store C++ tokens from with the buffer.</div></div>
|
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>The BufferSetting_Lex setting is used to determine whether to store C++ tokens
|
||||||
|
from with the buffer.</div></div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>BufferSetting_WrapLine</span></span></div>
|
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>BufferSetting_WrapLine</span></span></div>
|
||||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>The BufferSetting_WrapLine setting is used to determine whether a buffer prefers to be viewed with wrapped lines,
|
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>The BufferSetting_WrapLine setting is used to determine whether a buffer prefers
|
||||||
individual views can be set to override this value after being tied to the buffer.</div></div>
|
to be viewed with wrapped lines, individual views can be set to override this value after
|
||||||
|
being tied to the buffer.</div></div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>BufferSetting_MapID</span></span></div>
|
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>BufferSetting_MapID</span></span></div>
|
||||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>The BufferSetting_MapID setting specifies the id of the command map that should be active when a buffer is active.</div></div>
|
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>The BufferSetting_MapID setting specifies the id of the command map that should be
|
||||||
|
active when a buffer is active.</div></div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>BufferSetting_Eol</span></span></div>
|
||||||
|
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'></div></div>
|
||||||
</div>
|
</div>
|
||||||
</div><hr>
|
</div><hr>
|
||||||
<div id='View_Setting_ID_doc' style='margin-bottom: 1cm;'>
|
<div id='View_Setting_ID_doc' style='margin-bottom: 1cm;'>
|
||||||
|
@ -1216,8 +1215,20 @@ the range [1,16].</div></div><hr>
|
||||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>ViewSetting_Null is not a valid setting, it is reserved to detect errors.</div></div>
|
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>ViewSetting_Null is not a valid setting, it is reserved to detect errors.</div></div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
|
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>ViewSetting_WrapLine</span></span></div>
|
||||||
|
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>The ViewSetting_WrapLine setting determines whether the view applies line wrapping
|
||||||
|
at the border of the panel for long lines. Whenever the view switches to a new buffer it
|
||||||
|
will reset this setting to match the 'preferred' line wrapping setting of the buffer.</div></div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>ViewSetting_ShowWhitespace</span></span></div>
|
||||||
|
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>The ViewSetting_ShowWhitespace setting determines whether the view highlights
|
||||||
|
whitespace in a file. Whenever the view switches to a new buffer this setting is turned off.</div></div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>ViewSetting_ShowScrollbar</span></span></div>
|
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>ViewSetting_ShowScrollbar</span></span></div>
|
||||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>The ViewSetting_ShowScrollbar setting determines whether a scroll bar is attached to a view in it's scrollable section.</div></div>
|
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>The ViewSetting_ShowScrollbar setting determines whether a scroll bar is
|
||||||
|
attached to a view in it's scrollable section.</div></div>
|
||||||
</div>
|
</div>
|
||||||
</div><hr>
|
</div><hr>
|
||||||
<div id='Mouse_Cursor_Show_Type_doc' style='margin-bottom: 1cm;'>
|
<div id='Mouse_Cursor_Show_Type_doc' style='margin-bottom: 1cm;'>
|
||||||
|
@ -1235,23 +1246,24 @@ the range [1,16].</div></div><hr>
|
||||||
<div id='Buffer_Seek_Type_doc' style='margin-bottom: 1cm;'>
|
<div id='Buffer_Seek_Type_doc' style='margin-bottom: 1cm;'>
|
||||||
<h4>§3.4.13: Buffer_Seek_Type</h4>
|
<h4>§3.4.13: Buffer_Seek_Type</h4>
|
||||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>enum Buffer_Seek_Type;</div>
|
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>enum Buffer_Seek_Type;</div>
|
||||||
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Description</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'>UNDOCUMENTED.</div><div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Values</i></b></div><div>
|
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Description</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'>The Buffer_Seek_Type is is used in a Buffer_Seek to identify which
|
||||||
|
coordinates are suppose to be used for the seek.</div><div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Values</i></b></div><div>
|
||||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>buffer_seek_pos</span></span></div>
|
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>buffer_seek_pos</span></span></div>
|
||||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>UNDOCUMENTED.</div></div>
|
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>This value indicates absolute positioning where positions are measured as the number of bytes from the start of the file.</div></div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>buffer_seek_wrapped_xy</span></span></div>
|
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>buffer_seek_wrapped_xy</span></span></div>
|
||||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>UNDOCUMENTED.</div></div>
|
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>This value indicates xy positioning with wrapped lines where the x and y values are in pixels.</div></div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>buffer_seek_unwrapped_xy</span></span></div>
|
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>buffer_seek_unwrapped_xy</span></span></div>
|
||||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>UNDOCUMENTED.</div></div>
|
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>This value indicates xy positioning with unwrapped lines where the x and y values are in pixels.</div></div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>buffer_seek_line_char</span></span></div>
|
<div><span style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>buffer_seek_line_char</span></span></div>
|
||||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>UNDOCUMENTED.</div></div>
|
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>This value indicates line-character, or line-column positioning. These coordinates are 1 based to match standard line numbering.</div></div>
|
||||||
</div>
|
</div>
|
||||||
</div><hr>
|
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>See Also</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'><a href='#Buffer_Seek_doc'>Buffer_Seek</a></div><div style='margin-left: 5mm; margin-right: 5mm;'><a href='#4coder_Buffer_Positioning_System_doc'>4coder_Buffer_Positioning_System</a></div></div><hr>
|
||||||
<div id='Key_Modifier_Flag_doc' style='margin-bottom: 1cm;'>
|
<div id='Key_Modifier_Flag_doc' style='margin-bottom: 1cm;'>
|
||||||
<h4>§3.4.14: Key_Modifier_Flag</h4>
|
<h4>§3.4.14: Key_Modifier_Flag</h4>
|
||||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>enum Key_Modifier_Flag;</div>
|
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>enum Key_Modifier_Flag;</div>
|
||||||
|
@ -1725,35 +1737,36 @@ float wrapped_y;<br>
|
||||||
</div>
|
</div>
|
||||||
};<br>
|
};<br>
|
||||||
</div>
|
</div>
|
||||||
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Description</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'>UNDOCUMENTED.</div><div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Fields</i></b></div><div>
|
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Description</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'>Full_Cursor describes the position of a cursor in every buffer
|
||||||
|
coordinate system supported by 4coder.</div><div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Fields</i></b></div><div>
|
||||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>pos</span></div>
|
<div style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>pos</span></div>
|
||||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>UNDOCUMENTED.</div></div>
|
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>This field contains the cursor's position in absolute positioning.</div></div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>line</span></div>
|
<div style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>line</span></div>
|
||||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>UNDOCUMENTED.</div></div>
|
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>This field contains the number of the line where the cursor is located. This field is one based.</div></div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>character</span></div>
|
<div style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>character</span></div>
|
||||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>UNDOCUMENTED.</div></div>
|
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>This field contains the number of the column where the cursor is located. This field is one based.</div></div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>unwrapped_x</span></div>
|
<div style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>unwrapped_x</span></div>
|
||||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>UNDOCUMENTED.</div></div>
|
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>This field contains the x position measured with unwrapped lines.</div></div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>unwrapped_y</span></div>
|
<div style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>unwrapped_y</span></div>
|
||||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>UNDOCUMENTED.</div></div>
|
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>This field contains the y position measured with unwrapped lines.</div></div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>wrapped_x</span></div>
|
<div style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>wrapped_x</span></div>
|
||||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>UNDOCUMENTED.</div></div>
|
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>This field contains the x position measured with wrapped lines.</div></div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>wrapped_y</span></div>
|
<div style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>wrapped_y</span></div>
|
||||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>UNDOCUMENTED.</div></div>
|
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>This field contains the y position measured with wrapped lines.</div></div>
|
||||||
</div>
|
</div>
|
||||||
</div><hr>
|
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>See Also</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'><a href='#4coder_Buffer_Positioning_System_doc'>4coder_Buffer_Positioning_System</a></div></div><hr>
|
||||||
<div id='Buffer_Seek_doc' style='margin-bottom: 1cm;'>
|
<div id='Buffer_Seek_doc' style='margin-bottom: 1cm;'>
|
||||||
<h4>§3.4.32: Buffer_Seek</h4>
|
<h4>§3.4.32: Buffer_Seek</h4>
|
||||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>struct Buffer_Seek {<br>
|
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>struct Buffer_Seek {<br>
|
||||||
|
@ -1784,35 +1797,41 @@ int32_t character;<br>
|
||||||
</div>
|
</div>
|
||||||
};<br>
|
};<br>
|
||||||
</div>
|
</div>
|
||||||
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Description</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'>UNDOCUMENTED.</div><div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Fields</i></b></div><div>
|
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Description</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'>Buffer_Seek describes the destination of a seek operation. There are helpers
|
||||||
|
for concisely creating Buffer_Seek structs. They can be found in 4coder_buffer_types.h.</div><div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>Fields</i></b></div><div>
|
||||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>type</span></div>
|
<div style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>type</span></div>
|
||||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>UNDOCUMENTED.</div></div>
|
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>The type field determines the coordinate system of the seek operation.</div></div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>pos</span></div>
|
<div style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>pos</span></div>
|
||||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>UNDOCUMENTED.</div></div>
|
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>The pos field specified the pos when the seek is in absolute position.</div></div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>round_down</span></div>
|
<div style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>round_down</span></div>
|
||||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>UNDOCUMENTED.</div></div>
|
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>For xy coordinate seeks, rounding down means that any x in the box of the
|
||||||
|
character lands on that character. For instance when clicking rounding down is the
|
||||||
|
user's expected behavior. Not rounding down means that the right hand portion of
|
||||||
|
the character's box, which is closer to the next character, will land on that next
|
||||||
|
character. The unrounded behavior is the expected behavior when moving vertically
|
||||||
|
and keeping the preferred x.</div></div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>x</span></div>
|
<div style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>x</span></div>
|
||||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>UNDOCUMENTED.</div></div>
|
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>The x coordinate for xy type seeks.</div></div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>y</span></div>
|
<div style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>y</span></div>
|
||||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>UNDOCUMENTED.</div></div>
|
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>The y coordinate for xy type seeks.</div></div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>line</span></div>
|
<div style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>line</span></div>
|
||||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>UNDOCUMENTED.</div></div>
|
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>The line number of a line-character type seek.</div></div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>character</span></div>
|
<div style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>character</span></div>
|
||||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>UNDOCUMENTED.</div></div>
|
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>The character number of a line-character type seek.</div></div>
|
||||||
</div>
|
</div>
|
||||||
</div><hr>
|
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>See Also</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'><a href='#Buffer_Seek_Type_doc'>Buffer_Seek_Type</a></div><div style='margin-left: 5mm; margin-right: 5mm;'><a href='#4coder_Buffer_Positioning_System_doc'>4coder_Buffer_Positioning_System</a></div></div><hr>
|
||||||
<div id='Buffer_Summary_doc' style='margin-bottom: 1cm;'>
|
<div id='Buffer_Summary_doc' style='margin-bottom: 1cm;'>
|
||||||
<h4>§3.4.33: Buffer_Summary</h4>
|
<h4>§3.4.33: Buffer_Summary</h4>
|
||||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>struct Buffer_Summary {<br>
|
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>struct Buffer_Summary {<br>
|
||||||
|
@ -1828,6 +1847,7 @@ char * buffer_name;<br>
|
||||||
int32_t buffer_name_len;<br>
|
int32_t buffer_name_len;<br>
|
||||||
bool32 is_lexed;<br>
|
bool32 is_lexed;<br>
|
||||||
int32_t map_id;<br>
|
int32_t map_id;<br>
|
||||||
|
bool32 unwrapped_lines;<br>
|
||||||
</div>
|
</div>
|
||||||
};<br>
|
};<br>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1877,7 +1897,11 @@ int32_t map_id;<br>
|
||||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>map_id</span></div>
|
<div style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>map_id</span></div>
|
||||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>If this is not a null summary, this field specifies the id of the command map for this buffer.</div></div>
|
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>If this is not a null summary, this field specifies the id of the command map for this buffer.</div></div>
|
||||||
</div>
|
</div>
|
||||||
</div><hr>
|
<div>
|
||||||
|
<div style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>unwrapped_lines</span></div>
|
||||||
|
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>If this is not a null summary, this field indicates whether the buffer 'prefers' wrapped lines.</div></div>
|
||||||
|
</div>
|
||||||
|
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>See Also</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'><a href='#Access_Flag_doc'>Access_Flag</a></div></div><hr>
|
||||||
<div id='View_Summary_doc' style='margin-bottom: 1cm;'>
|
<div id='View_Summary_doc' style='margin-bottom: 1cm;'>
|
||||||
<h4>§3.4.34: View_Summary</h4>
|
<h4>§3.4.34: View_Summary</h4>
|
||||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>struct View_Summary {<br>
|
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>struct View_Summary {<br>
|
||||||
|
@ -1947,7 +1971,7 @@ GUI_Scroll_Vars scroll_vars;<br>
|
||||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>scroll_vars</span></div>
|
<div style='font-family: "Courier New", Courier, monospace; text-align: left;'><span style='font-weight: 600;'>scroll_vars</span></div>
|
||||||
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>This feature is not fully implemented yet.</div></div>
|
<div style='margin-bottom: 6mm;'><div style='margin-left: 5mm; margin-right: 5mm;'>This feature is not fully implemented yet.</div></div>
|
||||||
</div>
|
</div>
|
||||||
</div><hr>
|
<div style='margin-top: 3mm; margin-bottom: 3mm; color: #309030;'><b><i>See Also</i></b></div><div style='margin-left: 5mm; margin-right: 5mm;'><a href='#Access_Flag_doc'>Access_Flag</a></div></div><hr>
|
||||||
<div id='User_Input_doc' style='margin-bottom: 1cm;'>
|
<div id='User_Input_doc' style='margin-bottom: 1cm;'>
|
||||||
<h4>§3.4.35: User_Input</h4>
|
<h4>§3.4.35: User_Input</h4>
|
||||||
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>struct User_Input {<br>
|
<div style='font-family: "Courier New", Courier, monospace; text-align: left; margin-top: 3mm; margin-bottom: 3mm; font-size: .95em; background: #DFDFDF; padding: 0.25em;'>struct User_Input {<br>
|
||||||
|
|
|
@ -23,6 +23,10 @@ CUSTOM_COMMAND_SIG(write_allen_note){
|
||||||
write_string(app, make_lit_string("// NOTE(allen): "));
|
write_string(app, make_lit_string("// NOTE(allen): "));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CUSTOM_COMMAND_SIG(write_allen_doc){
|
||||||
|
write_string(app, make_lit_string("/* DOC() */"));
|
||||||
|
}
|
||||||
|
|
||||||
CUSTOM_COMMAND_SIG(write_zero_struct){
|
CUSTOM_COMMAND_SIG(write_zero_struct){
|
||||||
write_string(app, make_lit_string(" = {0};"));
|
write_string(app, make_lit_string(" = {0};"));
|
||||||
}
|
}
|
||||||
|
@ -294,6 +298,7 @@ default_keys(Bind_Helper *context){
|
||||||
bind(context, '=', MDFR_CTRL, write_increment);
|
bind(context, '=', MDFR_CTRL, write_increment);
|
||||||
bind(context, 't', MDFR_ALT, write_allen_todo);
|
bind(context, 't', MDFR_ALT, write_allen_todo);
|
||||||
bind(context, 'y', MDFR_ALT, write_allen_note);
|
bind(context, 'y', MDFR_ALT, write_allen_note);
|
||||||
|
bind(context, 'r', MDFR_ALT, write_allen_note);
|
||||||
bind(context, '[', MDFR_CTRL, open_long_braces);
|
bind(context, '[', MDFR_CTRL, open_long_braces);
|
||||||
bind(context, '{', MDFR_CTRL, open_long_braces_semicolon);
|
bind(context, '{', MDFR_CTRL, open_long_braces_semicolon);
|
||||||
bind(context, '}', MDFR_CTRL, open_long_braces_break);
|
bind(context, '}', MDFR_CTRL, open_long_braces_break);
|
||||||
|
@ -327,8 +332,8 @@ default_keys(Bind_Helper *context){
|
||||||
bind(context, key_down, MDFR_NONE, move_down);
|
bind(context, key_down, MDFR_NONE, move_down);
|
||||||
bind(context, key_end, MDFR_NONE, seek_end_of_line);
|
bind(context, key_end, MDFR_NONE, seek_end_of_line);
|
||||||
bind(context, key_home, MDFR_NONE, seek_beginning_of_line);
|
bind(context, key_home, MDFR_NONE, seek_beginning_of_line);
|
||||||
bind(context, key_page_up, MDFR_NONE, cmdid_page_up);
|
bind(context, key_page_up, MDFR_NONE, page_up);
|
||||||
bind(context, key_page_down, MDFR_NONE, cmdid_page_down);
|
bind(context, key_page_down, MDFR_NONE, page_down);
|
||||||
|
|
||||||
bind(context, key_right, MDFR_CTRL, seek_whitespace_right);
|
bind(context, key_right, MDFR_CTRL, seek_whitespace_right);
|
||||||
bind(context, key_left, MDFR_CTRL, seek_whitespace_left);
|
bind(context, key_left, MDFR_CTRL, seek_whitespace_left);
|
||||||
|
@ -354,7 +359,7 @@ default_keys(Bind_Helper *context){
|
||||||
bind(context, 'H', MDFR_CTRL, cmdid_history_forward);
|
bind(context, 'H', MDFR_CTRL, cmdid_history_forward);
|
||||||
bind(context, 'j', MDFR_CTRL, cmdid_to_lowercase);
|
bind(context, 'j', MDFR_CTRL, cmdid_to_lowercase);
|
||||||
bind(context, 'K', MDFR_CTRL, cmdid_kill_buffer);
|
bind(context, 'K', MDFR_CTRL, cmdid_kill_buffer);
|
||||||
bind(context, 'l', MDFR_CTRL, cmdid_toggle_line_wrap);
|
bind(context, 'l', MDFR_CTRL, toggle_line_wrap);
|
||||||
bind(context, 'm', MDFR_CTRL, cursor_mark_swap);
|
bind(context, 'm', MDFR_CTRL, cursor_mark_swap);
|
||||||
bind(context, 'O', MDFR_CTRL, cmdid_reopen);
|
bind(context, 'O', MDFR_CTRL, cmdid_reopen);
|
||||||
bind(context, 'q', MDFR_CTRL, query_replace);
|
bind(context, 'q', MDFR_CTRL, query_replace);
|
||||||
|
@ -371,11 +376,11 @@ default_keys(Bind_Helper *context){
|
||||||
bind(context, 'z', MDFR_CTRL, cmdid_undo);
|
bind(context, 'z', MDFR_CTRL, cmdid_undo);
|
||||||
|
|
||||||
|
|
||||||
bind(context, '1', MDFR_CTRL, cmdid_eol_dosify);
|
bind(context, '1', MDFR_CTRL, eol_dosify);
|
||||||
|
bind(context, '!', MDFR_CTRL, eol_nixify);
|
||||||
|
|
||||||
bind(context, '?', MDFR_CTRL, cmdid_toggle_show_whitespace);
|
bind(context, '?', MDFR_CTRL, toggle_show_whitespace);
|
||||||
bind(context, '~', MDFR_CTRL, cmdid_clean_all_lines);
|
bind(context, '~', MDFR_CTRL, cmdid_clean_all_lines);
|
||||||
bind(context, '!', MDFR_CTRL, cmdid_eol_nixify);
|
|
||||||
bind(context, '\n', MDFR_SHIFT, write_and_auto_tab);
|
bind(context, '\n', MDFR_SHIFT, write_and_auto_tab);
|
||||||
bind(context, ' ', MDFR_SHIFT, write_character);
|
bind(context, ' ', MDFR_SHIFT, write_character);
|
||||||
|
|
||||||
|
|
|
@ -199,6 +199,36 @@ CUSTOM_COMMAND_SIG(move_down_10){
|
||||||
move_vertical(app, 10.f);
|
move_vertical(app, 10.f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static float
|
||||||
|
get_page_jump(View_Summary *view){
|
||||||
|
i32_Rect region = view->file_region;
|
||||||
|
float page_jump = 1;
|
||||||
|
|
||||||
|
if (view->line_height > 0){
|
||||||
|
page_jump = (float)(region.y1 - region.y0) / view->line_height;
|
||||||
|
page_jump -= 3.f;
|
||||||
|
if (page_jump <= 0){
|
||||||
|
page_jump = 1.f;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return(page_jump);
|
||||||
|
}
|
||||||
|
|
||||||
|
CUSTOM_COMMAND_SIG(page_up){
|
||||||
|
unsigned int access = AccessProtected;
|
||||||
|
View_Summary view = app->get_active_view(app, access);
|
||||||
|
float page_jump = get_page_jump(&view);
|
||||||
|
move_vertical(app, -page_jump);
|
||||||
|
}
|
||||||
|
|
||||||
|
CUSTOM_COMMAND_SIG(page_down){
|
||||||
|
unsigned int access = AccessProtected;
|
||||||
|
View_Summary view = app->get_active_view(app, access);
|
||||||
|
float page_jump = get_page_jump(&view);
|
||||||
|
move_vertical(app, page_jump);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
CUSTOM_COMMAND_SIG(move_left){
|
CUSTOM_COMMAND_SIG(move_left){
|
||||||
unsigned int access = AccessProtected;
|
unsigned int access = AccessProtected;
|
||||||
|
@ -1265,44 +1295,6 @@ CUSTOM_COMMAND_SIG(execute_previous_cli){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CUSTOM_COMMAND_SIG(execute_arbitrary_command){
|
|
||||||
// NOTE(allen): This isn't a super powerful version of this command, I will expand
|
|
||||||
// upon it so that it has all the cmdid_* commands by default. However, with this
|
|
||||||
// as an example you have everything you need to make it work already. You could
|
|
||||||
// even use app->memory to create a hash table in the start hook.
|
|
||||||
Query_Bar bar;
|
|
||||||
char space[1024];
|
|
||||||
bar.prompt = make_lit_string("Command: ");
|
|
||||||
bar.string = make_fixed_width_string(space);
|
|
||||||
|
|
||||||
if (!query_user_string(app, &bar)) return;
|
|
||||||
|
|
||||||
// NOTE(allen): Here I chose to end this query bar because when I call another
|
|
||||||
// command it might ALSO have query bars and I don't want this one hanging
|
|
||||||
// around at that point. Since the bar exists on my stack the result of the query
|
|
||||||
// is still available in bar.string though.
|
|
||||||
app->end_query_bar(app, &bar, 0);
|
|
||||||
|
|
||||||
if (match(bar.string, make_lit_string("open all code"))){
|
|
||||||
exec_command(app, open_all_code);
|
|
||||||
}
|
|
||||||
else if(match(bar.string, make_lit_string("close all code"))){
|
|
||||||
exec_command(app, close_all_code);
|
|
||||||
}
|
|
||||||
else if (match(bar.string, make_lit_string("open menu"))){
|
|
||||||
exec_command(app, cmdid_open_menu);
|
|
||||||
}
|
|
||||||
else if (match(bar.string, make_lit_string("dos lines"))){
|
|
||||||
exec_command(app, cmdid_eol_dosify);
|
|
||||||
}
|
|
||||||
else if (match(bar.string, make_lit_string("nix lines"))){
|
|
||||||
exec_command(app, cmdid_eol_nixify);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
app->print_message(app, literal("unrecognized command\n"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
CUSTOM_COMMAND_SIG(open_in_other_regular){
|
CUSTOM_COMMAND_SIG(open_in_other_regular){
|
||||||
exec_command(app, cmdid_change_active_panel);
|
exec_command(app, cmdid_change_active_panel);
|
||||||
exec_command(app, cmdid_interactive_open);
|
exec_command(app, cmdid_interactive_open);
|
||||||
|
@ -1524,6 +1516,76 @@ CUSTOM_COMMAND_SIG(change_active_panel_regular){
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Common Settings Commands
|
||||||
|
//
|
||||||
|
|
||||||
|
CUSTOM_COMMAND_SIG(toggle_line_wrap){
|
||||||
|
View_Summary view = app->get_active_view(app, AccessProtected);
|
||||||
|
Buffer_Summary buffer = app->get_buffer(app, view.buffer_id, AccessProtected);
|
||||||
|
|
||||||
|
bool32 unwrapped = view.unwrapped_lines;
|
||||||
|
if (buffer.exists){
|
||||||
|
unwrapped = buffer.unwrapped_lines;
|
||||||
|
}
|
||||||
|
|
||||||
|
app->view_set_setting(app, &view, ViewSetting_WrapLine, unwrapped);
|
||||||
|
}
|
||||||
|
|
||||||
|
CUSTOM_COMMAND_SIG(toggle_show_whitespace){
|
||||||
|
View_Summary view = app->get_active_view(app, AccessProtected);
|
||||||
|
app->view_set_setting(app, &view, ViewSetting_ShowWhitespace, !view.show_whitespace);
|
||||||
|
}
|
||||||
|
|
||||||
|
CUSTOM_COMMAND_SIG(eol_dosify){
|
||||||
|
View_Summary view = app->get_active_view(app, AccessOpen);
|
||||||
|
Buffer_Summary buffer = app->get_buffer(app, view.buffer_id, AccessOpen);
|
||||||
|
app->buffer_set_setting(app, &buffer, BufferSetting_Eol, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
CUSTOM_COMMAND_SIG(eol_nixify){
|
||||||
|
View_Summary view = app->get_active_view(app, AccessOpen);
|
||||||
|
Buffer_Summary buffer = app->get_buffer(app, view.buffer_id, AccessOpen);
|
||||||
|
app->buffer_set_setting(app, &buffer, BufferSetting_Eol, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
CUSTOM_COMMAND_SIG(execute_arbitrary_command){
|
||||||
|
// NOTE(allen): This isn't a super powerful version of this command, I will expand
|
||||||
|
// upon it so that it has all the cmdid_* commands by default. However, with this
|
||||||
|
// as an example you have everything you need to make it work already. You could
|
||||||
|
// even use app->memory to create a hash table in the start hook.
|
||||||
|
Query_Bar bar;
|
||||||
|
char space[1024];
|
||||||
|
bar.prompt = make_lit_string("Command: ");
|
||||||
|
bar.string = make_fixed_width_string(space);
|
||||||
|
|
||||||
|
if (!query_user_string(app, &bar)) return;
|
||||||
|
|
||||||
|
// NOTE(allen): Here I chose to end this query bar because when I call another
|
||||||
|
// command it might ALSO have query bars and I don't want this one hanging
|
||||||
|
// around at that point. Since the bar exists on my stack the result of the query
|
||||||
|
// is still available in bar.string though.
|
||||||
|
app->end_query_bar(app, &bar, 0);
|
||||||
|
|
||||||
|
if (match(bar.string, make_lit_string("open all code"))){
|
||||||
|
exec_command(app, open_all_code);
|
||||||
|
}
|
||||||
|
else if(match(bar.string, make_lit_string("close all code"))){
|
||||||
|
exec_command(app, close_all_code);
|
||||||
|
}
|
||||||
|
else if (match(bar.string, make_lit_string("open menu"))){
|
||||||
|
exec_command(app, cmdid_open_menu);
|
||||||
|
}
|
||||||
|
else if (match(bar.string, make_lit_string("dos lines"))){
|
||||||
|
exec_command(app, eol_dosify);
|
||||||
|
}
|
||||||
|
else if (match(bar.string, make_lit_string("nix lines"))){
|
||||||
|
exec_command(app, eol_nixify);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
app->print_message(app, literal("unrecognized command\n"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// NOTE(allen|a4): scroll rule information
|
// NOTE(allen|a4): scroll rule information
|
||||||
//
|
//
|
||||||
|
|
109
4coder_types.h
109
4coder_types.h
|
@ -54,10 +54,6 @@ ENUM(uint64_t, Command_ID){
|
||||||
cmdid_center_view,
|
cmdid_center_view,
|
||||||
/* DOC(cmdid_left_adjust_view adjusts the view to be just left of the cursor's position.) */
|
/* DOC(cmdid_left_adjust_view adjusts the view to be just left of the cursor's position.) */
|
||||||
cmdid_left_adjust_view,
|
cmdid_left_adjust_view,
|
||||||
/* DOC(cmdid_page_up moves the view up one whole screen height and centers the cursor there.) */
|
|
||||||
cmdid_page_up,
|
|
||||||
/* DOC(cmdid_page_down moves the view down one whole screen height and centers the cursor there.) */
|
|
||||||
cmdid_page_down,
|
|
||||||
|
|
||||||
/* DOC(cmdid_word_complete begins or continues cycling through completions for a partial word.) */
|
/* DOC(cmdid_word_complete begins or continues cycling through completions for a partial word.) */
|
||||||
cmdid_word_complete,
|
cmdid_word_complete,
|
||||||
|
@ -76,16 +72,22 @@ ENUM(uint64_t, Command_ID){
|
||||||
/* DOC(cmdid_to_uppercase makes all the alphabetic characters in the cursor/mark range lowercase.) */
|
/* DOC(cmdid_to_uppercase makes all the alphabetic characters in the cursor/mark range lowercase.) */
|
||||||
cmdid_to_lowercase,
|
cmdid_to_lowercase,
|
||||||
|
|
||||||
|
#if 0
|
||||||
/* DOC(cmdid_toggle_line_wrap toggles the line wrap setting of the active view. ) */
|
/* DOC(cmdid_toggle_line_wrap toggles the line wrap setting of the active view. ) */
|
||||||
cmdid_toggle_line_wrap,
|
cmdid_toggle_line_wrap,
|
||||||
/* DOC(cmdid_toggle_line_wrap toggles the show whitespace setting of the active view.) */
|
/* DOC(cmdid_toggle_line_wrap toggles the show whitespace setting of the active view.) */
|
||||||
cmdid_toggle_show_whitespace,
|
cmdid_toggle_show_whitespace,
|
||||||
|
#endif
|
||||||
|
|
||||||
/* DOC(cmdid_clean_all_lines deletes extra whitespace out the currently active buffer.) */
|
/* DOC(cmdid_clean_all_lines deletes extra whitespace out the currently active buffer.) */
|
||||||
cmdid_clean_all_lines,
|
cmdid_clean_all_lines,
|
||||||
|
|
||||||
|
#if 0
|
||||||
/* DOC(cmdid_eol_dosify sets the currently active buffer to dos save mode where the end of a line is "\r\n") */
|
/* DOC(cmdid_eol_dosify sets the currently active buffer to dos save mode where the end of a line is "\r\n") */
|
||||||
cmdid_eol_dosify,
|
cmdid_eol_dosify,
|
||||||
/* DOC(cmdid_eol_nixify sets the currently active buffer to nix save mode where the end of a line is "\n") */
|
/* DOC(cmdid_eol_nixify sets the currently active buffer to nix save mode where the end of a line is "\n") */
|
||||||
cmdid_eol_nixify,
|
cmdid_eol_nixify,
|
||||||
|
#endif
|
||||||
|
|
||||||
/* DOC(cmdid_interactive_new begins an interactive dialogue to create a new buffer.) */
|
/* DOC(cmdid_interactive_new begins an interactive dialogue to create a new buffer.) */
|
||||||
cmdid_interactive_new,
|
cmdid_interactive_new,
|
||||||
|
@ -152,20 +154,41 @@ ENUM(int32_t, Event_Message_Type_ID){
|
||||||
ENUM(int32_t, Buffer_Setting_ID){
|
ENUM(int32_t, Buffer_Setting_ID){
|
||||||
/* DOC(BufferSetting_Null is not a valid setting, it is reserved to detect errors.) */
|
/* DOC(BufferSetting_Null is not a valid setting, it is reserved to detect errors.) */
|
||||||
BufferSetting_Null,
|
BufferSetting_Null,
|
||||||
/* DOC(The BufferSetting_Lex setting is used to determine whether to store C++ tokens from with the buffer.) */
|
|
||||||
|
/* DOC(The BufferSetting_Lex setting is used to determine whether to store C++ tokens
|
||||||
|
from with the buffer.) */
|
||||||
BufferSetting_Lex,
|
BufferSetting_Lex,
|
||||||
/* DOC(The BufferSetting_WrapLine setting is used to determine whether a buffer prefers to be viewed with wrapped lines,
|
|
||||||
individual views can be set to override this value after being tied to the buffer.) */
|
/* DOC(The BufferSetting_WrapLine setting is used to determine whether a buffer prefers
|
||||||
|
to be viewed with wrapped lines, individual views can be set to override this value after
|
||||||
|
being tied to the buffer.) */
|
||||||
BufferSetting_WrapLine,
|
BufferSetting_WrapLine,
|
||||||
/* DOC(The BufferSetting_MapID setting specifies the id of the command map that should be active when a buffer is active.) */
|
|
||||||
|
/* DOC(The BufferSetting_MapID setting specifies the id of the command map that should be
|
||||||
|
active when a buffer is active.) */
|
||||||
BufferSetting_MapID,
|
BufferSetting_MapID,
|
||||||
|
|
||||||
|
/* DOC(The BufferSetting_Eol setting spcifies how line ends should be saved to the backing file.
|
||||||
|
A 1 indicates dos endings "\r\n" and a 0 indicates nix endings "\n".*/
|
||||||
|
BufferSetting_Eol,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* DOC(A View_Setting_ID names a setting in a view.) */
|
/* DOC(A View_Setting_ID names a setting in a view.) */
|
||||||
ENUM(int32_t, View_Setting_ID){
|
ENUM(int32_t, View_Setting_ID){
|
||||||
/* DOC(ViewSetting_Null is not a valid setting, it is reserved to detect errors.) */
|
/* DOC(ViewSetting_Null is not a valid setting, it is reserved to detect errors.) */
|
||||||
ViewSetting_Null,
|
ViewSetting_Null,
|
||||||
/* DOC(The ViewSetting_ShowScrollbar setting determines whether a scroll bar is attached to a view in it's scrollable section.) */
|
|
||||||
|
/* DOC(The ViewSetting_WrapLine setting determines whether the view applies line wrapping
|
||||||
|
at the border of the panel for long lines. Whenever the view switches to a new buffer it
|
||||||
|
will reset this setting to match the 'preferred' line wrapping setting of the buffer.) */
|
||||||
|
ViewSetting_WrapLine,
|
||||||
|
|
||||||
|
/* DOC(The ViewSetting_ShowWhitespace setting determines whether the view highlights
|
||||||
|
whitespace in a file. Whenever the view switches to a new buffer this setting is turned off.) */
|
||||||
|
ViewSetting_ShowWhitespace,
|
||||||
|
|
||||||
|
/* DOC(The ViewSetting_ShowScrollbar setting determines whether a scroll bar is
|
||||||
|
attached to a view in it's scrollable section.) */
|
||||||
ViewSetting_ShowScrollbar,
|
ViewSetting_ShowScrollbar,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -286,15 +309,19 @@ ENUM(int32_t, Mouse_Cursor_Show_Type){
|
||||||
// MouseCursorShow_WhenActive,// TODO(allen): coming soon
|
// MouseCursorShow_WhenActive,// TODO(allen): coming soon
|
||||||
};
|
};
|
||||||
|
|
||||||
/* DOC(UNDOCUMENTED.) */
|
/* DOC(The Buffer_Seek_Type is is used in a Buffer_Seek to identify which
|
||||||
|
coordinates are suppose to be used for the seek.)
|
||||||
|
DOC_SEE(Buffer_Seek)
|
||||||
|
DOC_SEE(4coder_Buffer_Positioning_System)
|
||||||
|
*/
|
||||||
ENUM(int32_t, Buffer_Seek_Type){
|
ENUM(int32_t, Buffer_Seek_Type){
|
||||||
/* DOC(UNDOCUMENTED.) */
|
/* DOC(This value indicates absolute positioning where positions are measured as the number of bytes from the start of the file.) */
|
||||||
buffer_seek_pos,
|
buffer_seek_pos,
|
||||||
/* DOC(UNDOCUMENTED.) */
|
/* DOC(This value indicates xy positioning with wrapped lines where the x and y values are in pixels.) */
|
||||||
buffer_seek_wrapped_xy,
|
buffer_seek_wrapped_xy,
|
||||||
/* DOC(UNDOCUMENTED.) */
|
/* DOC(This value indicates xy positioning with unwrapped lines where the x and y values are in pixels.) */
|
||||||
buffer_seek_unwrapped_xy,
|
buffer_seek_unwrapped_xy,
|
||||||
/* DOC(UNDOCUMENTED.) */
|
/* DOC(This value indicates line-character, or line-column positioning. These coordinates are 1 based to match standard line numbering.) */
|
||||||
buffer_seek_line_char
|
buffer_seek_line_char
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -457,53 +484,62 @@ struct GUI_Scroll_Vars{
|
||||||
int32_t prev_target_x;
|
int32_t prev_target_x;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* DOC(UNDOCUMENTED.) */
|
/* DOC(Full_Cursor describes the position of a cursor in every buffer
|
||||||
|
coordinate system supported by 4coder.)
|
||||||
|
DOC_SEE(4coder_Buffer_Positioning_System) */
|
||||||
struct Full_Cursor{
|
struct Full_Cursor{
|
||||||
/* DOC(UNDOCUMENTED.) */
|
/* DOC(This field contains the cursor's position in absolute positioning.) */
|
||||||
int32_t pos;
|
int32_t pos;
|
||||||
/* DOC(UNDOCUMENTED.) */
|
/* DOC(This field contains the number of the line where the cursor is located. This field is one based.) */
|
||||||
int32_t line;
|
int32_t line;
|
||||||
/* DOC(UNDOCUMENTED.) */
|
/* DOC(This field contains the number of the column where the cursor is located. This field is one based.) */
|
||||||
int32_t character;
|
int32_t character;
|
||||||
/* DOC(UNDOCUMENTED.) */
|
/* DOC(This field contains the x position measured with unwrapped lines.) */
|
||||||
float unwrapped_x;
|
float unwrapped_x;
|
||||||
/* DOC(UNDOCUMENTED.) */
|
/* DOC(This field contains the y position measured with unwrapped lines.) */
|
||||||
float unwrapped_y;
|
float unwrapped_y;
|
||||||
/* DOC(UNDOCUMENTED.) */
|
/* DOC(This field contains the x position measured with wrapped lines.) */
|
||||||
float wrapped_x;
|
float wrapped_x;
|
||||||
/* DOC(UNDOCUMENTED.) */
|
/* DOC(This field contains the y position measured with wrapped lines.) */
|
||||||
float wrapped_y;
|
float wrapped_y;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* DOC(UNDOCUMENTED.) */
|
/* DOC(Buffer_Seek describes the destination of a seek operation. There are helpers
|
||||||
|
for concisely creating Buffer_Seek structs. They can be found in 4coder_buffer_types.h.)
|
||||||
|
DOC_SEE(Buffer_Seek_Type)
|
||||||
|
DOC_SEE(4coder_Buffer_Positioning_System)*/
|
||||||
struct Buffer_Seek{
|
struct Buffer_Seek{
|
||||||
/* DOC(UNDOCUMENTED.) */
|
/* DOC(The type field determines the coordinate system of the seek operation.) */
|
||||||
Buffer_Seek_Type type;
|
Buffer_Seek_Type type;
|
||||||
union{
|
union{
|
||||||
struct {
|
struct {
|
||||||
/* DOC(UNDOCUMENTED.) */
|
/* DOC(The pos field specified the pos when the seek is in absolute position.) */
|
||||||
int32_t pos;
|
int32_t pos;
|
||||||
};
|
};
|
||||||
struct {
|
struct {
|
||||||
/* DOC(UNDOCUMENTED.) */
|
/* DOC(For xy coordinate seeks, rounding down means that any x in the box of the
|
||||||
|
character lands on that character. For instance when clicking rounding down is the
|
||||||
|
user's expected behavior. Not rounding down means that the right hand portion of
|
||||||
|
the character's box, which is closer to the next character, will land on that next
|
||||||
|
character. The unrounded behavior is the expected behavior when moving vertically
|
||||||
|
and keeping the preferred x.) */
|
||||||
bool32 round_down;
|
bool32 round_down;
|
||||||
/* DOC(UNDOCUMENTED.) */
|
/* DOC(The x coordinate for xy type seeks.) */
|
||||||
float x;
|
float x;
|
||||||
/* DOC(UNDOCUMENTED.) */
|
/* DOC(The y coordinate for xy type seeks.) */
|
||||||
float y;
|
float y;
|
||||||
};
|
};
|
||||||
struct {
|
struct {
|
||||||
/* DOC(UNDOCUMENTED.) */
|
/* DOC(The line number of a line-character type seek.) */
|
||||||
int32_t line;
|
int32_t line;
|
||||||
/* DOC(UNDOCUMENTED.) */
|
/* DOC(The character number of a line-character type seek.) */
|
||||||
int32_t character;
|
int32_t character;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
/* DOC(
|
/* DOC(Buffer_Summary acts as a handle to a buffer and describes the state of the buffer.)
|
||||||
Buffer_Summary acts as a handle to a buffer and describes the state of the buffer.
|
DOC_SEE(Access_Flag)*/
|
||||||
) */
|
|
||||||
struct Buffer_Summary{
|
struct Buffer_Summary{
|
||||||
/* DOC(
|
/* DOC(
|
||||||
This field indicates whether the Buffer_Summary describes a buffer that is open in 4coder.
|
This field indicates whether the Buffer_Summary describes a buffer that is open in 4coder.
|
||||||
|
@ -519,7 +555,6 @@ struct Buffer_Summary{
|
||||||
int32_t buffer_id;
|
int32_t buffer_id;
|
||||||
/*
|
/*
|
||||||
DOC(If this is not a null summary, this field contains flags describing the protection status of the buffer.)
|
DOC(If this is not a null summary, this field contains flags describing the protection status of the buffer.)
|
||||||
DOC_SEE(Access_Flag)
|
|
||||||
*/
|
*/
|
||||||
Access_Flag lock_flags;
|
Access_Flag lock_flags;
|
||||||
|
|
||||||
|
@ -540,9 +575,12 @@ struct Buffer_Summary{
|
||||||
bool32 is_lexed;
|
bool32 is_lexed;
|
||||||
/* DOC(If this is not a null summary, this field specifies the id of the command map for this buffer.) */
|
/* DOC(If this is not a null summary, this field specifies the id of the command map for this buffer.) */
|
||||||
int32_t map_id;
|
int32_t map_id;
|
||||||
|
/* DOC(If this is not a null summary, this field indicates whether the buffer 'prefers' wrapped lines.) */
|
||||||
|
bool32 unwrapped_lines;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* DOC(View_Summary acts as a handle to a view and describes the state of the view.) */
|
/* DOC(View_Summary acts as a handle to a view and describes the state of the view.)
|
||||||
|
DOC_SEE(Access_Flag)*/
|
||||||
struct View_Summary{
|
struct View_Summary{
|
||||||
/* DOC(
|
/* DOC(
|
||||||
This field indicates whether the View_Summary describes a view that is open in 4coder.
|
This field indicates whether the View_Summary describes a view that is open in 4coder.
|
||||||
|
@ -558,7 +596,6 @@ struct View_Summary{
|
||||||
int32_t buffer_id;
|
int32_t buffer_id;
|
||||||
/*
|
/*
|
||||||
DOC(If this is not a null summary, this field contains flags describing the protection status of the view.)
|
DOC(If this is not a null summary, this field contains flags describing the protection status of the view.)
|
||||||
DOC_SEE(Access_Flag)
|
|
||||||
*/
|
*/
|
||||||
Access_Flag lock_flags;
|
Access_Flag lock_flags;
|
||||||
|
|
||||||
|
|
13
4ed.cpp
13
4ed.cpp
|
@ -659,10 +659,13 @@ COMMAND_DECL(toggle_line_wrap){
|
||||||
view_set_relative_scrolling(view, scrolling);
|
view_set_relative_scrolling(view, scrolling);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
COMMAND_DECL(toggle_show_whitespace){
|
COMMAND_DECL(toggle_show_whitespace){
|
||||||
REQ_READABLE_VIEW(view);
|
REQ_READABLE_VIEW(view);
|
||||||
|
|
||||||
view->file_data.show_whitespace = !view->file_data.show_whitespace;
|
view->file_data.show_whitespace = !view->file_data.show_whitespace;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
COMMAND_DECL(toggle_tokens){
|
COMMAND_DECL(toggle_tokens){
|
||||||
#if BUFFER_EXPERIMENT_SCALPEL <= 0
|
#if BUFFER_EXPERIMENT_SCALPEL <= 0
|
||||||
|
@ -734,6 +737,7 @@ COMMAND_DECL(clean_all_lines){
|
||||||
view_clean_whitespace(system, models, view);
|
view_clean_whitespace(system, models, view);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
COMMAND_DECL(eol_dosify){
|
COMMAND_DECL(eol_dosify){
|
||||||
REQ_READABLE_VIEW(view);
|
REQ_READABLE_VIEW(view);
|
||||||
REQ_FILE(file, view);
|
REQ_FILE(file, view);
|
||||||
|
@ -749,6 +753,7 @@ COMMAND_DECL(eol_nixify){
|
||||||
file->settings.dos_write_mode = 0;
|
file->settings.dos_write_mode = 0;
|
||||||
file->state.last_4ed_edit_time = system->now_time_stamp();
|
file->state.last_4ed_edit_time = system->now_time_stamp();
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
COMMAND_DECL(open_panel_vsplit){
|
COMMAND_DECL(open_panel_vsplit){
|
||||||
USE_VARS(vars);
|
USE_VARS(vars);
|
||||||
|
@ -1059,21 +1064,13 @@ setup_command_table(){
|
||||||
SET(to_uppercase);
|
SET(to_uppercase);
|
||||||
SET(to_lowercase);
|
SET(to_lowercase);
|
||||||
|
|
||||||
SET(toggle_line_wrap);
|
|
||||||
SET(toggle_show_whitespace);
|
|
||||||
|
|
||||||
SET(clean_all_lines);
|
SET(clean_all_lines);
|
||||||
SET(eol_dosify);
|
|
||||||
SET(eol_nixify);
|
|
||||||
|
|
||||||
SET(open_panel_vsplit);
|
SET(open_panel_vsplit);
|
||||||
SET(open_panel_hsplit);
|
SET(open_panel_hsplit);
|
||||||
SET(close_panel);
|
SET(close_panel);
|
||||||
SET(change_active_panel);
|
SET(change_active_panel);
|
||||||
|
|
||||||
SET(page_up);
|
|
||||||
SET(page_down);
|
|
||||||
|
|
||||||
SET(open_color_tweaker);
|
SET(open_color_tweaker);
|
||||||
SET(open_config);
|
SET(open_config);
|
||||||
SET(open_menu);
|
SET(open_menu);
|
||||||
|
|
|
@ -22,7 +22,6 @@ fill_buffer_summary(Buffer_Summary *buffer, Editing_File *file, Working_Set *wor
|
||||||
buffer->exists = 1;
|
buffer->exists = 1;
|
||||||
buffer->ready = file_is_ready(file);
|
buffer->ready = file_is_ready(file);
|
||||||
|
|
||||||
buffer->is_lexed = file->settings.tokens_exist;
|
|
||||||
buffer->buffer_id = file->id.id;
|
buffer->buffer_id = file->id.id;
|
||||||
buffer->size = file->state.buffer.size;
|
buffer->size = file->state.buffer.size;
|
||||||
|
|
||||||
|
@ -31,7 +30,9 @@ fill_buffer_summary(Buffer_Summary *buffer, Editing_File *file, Working_Set *wor
|
||||||
buffer->file_name = file->name.source_path.str;
|
buffer->file_name = file->name.source_path.str;
|
||||||
buffer->buffer_name = file->name.live_name.str;
|
buffer->buffer_name = file->name.live_name.str;
|
||||||
|
|
||||||
|
buffer->is_lexed = file->settings.tokens_exist;
|
||||||
buffer->map_id = file->settings.base_map_id;
|
buffer->map_id = file->settings.base_map_id;
|
||||||
|
buffer->unwrapped_lines = file->settings.unwrapped_lines;
|
||||||
|
|
||||||
buffer->lock_flags = 0;
|
buffer->lock_flags = 0;
|
||||||
if (file->settings.read_only){
|
if (file->settings.read_only){
|
||||||
|
@ -765,6 +766,12 @@ DOC_SEE(Buffer_Setting_ID)
|
||||||
iter.view->map = get_map(models, file->settings.base_map_id);
|
iter.view->map = get_map(models, file->settings.base_map_id);
|
||||||
}
|
}
|
||||||
}break;
|
}break;
|
||||||
|
|
||||||
|
case BufferSetting_Eol:
|
||||||
|
{
|
||||||
|
file->settings.dos_write_mode = value;
|
||||||
|
file->state.last_4ed_edit_time = system->now_time_stamp();
|
||||||
|
}break;
|
||||||
}
|
}
|
||||||
fill_buffer_summary(buffer, file, cmd);
|
fill_buffer_summary(buffer, file, cmd);
|
||||||
}
|
}
|
||||||
|
@ -1136,12 +1143,42 @@ DOC_SEE(View_Setting_ID)
|
||||||
bool32 result = false;
|
bool32 result = false;
|
||||||
|
|
||||||
if (vptr){
|
if (vptr){
|
||||||
|
result = true;
|
||||||
switch (setting){
|
switch (setting){
|
||||||
|
case ViewSetting_WrapLine:
|
||||||
|
{
|
||||||
|
Relative_Scrolling scrolling = view_get_relative_scrolling(vptr);
|
||||||
|
if (value){
|
||||||
|
if (vptr->file_data.unwrapped_lines){
|
||||||
|
vptr->file_data.unwrapped_lines = 0;
|
||||||
|
vptr->edit_pos->scroll.target_x = 0;
|
||||||
|
view_cursor_move(vptr, vptr->edit_pos->cursor.pos);
|
||||||
|
view_set_relative_scrolling(vptr, scrolling);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
if (!vptr->file_data.unwrapped_lines){
|
||||||
|
vptr->file_data.unwrapped_lines = 1;
|
||||||
|
view_cursor_move(vptr, vptr->edit_pos->cursor.pos);
|
||||||
|
view_set_relative_scrolling(vptr, scrolling);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}break;
|
||||||
|
|
||||||
|
case ViewSetting_ShowWhitespace:
|
||||||
|
{
|
||||||
|
vptr->file_data.show_whitespace = value;
|
||||||
|
}break;
|
||||||
|
|
||||||
case ViewSetting_ShowScrollbar:
|
case ViewSetting_ShowScrollbar:
|
||||||
{
|
{
|
||||||
result = true;
|
|
||||||
vptr->hide_scrollbar = !value;
|
vptr->hide_scrollbar = !value;
|
||||||
}break;
|
}break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
result = false;
|
||||||
|
}break;
|
||||||
}
|
}
|
||||||
|
|
||||||
fill_view_summary(view, vptr, cmd);
|
fill_view_summary(view, vptr, cmd);
|
||||||
|
|
|
@ -129,7 +129,6 @@ struct Editing_File_Settings{
|
||||||
// NOTE(allen): This part of the Editing_File is cleared whenever
|
// NOTE(allen): This part of the Editing_File is cleared whenever
|
||||||
// the contents of the file is set.
|
// the contents of the file is set.
|
||||||
struct Editing_File_State{
|
struct Editing_File_State{
|
||||||
i16 font_id;
|
|
||||||
Buffer_Type buffer;
|
Buffer_Type buffer;
|
||||||
|
|
||||||
Undo_Data undo;
|
Undo_Data undo;
|
||||||
|
|
|
@ -1050,11 +1050,10 @@ file_create_from_string(System_Functions *system, Models *models,
|
||||||
|
|
||||||
file_set_name(working_set, file, (char*)name);
|
file_set_name(working_set, file, (char*)name);
|
||||||
|
|
||||||
file->state.font_id = models->global_font.font_id;
|
|
||||||
|
|
||||||
file_synchronize_times(system, file, name);
|
file_synchronize_times(system, file, name);
|
||||||
|
|
||||||
Render_Font *font = get_font_info(font_set, file->state.font_id)->font;
|
i16 font_id = models->global_font.font_id;
|
||||||
|
Render_Font *font = get_font_info(font_set, font_id)->font;
|
||||||
float *advance_data = 0;
|
float *advance_data = 0;
|
||||||
if (font) advance_data = font->advance_data;
|
if (font) advance_data = font->advance_data;
|
||||||
file_measure_starts_widths(system, general, &file->state.buffer, advance_data);
|
file_measure_starts_widths(system, general, &file->state.buffer, advance_data);
|
||||||
|
@ -2124,7 +2123,8 @@ file_do_single_edit(System_Functions *system,
|
||||||
i32 new_line_count = buffer_count_newlines(&file->state.buffer, start, start+str_len);
|
i32 new_line_count = buffer_count_newlines(&file->state.buffer, start, start+str_len);
|
||||||
i32 line_shift = new_line_count - replaced_line_count;
|
i32 line_shift = new_line_count - replaced_line_count;
|
||||||
|
|
||||||
Render_Font *font = get_font_info(models->font_set, file->state.font_id)->font;
|
i16 font_id = models->global_font.font_id;
|
||||||
|
Render_Font *font = get_font_info(models->font_set, font_id)->font;
|
||||||
|
|
||||||
file_grow_starts_widths_as_needed(general, buffer, line_shift);
|
file_grow_starts_widths_as_needed(general, buffer, line_shift);
|
||||||
buffer_remeasure_starts(buffer, line_start, line_end, line_shift, shift_amount);
|
buffer_remeasure_starts(buffer, line_start, line_end, line_shift, shift_amount);
|
||||||
|
@ -2196,7 +2196,8 @@ file_do_white_batch_edit(System_Functions *system, Models *models, Editing_File
|
||||||
// NOTE(allen): meta data
|
// NOTE(allen): meta data
|
||||||
{
|
{
|
||||||
Buffer_Measure_Starts state = {};
|
Buffer_Measure_Starts state = {};
|
||||||
Render_Font *font = get_font_info(models->font_set, file->state.font_id)->font;
|
i16 font_id = models->global_font.font_id;
|
||||||
|
Render_Font *font = get_font_info(models->font_set, font_id)->font;
|
||||||
float *advance_data = 0;
|
float *advance_data = 0;
|
||||||
if (font) advance_data = font->advance_data;
|
if (font) advance_data = font->advance_data;
|
||||||
buffer_measure_starts_widths(&state, &file->state.buffer, advance_data);
|
buffer_measure_starts_widths(&state, &file->state.buffer, advance_data);
|
||||||
|
|
|
@ -682,7 +682,7 @@ buffer_measure_starts_zero_widths_(Buffer_Measure_Starts *state, Buffer_Type *bu
|
||||||
|
|
||||||
internal_4tech int
|
internal_4tech int
|
||||||
buffer_measure_starts_widths(Buffer_Measure_Starts *state, Buffer_Type *buffer, float *advance_data){
|
buffer_measure_starts_widths(Buffer_Measure_Starts *state, Buffer_Type *buffer, float *advance_data){
|
||||||
int result;
|
int result = 0;
|
||||||
|
|
||||||
if (advance_data){
|
if (advance_data){
|
||||||
result = buffer_measure_starts_widths_(state, buffer, advance_data);
|
result = buffer_measure_starts_widths_(state, buffer, advance_data);
|
||||||
|
@ -697,14 +697,11 @@ buffer_measure_starts_widths(Buffer_Measure_Starts *state, Buffer_Type *buffer,
|
||||||
internal_4tech void
|
internal_4tech void
|
||||||
buffer_remeasure_starts(Buffer_Type *buffer, int line_start, int line_end, int line_shift, int text_shift){
|
buffer_remeasure_starts(Buffer_Type *buffer, int line_start, int line_end, int line_shift, int text_shift){
|
||||||
Buffer_Stringify_Type loop;
|
Buffer_Stringify_Type loop;
|
||||||
int *starts;
|
int *starts = buffer->line_starts;
|
||||||
int line_count;
|
int line_count = buffer->line_count;
|
||||||
char *data;
|
char *data = 0;
|
||||||
int size, end;
|
int size = 0, end = 0;
|
||||||
int line_i, char_i, start;
|
int line_i = 0, char_i = 0, start = 0;
|
||||||
|
|
||||||
starts = buffer->line_starts;
|
|
||||||
line_count = buffer->line_count;
|
|
||||||
|
|
||||||
assert_4tech(0 <= line_start);
|
assert_4tech(0 <= line_start);
|
||||||
assert_4tech(line_start <= line_end);
|
assert_4tech(line_start <= line_end);
|
||||||
|
@ -760,20 +757,15 @@ internal_4tech void
|
||||||
buffer_remeasure_widths(Buffer_Type *buffer, float *advance_data,
|
buffer_remeasure_widths(Buffer_Type *buffer, float *advance_data,
|
||||||
int line_start, int line_end, int line_shift){
|
int line_start, int line_end, int line_shift){
|
||||||
Buffer_Stringify_Type loop;
|
Buffer_Stringify_Type loop;
|
||||||
int *starts;
|
int *starts = buffer->line_starts;
|
||||||
float *widths;
|
float *widths = buffer->line_widths;
|
||||||
int line_count;
|
int line_count = buffer->line_count;
|
||||||
int widths_count;
|
int widths_count = buffer->widths_count;
|
||||||
char *data;
|
char *data = 0;
|
||||||
int size, end;
|
int size = 0, end = 0;
|
||||||
int i, j;
|
int i = 0, j = 0;
|
||||||
float width;
|
float width = 0;
|
||||||
char ch;
|
char ch = 0;
|
||||||
|
|
||||||
starts = buffer->line_starts;
|
|
||||||
widths = buffer->line_widths;
|
|
||||||
line_count = buffer->line_count;
|
|
||||||
widths_count = buffer->widths_count;
|
|
||||||
|
|
||||||
assert_4tech(0 <= line_start);
|
assert_4tech(0 <= line_start);
|
||||||
assert_4tech(line_start <= line_end);
|
assert_4tech(line_start <= line_end);
|
||||||
|
@ -814,6 +806,11 @@ buffer_remeasure_widths(Buffer_Type *buffer, float *advance_data,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (j == buffer_size(buffer)){
|
||||||
|
widths[i] = width;
|
||||||
|
assert_4tech(i+1 == line_count);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
|
|
Loading…
Reference in New Issue