mirror of
https://github.com/mintycube/dmenu.git
synced 2024-10-22 14:05:48 +02:00
e74a659468
Follow-up on pull request #16 this change refactors and combines the highlight and fuzzy highlight patches into one highlight function. Overall it does not make any sense using: - fuzzy highlighting when exact matching is used or - exact highlighting when fuzzy matching is used As such it makes sense to combine the two such that: - exact highlighting is used when exact matching is used and - fuzzy highlighting is used when fuzzy matching is used The FUZZYHIGHLIGHT_PATCH toggle has been removed in favour of HIGHLIGHT_PATCH. The FUZZYMATCH_PATCH toggle controls whether fuzzy matching is enabled. Enable both FUZZYMATCH_PATCH and HIGHLIGHT_PATCH to enable fuzzy highlighting. Additionally the fuzzy highlight patch only supported single-byte characters and would break when encountering multi-byte UTF-8 characters. This was reported ref. #24. This refactoring includes a change to work out the UTF-8 character length for a given character rather than assuming that every character uses one byte.
91 lines
3.9 KiB
C
91 lines
3.9 KiB
C
#include <X11/Xresource.h>
|
|
|
|
void
|
|
readxresources(void)
|
|
{
|
|
XrmInitialize();
|
|
|
|
char* xrm;
|
|
if ((xrm = XResourceManagerString(drw->dpy))) {
|
|
char *type;
|
|
XrmDatabase xdb = XrmGetStringDatabase(xrm);
|
|
XrmValue xval;
|
|
|
|
if (XrmGetResource(xdb, "dmenu.font", "*", &type, &xval))
|
|
#if PANGO_PATCH
|
|
strcpy(font, xval.addr);
|
|
#else
|
|
fonts[0] = strdup(xval.addr);
|
|
#endif // PANGO_PATCH
|
|
#if !PANGO_PATCH
|
|
else
|
|
fonts[0] = strdup(fonts[0]);
|
|
#endif // PANGO_PATCH
|
|
if (XrmGetResource(xdb, "dmenu.background", "*", &type, &xval))
|
|
colors[SchemeNorm][ColBg] = strdup(xval.addr);
|
|
if (XrmGetResource(xdb, "dmenu.foreground", "*", &type, &xval))
|
|
colors[SchemeNorm][ColFg] = strdup(xval.addr);
|
|
if (XrmGetResource(xdb, "dmenu.selbackground", "*", &type, &xval))
|
|
colors[SchemeSel][ColBg] = strdup(xval.addr);
|
|
if (XrmGetResource(xdb, "dmenu.selforeground", "*", &type, &xval))
|
|
colors[SchemeSel][ColFg] = strdup(xval.addr);
|
|
if (XrmGetResource(xdb, "dmenu.outbackground", "*", &type, &xval))
|
|
colors[SchemeOut][ColBg] = strdup(xval.addr);
|
|
if (XrmGetResource(xdb, "dmenu.outforeground", "*", &type, &xval))
|
|
colors[SchemeOut][ColFg] = strdup(xval.addr);
|
|
#if MORECOLOR_PATCH
|
|
if (XrmGetResource(xdb, "dmenu.midbackground", "*", &type, &xval))
|
|
colors[SchemeMid][ColBg] = strdup(xval.addr);
|
|
if (XrmGetResource(xdb, "dmenu.midforeground", "*", &type, &xval))
|
|
colors[SchemeMid][ColFg] = strdup(xval.addr);
|
|
#endif // MORECOLOR_PATCH
|
|
#if BORDER_PATCH
|
|
if (XrmGetResource(xdb, "dmenu.bordercolor", "*", &type, &xval))
|
|
colors[SchemeBorder][ColBg] = strdup(xval.addr);
|
|
#endif // BORDER_PATCH
|
|
#if HIGHLIGHT_PATCH
|
|
if (XrmGetResource(xdb, "dmenu.selhlbackground", "*", &type, &xval))
|
|
colors[SchemeSelHighlight][ColBg] = strdup(xval.addr);
|
|
if (XrmGetResource(xdb, "dmenu.selhlforeground", "*", &type, &xval))
|
|
colors[SchemeSelHighlight][ColFg] = strdup(xval.addr);
|
|
if (XrmGetResource(xdb, "dmenu.hlbackground", "*", &type, &xval))
|
|
colors[SchemeNormHighlight][ColBg] = strdup(xval.addr);
|
|
if (XrmGetResource(xdb, "dmenu.hlforeground", "*", &type, &xval))
|
|
colors[SchemeNormHighlight][ColFg] = strdup(xval.addr);
|
|
#endif // HIGHLIGHT_PATCH
|
|
#if HIGHPRIORITY_PATCH
|
|
if (XrmGetResource(xdb, "dmenu.hpbackground", "*", &type, &xval))
|
|
colors[SchemeHp][ColBg] = strdup(xval.addr);
|
|
if (XrmGetResource(xdb, "dmenu.hpforeground", "*", &type, &xval))
|
|
colors[SchemeHp][ColFg] = strdup(xval.addr);
|
|
#endif // HIGHPRIORITY_PATCH
|
|
#if EMOJI_HIGHLIGHT_PATCH
|
|
if (XrmGetResource(xdb, "dmenu.hoverbackground", "*", &type, &xval))
|
|
colors[SchemeHover][ColBg] = strdup(xval.addr);
|
|
if (XrmGetResource(xdb, "dmenu.hoverforeground", "*", &type, &xval))
|
|
colors[SchemeHover][ColFg] = strdup(xval.addr);
|
|
if (XrmGetResource(xdb, "dmenu.greenbackground", "*", &type, &xval))
|
|
colors[SchemeGreen][ColBg] = strdup(xval.addr);
|
|
if (XrmGetResource(xdb, "dmenu.greenforeground", "*", &type, &xval))
|
|
colors[SchemeGreen][ColFg] = strdup(xval.addr);
|
|
if (XrmGetResource(xdb, "dmenu.yellowbackground", "*", &type, &xval))
|
|
colors[SchemeYellow][ColBg] = strdup(xval.addr);
|
|
if (XrmGetResource(xdb, "dmenu.yellowforeground", "*", &type, &xval))
|
|
colors[SchemeYellow][ColFg] = strdup(xval.addr);
|
|
if (XrmGetResource(xdb, "dmenu.bluebackground", "*", &type, &xval))
|
|
colors[SchemeBlue][ColBg] = strdup(xval.addr);
|
|
if (XrmGetResource(xdb, "dmenu.blueforeground", "*", &type, &xval))
|
|
colors[SchemeBlue][ColFg] = strdup(xval.addr);
|
|
if (XrmGetResource(xdb, "dmenu.purplebackground", "*", &type, &xval))
|
|
colors[SchemePurple][ColBg] = strdup(xval.addr);
|
|
if (XrmGetResource(xdb, "dmenu.purpleforeground", "*", &type, &xval))
|
|
colors[SchemePurple][ColFg] = strdup(xval.addr);
|
|
if (XrmGetResource(xdb, "dmenu.redbackground", "*", &type, &xval))
|
|
colors[SchemeRed][ColBg] = strdup(xval.addr);
|
|
if (XrmGetResource(xdb, "dmenu.redforeground", "*", &type, &xval))
|
|
colors[SchemeRed][ColFg] = strdup(xval.addr);
|
|
#endif // EMOJI_HIGHLIGHT_PATCH
|
|
XrmDestroyDatabase(xdb);
|
|
}
|
|
}
|