From cc82403be4e51938065ebdb9018568d909d35032 Mon Sep 17 00:00:00 2001 From: Arun Prakash Jana Date: Sun, 16 Aug 2020 16:51:55 +0530 Subject: [PATCH] More icon extns, reserve number entries --- src/icons.h | 30 ++++++++++++++++++------------ src/nnn.c | 44 +++++++++++++++++--------------------------- 2 files changed, 35 insertions(+), 39 deletions(-) diff --git a/src/icons.h b/src/icons.h index 97a624d9..c3e64cc4 100644 --- a/src/icons.h +++ b/src/icons.h @@ -37,16 +37,20 @@ static const struct icon_pair exec_icon = {"", FA_TERMINAL, 0}; /* All entries are case-insensitive */ static const struct icon_pair icons_name[] = { - {".git", FA_GITHUB_SQUARE, 0}, - {"Desktop", FA_HOME, 0}, - {"Documents", FA_LIST_ALT, 0}, - {"Downloads", FA_DOWNLOAD, 0}, - {"Music", FA_MUSIC, 0}, - {"node_modules", MFIZZ_NPM, 0}, - {"Pictures", FA_IMAGE, 0}, - {"Public", FA_INBOX, 0}, - {"Templates", FA_COG, 0}, - {"Videos", FA_FILM, 0}, + {".git", FA_GITHUB_SQUARE, 0}, + {"Desktop", FA_HOME, 0}, + {"Documents", FA_LIST_ALT, 0}, + {"Downloads", FA_DOWNLOAD, 0}, + {"Music", FA_MUSIC, 0}, + {"node_modules", MFIZZ_NPM, 0}, + {"Pictures", FA_IMAGE, 0}, + {"Public", FA_INBOX, 0}, + {"Templates", FA_COG, 0}, + {"Videos", FA_FILM, 0}, + {"CHANGELOG", MD_CHANGE_HISTORY, 0}, + {"configure", FILE_CONFIG, 0}, + {"License", FA_COPYRIGHT, 0}, + {"Makefile", FILE_CMAKE, 0}, }; /* @@ -57,6 +61,7 @@ static const struct icon_pair icons_name[] = { static const struct icon_pair icons_ext[] = { /* Numbers */ + {"1", FILE_MANPAGE, 0}, {"7z", FA_FILE_ARCHIVE_O, ARCHIVE_COLOR}, /* A */ @@ -158,8 +163,9 @@ static const struct icon_pair icons_ext[] = { /* M */ {"m4a", FA_FILE_AUDIO_O, AUDIO_COLOR}, {"m4v", FA_FILE_MOVIE_O, VIDEO_COLOR}, - {"markdown", OCT_MARKDOWN, 0}, - {"md", OCT_MARKDOWN, 0}, + {"markdown", DEV_MARKDOWN, 0}, + {"md", DEV_MARKDOWN, 0}, + {"mk", FILE_CMAKE, 0}, {"mkv", FA_FILE_MOVIE_O, VIDEO_COLOR}, {"mov", FA_FILE_MOVIE_O, VIDEO_COLOR}, {"mp3", FA_FILE_AUDIO_O, AUDIO_COLOR}, diff --git a/src/nnn.c b/src/nnn.c index f9f56f64..a46c5339 100644 --- a/src/nnn.c +++ b/src/nnn.c @@ -687,7 +687,7 @@ static const char * const patterns[] = { #ifdef ICONS /* NUMBERS, A-Z, OTHER = 28. */ -static ushort icon_positions[28]; +static ushort icon_positions[37]; #endif static char gcolors[] = "c1e2272e006033f7c6d6abc4"; @@ -1729,36 +1729,26 @@ static bool initcurses(void *oldmask) if (!g_state.oldcolor) { uchar icolors[256] = {0}; char c; - bool found = TRUE; memset(icon_positions, 0x7f, sizeof(icon_positions)); - if (icons_ext[0].match[0] >= '0' && icons_ext[0].match[0] <= '9') { - icon_positions[0] = 0; - if (icons_ext[0].color && !icolors[icons_ext[0].color]) { - init_pair(C_UND + 1 + icons_ext[0].color, icons_ext[0].color, -1); - icolors[icons_ext[0].color] = 1; - } - } - for (uint i = 0; i < sizeof(icons_ext)/sizeof(struct icon_pair); ++i) { c = TOUPPER(icons_ext[i].match[0]); if (c >= 'A' && c <= 'Z') { - if (icon_positions[c - 'A' + 1] == 0x7f7f) - icon_positions[c - 'A' + 1] = i; - } else if (!(c >= '0' && c <= '9')) { - if (icon_positions[27] == 0x7f7f) - icon_positions[27] = i; - } else - found = FALSE; + if (icon_positions[c - 'A' + 10] == 0x7f7f) + icon_positions[c - 'A' + 10] = i; + } else if (c >= '0' && c <= '9') { + if (icon_positions[c - '0'] == 0x7f7f) + icon_positions[c - '0'] = i; + } else { + if (icon_positions[36] == 0x7f7f) + icon_positions[36] = i; + } - if (found) { - if (icons_ext[i].color && !icolors[icons_ext[i].color]) { - init_pair(C_UND + 1 + icons_ext[i].color, icons_ext[i].color, -1); - icolors[icons_ext[i].color] = 1; - } - } else - found = TRUE; + if (icons_ext[i].color && !icolors[icons_ext[i].color]) { + init_pair(C_UND + 1 + icons_ext[i].color, icons_ext[i].color, -1); + icolors[icons_ext[i].color] = 1; + } } } #endif @@ -3499,11 +3489,11 @@ static const struct icon_pair * get_icon(const struct entry *ent){ ++tmp; if (*tmp >= '0' && *tmp <= '9') - i = 0; /* NUMBER */ + i = *tmp - '0'; /* NUMBER */ else if (TOUPPER(*tmp) >= 'A' && TOUPPER(*tmp) <= 'Z') - i = TOUPPER(*tmp) - 'A' + 1; /* LETTER A-Z */ + i = TOUPPER(*tmp) - 'A' + 10; /* LETTER A-Z */ else - i = 27; /* OTHER */ + i = 36; /* OTHER */ for (j = icon_positions[i]; j < sizeof(icons_ext)/sizeof(struct icon_pair) && icons_ext[j].match[0] == icons_ext[icon_positions[i]].match[0]; ++j)