* meson: install plugins with lpm
* meson: add cachedir as output
* build.sh: fix bash syntax error
* build.sh: only copy datadir when PGO is enabled
* build.sh: properly install files with meson install
* build.sh: install macOS bundle files with .app suffix
* ci: copy bundle and portable files correctly
* package-dmg: remove extraneous steps
* ci: fix wrong bundle path
* build.sh: force reconfigure bundle=false if bundle is not explicitly given
* build.sh: move wrong bundle=true assignment to the right place
* ci: remove -a flag from cp command
* ci: use xargs and find -print0 to omit spaces in find output
* ci: specify correct path to Info.plist
* ci: correctly run dmgbuild
* dmgbuild: get application path from command line
* ci: organize dmgbuild arguments
* ci: properly escape arguments
* ci: finally correctly specify yaml string
* ci: don't copy Info.plist again
* build.sh: don't install any plugins if -A is not specified
* build.sh: use the latest release from github
* ci,scripts: remove unused lua patching code
* ci: remove old continuous release binaries
* ci: generate release notes when releasing with tags
* ci: remove the unicode patch flag
* ci: add content: write permission to GH_TOKEN
* ci: use ncipollo/release-action@v1
* ci: update existing releases
* ci: actually set removeArtifacts to true
* ci: do not rebuild for both bundle and portable
We now allow using meson setup --reconfigure, which will preserve the build cache, and changes nothing but the installation path
* build.sh: fix wrong conditional
* ci: fix tar command output
* ci: fix tar command extracting to wrong directory
* ci: add merge-multiple: true to properly lay out the artifacts
* ci: only upload the correct files
* 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