File src/hstr.c changed (mode: 100644) (index a1cc66a..c012729) |
... |
... |
void hstr_init() |
296 |
296 |
hstr->interactive=true; |
hstr->interactive=true; |
297 |
297 |
hstr->unique=true; |
hstr->unique=true; |
298 |
298 |
hstr->showHelp = true; |
hstr->showHelp = true; |
|
299 |
|
hstr->promptBottom = false; |
299 |
300 |
|
|
300 |
301 |
hstr->theme=HH_THEME_MONO; |
hstr->theme=HH_THEME_MONO; |
301 |
302 |
hstr->bigKeys=RADIX_BIG_KEYS_SKIP; |
hstr->bigKeys=RADIX_BIG_KEYS_SKIP; |
|
... |
... |
unsigned recalculate_max_history_items() |
328 |
329 |
|
|
329 |
330 |
void hstr_get_env_configuration(Hstr *hstr) |
void hstr_get_env_configuration(Hstr *hstr) |
330 |
331 |
{ |
{ |
331 |
|
char *hstr_config=getenv(HH_ENV_VAR_CONFIG); |
|
332 |
|
if(hstr_config && strlen(hstr_config)>0) { |
|
333 |
|
if(strstr(hstr_config,HH_CONFIG_THEME_MONOCHROMATIC)) { |
|
|
332 |
|
const char *hstr_config=getenv(HH_ENV_VAR_CONFIG); |
|
333 |
|
if (!hstr_config || !strlen(hstr_config)) { |
|
334 |
|
return; |
|
335 |
|
} |
|
336 |
|
size_t const len = strlen(hstr_config)+1; |
|
337 |
|
char* config_items = malloc(len); |
|
338 |
|
memcpy(config_items, hstr_config, len); |
|
339 |
|
char* saveptr = config_items; |
|
340 |
|
char* item; |
|
341 |
|
while ((item = strtok_r(saveptr, ",", &saveptr)) != NULL) { |
|
342 |
|
if(strcmp(item,HH_CONFIG_THEME_MONOCHROMATIC)==0) { |
334 |
343 |
hstr->theme=HH_THEME_MONO; |
hstr->theme=HH_THEME_MONO; |
335 |
|
} else { |
|
336 |
|
if(strstr(hstr_config,HH_CONFIG_THEME_HICOLOR)) { |
|
337 |
|
hstr->theme=HH_THEME_DARK; |
|
338 |
|
} |
|
339 |
|
} |
|
340 |
|
if(strstr(hstr_config,HH_CONFIG_CASE)) { |
|
|
344 |
|
} else if(strcmp(item,HH_CONFIG_THEME_HICOLOR)==0) { |
|
345 |
|
hstr->theme=HH_THEME_DARK; |
|
346 |
|
} else if(strcmp(item,HH_CONFIG_CASE)==0) { |
341 |
347 |
hstr->caseSensitive=HH_CASE_SENSITIVE; |
hstr->caseSensitive=HH_CASE_SENSITIVE; |
342 |
|
} |
|
343 |
|
if(strstr(hstr_config,HH_CONFIG_REGEXP)) { |
|
|
348 |
|
} else if(strcmp(item,HH_CONFIG_REGEXP)==0) { |
344 |
349 |
hstr->historyMatch=HH_MATCH_REGEXP; |
hstr->historyMatch=HH_MATCH_REGEXP; |
345 |
|
} else { |
|
346 |
|
if(strstr(hstr_config,HH_CONFIG_SUBSTRING)) { |
|
347 |
|
hstr->historyMatch=HH_MATCH_SUBSTRING; |
|
348 |
|
} else { |
|
349 |
|
if(strstr(hstr_config, HH_CONFIG_KEYWORDS)) { |
|
350 |
|
hstr->historyMatch=HH_MATCH_KEYWORDS; |
|
351 |
|
} |
|
352 |
|
} |
|
353 |
|
} |
|
354 |
|
if(strstr(hstr_config,HH_CONFIG_SORTING)) { |
|
|
350 |
|
} else if(strcmp(item,HH_CONFIG_SUBSTRING)==0) { |
|
351 |
|
hstr->historyMatch=HH_MATCH_SUBSTRING; |
|
352 |
|
} else if(strcmp(item, HH_CONFIG_KEYWORDS)==0) { |
|
353 |
|
hstr->historyMatch=HH_MATCH_KEYWORDS; |
|
354 |
|
} else if(strcmp(item,HH_CONFIG_SORTING)==0) { |
355 |
355 |
hstr->historyView=HH_VIEW_HISTORY; |
hstr->historyView=HH_VIEW_HISTORY; |
356 |
|
} else { |
|
357 |
|
if(strstr(hstr_config,HH_CONFIG_FAVORITES)) { |
|
358 |
|
hstr->historyView=HH_VIEW_FAVORITES; |
|
359 |
|
} |
|
360 |
|
} |
|
361 |
|
if(strstr(hstr_config,HH_CONFIG_BIG_KEYS_EXIT)) { |
|
|
356 |
|
} else if(strcmp(item,HH_CONFIG_FAVORITES)==0) { |
|
357 |
|
hstr->historyView=HH_VIEW_FAVORITES; |
|
358 |
|
} else if(strcmp(item,HH_CONFIG_BIG_KEYS_EXIT)==0) { |
362 |
359 |
hstr->bigKeys=RADIX_BIG_KEYS_EXIT; |
hstr->bigKeys=RADIX_BIG_KEYS_EXIT; |
363 |
|
} else { |
|
364 |
|
if(strstr(hstr_config,HH_CONFIG_BIG_KEYS_FLOOR)) { |
|
365 |
|
hstr->bigKeys=RADIX_BIG_KEYS_FLOOR; |
|
366 |
|
} else { |
|
367 |
|
hstr->bigKeys=RADIX_BIG_KEYS_SKIP; |
|
368 |
|
} |
|
369 |
|
} |
|
370 |
|
if(strstr(hstr_config,HH_CONFIG_BLACKLIST)) { |
|
|
360 |
|
} else if(strcmp(item,HH_CONFIG_BIG_KEYS_FLOOR)==0) { |
|
361 |
|
hstr->bigKeys=RADIX_BIG_KEYS_FLOOR; |
|
362 |
|
} else if(strcmp(item,HH_CONFIG_BLACKLIST)==0) { |
371 |
363 |
hstr->blacklist.useFile=true; |
hstr->blacklist.useFile=true; |
372 |
|
} |
|
373 |
|
|
|
374 |
|
if(strstr(hstr_config,HH_CONFIG_DEBUG)) { |
|
|
364 |
|
} else if(strcmp(item,HH_CONFIG_DEBUG)==0) { |
375 |
365 |
hstr->debugLevel=HH_DEBUG_LEVEL_DEBUG; |
hstr->debugLevel=HH_DEBUG_LEVEL_DEBUG; |
376 |
|
} else { |
|
377 |
|
if(strstr(hstr_config,HH_CONFIG_WARN)) { |
|
378 |
|
hstr->debugLevel=HH_DEBUG_LEVEL_WARN; |
|
379 |
|
} |
|
380 |
|
} |
|
381 |
|
|
|
382 |
|
if(strstr(hstr_config,HH_CONFIG_DUPLICATES)) { |
|
|
366 |
|
} else if(strcmp(item,HH_CONFIG_WARN)==0) { |
|
367 |
|
hstr->debugLevel=HH_DEBUG_LEVEL_WARN; |
|
368 |
|
} else if(strcmp(item,HH_CONFIG_DUPLICATES)==0) { |
383 |
369 |
hstr->unique=false; |
hstr->unique=false; |
384 |
|
} |
|
385 |
|
|
|
386 |
|
if(strstr(hstr_config,HH_CONFIG_PROMPT_BOTTOM)) { |
|
|
370 |
|
} else if(strcmp(item,HH_CONFIG_PROMPT_BOTTOM)==0) { |
387 |
371 |
hstr->promptBottom = true; |
hstr->promptBottom = true; |
388 |
|
} else { |
|
389 |
|
hstr->promptBottom = false; |
|
390 |
|
} |
|
391 |
|
|
|
392 |
|
if(strstr(hstr_config,HH_CONFIG_MINIMAL)) { |
|
|
372 |
|
} else if(strcmp(item,HH_CONFIG_MINIMAL)==0) { |
393 |
373 |
hstr->showHelp=false; |
hstr->showHelp=false; |
|
374 |
|
} else { |
|
375 |
|
fprintf(stderr, "WARNING: unknown item in %s: %s\n", HH_ENV_VAR_CONFIG, item); |
394 |
376 |
} |
} |
395 |
|
|
|
396 |
|
recalculate_max_history_items(); |
|
397 |
377 |
} |
} |
|
378 |
|
free(config_items); |
398 |
379 |
} |
} |
399 |
380 |
|
|
400 |
381 |
int print_prompt() |
int print_prompt() |