{"id":20874672,"url":"https://github.com/neomutt/test-token","last_synced_at":"2026-04-26T01:32:15.922Z","repository":{"id":72106985,"uuid":"179904719","full_name":"neomutt/test-token","owner":"neomutt","description":"Test to split up mutt_extract_token()","archived":false,"fork":false,"pushed_at":"2022-06-12T19:07:27.000Z","size":11,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-12-31T17:45:22.093Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/neomutt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-04-07T01:23:30.000Z","updated_at":"2023-02-27T23:05:40.000Z","dependencies_parsed_at":"2023-03-11T11:52:26.091Z","dependency_job_id":null,"html_url":"https://github.com/neomutt/test-token","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/neomutt/test-token","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neomutt%2Ftest-token","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neomutt%2Ftest-token/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neomutt%2Ftest-token/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neomutt%2Ftest-token/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/neomutt","download_url":"https://codeload.github.com/neomutt/test-token/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neomutt%2Ftest-token/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32283294,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-25T18:29:39.964Z","status":"ssl_error","status_checked_at":"2026-04-25T18:29:32.149Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-18T06:35:39.954Z","updated_at":"2026-04-26T01:32:15.895Z","avatar_url":"https://github.com/neomutt.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Test code to split up mutt_extract_token()\n\n## Build\n\n- It expects NeoMutt to be built in `../neo`\n  - `make`\n  - `make test`\n\n## Notes\n\n- Eliminate dependence on MuttWindow\n  1. Duplicate environment\n  2. Set `COLUMNS`\n  3. Pass to exec\n\nWon't work.  We'd need to pass the dupe environment to the token function.\nexec() needs to happen outside of token function.\n\n- Move `filter.c` to libmutt?\n  - Factor out environment\n  - Factor out `EXECSHELL`\n  - Do we need both `fd` and `FILE` versions?\n\n- Eliminate myvar?\n  - Fold myvar support into libconfig?\n  - Handle is still held by NeoMutt\n\n## Option Behaviour and Callers\n\n- **`MUTT_TOKEN_BACKTICK_VARS`** - Expand variables within backticks\n  - Contents are executed in a shell (`EXECSHELL`)\n  - `parse_set()`\n\n- **`MUTT_TOKEN_COMMENT`** - Don't reap comments\n  - `pattern.eat_regex()`\n  - `pattern.eat_query()`\n  - `pattern.eat_date()`\n\n- **`MUTT_TOKEN_CONDENSE`** - `^(char)` to control chars (macros)\n  - `mutt_parse_push()`\n  - `mutt_parse_macro()`\n\nI think this should be happening after token, in the caller.\n\n- **`MUTT_TOKEN_EQUAL`** - Treat '=' as a special\n  - `parse_set()`\n  - `parse_setenv()`\n\n- **`MUTT_TOKEN_NOSHELL`** - Don't expand environment variables\n  - Recursive call to `mutt_extract_token()`\n\n- **`MUTT_TOKEN_PATTERN`** - `~%=!|` are terms (for patterns)\n  - `pattern.eat_regex()`\n  - `pattern.eat_query()`\n  - `pattern.eat_date()`\n\nThese are all non-whitespace.  Do we need special cases for them?\n\n- **`MUTT_TOKEN_QUESTION`** - Treat `?` as a special\n  - `parse_set()`\n\nFor ':set ?var' or ':set var?'\nCan't this be dealt with by the caller?\n\n- **`MUTT_TOKEN_QUOTE`** - Don't interpret quotes\n  - `parse_alias()`\n  - `parse_my_hdr()`\n\n- **`MUTT_TOKEN_SEMICOLON`** - Don't treat `;` as special\n  - `parse_alias()`\n\n- **`MUTT_TOKEN_SPACE`** - Don't treat whitespace as a term\n  - `parse_alias()`\n  - `parse_ifdef()`\n  - `parse_my_hdr()`\n  - `mutt_parse_hook()`\n\n- **`MUTT_TOKEN_NO_FLAGS`** - Default behaviour\n  - `do_uncolor()`\n  - `icmd_bind()`\n  - `mutt_expando_format()`\n  - `mutt_lua_source_file()`\n  - `mutt_parse_bind()`\n  - `mutt_parse_exec()`\n  - `mutt_parse_hook()`\n  - `mutt_parse_icommand()`\n  - `mutt_parse_rc_line()`\n  - `mutt_parse_score()`\n  - `mutt_parse_unbind()`\n  - `mutt_parse_unhook()`\n  - `mutt_parse_unscore()`\n  - `parse_alias()`\n  - `parse_alternates()`\n  - `parse_attachments()`\n  - `parse_attach_list()`\n  - `parse_attr_spec()`\n  - `parse_color()`\n  - `parse_color_pair()`\n  - `parse_echo()`\n  - `parse_group()`\n  - `parse_grouplist()`\n  - `parse_ifdef()`\n  - `parse_ignore()`\n  - `parse_keymap()`\n  - `parse_lists()`\n  - `parse_mailboxes()`\n  - `parse_object()`\n  - `parse_path_list()`\n  - `parse_path_unlist()`\n  - `parse_replace_list()`\n  - `parse_setenv()`\n  - `parse_source()`\n  - `parse_spam_list()`\n  - `parse_stailq()`\n  - `parse_subscribe()`\n  - `parse_subscribe_to()`\n  - `parse_tag_formats()`\n  - `parse_tag_transforms()`\n  - `parse_unalias()`\n  - `parse_unalternates()`\n  - `parse_unattachments()`\n  - `parse_unattach_list()`\n  - `parse_uncolor()`\n  - `parse_unignore()`\n  - `parse_unlists()`\n  - `parse_unmailboxes()`\n  - `parse_unmy_hdr()`\n  - `parse_unreplace_list()`\n  - `parse_unstailq()`\n  - `parse_unsubscribe()`\n  - `parse_unsubscribe_from()`\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneomutt%2Ftest-token","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fneomutt%2Ftest-token","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneomutt%2Ftest-token/lists"}