* fix appimage cd error and use static appimage runtime
* include `desktop-file-utils` for appimagetool
* remove mv of old `AppRun`
* revert indentation
* don't export `APPIMAGE_EXTRACT_AND_RUN`
This is needed to get the last character of the "selection".
For example:
```lua
doc:get_text(1, 1, #doc.lines, math.huge)
```
will return everything but the last newline, while
```lua
doc:get_text(1, 1, #doc.lines, math.huge, true)
```
will return the last newline too.
* improve projectsearch
- stick status to top of view
- add horizontal scrolling
- added ellipsis at the end of the text if it's too long
* Reverted removal of 0 on yield.
---------
Co-authored-by: Adam Harrison <adamdharrison@gmail.com>
* Streamlined and simplified CI, and made it use lpm to install addons.
Removed universal-dmg packager, as it is not necessary under the new workflow; a regular fat binary being packaged with the normal dmg works.
Incoprorated Guldo's suggestions.
Fixed minor issue.
Fixed slight issues.
Reverted to master.
Fixed nit.
Split up packaging steps.
Sigh,.
?
Fixed up x86 build.
Split Mac into two workers with a matrix.
Sigh.
Removed unecessary lines.
More descriptive name.
Split arch workflow for Mac.
Syntax error.
Spaced things out.
Fixed mac build.
Removed unecessary steps.
Takase's suggestions.
Removed unecessary `..`.
Modified patch to reference the new lua version (hopefully no other modifications needed).
Restored logic to create bundle.
New release workflow.
Changed to welcome plugin.
Changed build.
Added in package-portable to make this easier.
Corrected compiling arch.
Harmonized formats.
Remove package portable.
Fixed universal build.
Fix mispelling.
Sigh.
Sigh.
Sigh.
Sigh.
Sigh.
Sigh.
Sigh.
Sigh.
Sigh.
Sigh.
Sigh.
* Expanded things as per Takase's request.
* Renamed Mac to Darwin.
* Fixed missing variable.
* renderer: rewrite glyph cache
This commit splits the current GlyphSet-based system into 2 caches,
CharMap and GlyphMap, which maps codepoints -> glyph IDs and glyph IDs -> glyphs respectively.
Each GlyphMap contains a number of GlyphAtlas mapped by their width,
and each GlyphAtlas has a list of surfaces with the same width.
Surfaces within the GlyphAtlas acts like a bump allocator, but is flexible
enough to allow older GlyphAtlas surfaces to be recycled.
GlyphMetric now contains atlas_idx and surface_idx, which points to the correct surface.
Since GlyphAtlas supports rudimentary packing & allocation, we no longer render whole
GlyphSets and this speeds up rendering in most cases.
Tab width is no longer set with the hacky "modify the GlyphMetric" hack.
* renderer: set natlas to 0 after freeing
* renderer: fix printf warning
* renderer: fix memory leak
* renderer: better whitespace rendering
* renderer: fix ubsan warning when casting ints
* renderer: fix tab handling
There's a bug with inconsistent tab widths caused by fontgroups.
* renderer: fix glyphs being loaded over and over
* renderer: add glyphmap size
* renderer: store per-surface offset_y and use it to find best-fitting surface
* renderer: fix MSVC compiler error
* renderer: remove return value from ren_font_glyph
* renderer: refactor xadvance calculation
* renderer: fix double free SDL_RWops if FT_Set_Pixel_Size fail
* renderer: always try .notdef before U+25A1
* renderer: disable ren_font_dump yet again
Accidentally commited this change.
* renderer: remove unused imports
* renderer: fix double free with FT_Open_Face
* renderer: return SDL_Surface in font_find_glyph_surface
* renderer: bring back metric flags for future extension
* renderer: refactor xadvance calculation into macro
* renderer: fix comment
* renderer: store GlyphMetric directly in the surface
* renderer: remove duplicated comment
* renderer: rename font_find_glyph_surface to font_allocate_glyph_surface
* renderer: refactor glyphmetric retrieval into an inline function
* renderer: do not render glyphs with bitmap set to null
This is a weird edge case, but at least it shouldn't crash
* renderer: refactor face metric code into its own function
* renderer: actually check if glyph fits in surface
* renderer: rudimentary support for non-scalable faces
At least it won't render nothing on the screen
* renderer: check for font_surface instead of metric directly
This is safe and shorter
* renderer: fix indentation
* renderer: rename GLYPH_PER_ATLAS to GLYPHS_PER_ATLAS
* renderer: rename all GLYPH_PER_ATLAS correctly
* renderer: make utf8_to_codepoint slightly more durable
* renderer: fix compiler unsigned cast warning