Skip to content

colorize_nicks.py 33: add many improvements, features, and fixes #574

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
May 9, 2025

Conversation

ryoskzypu
Copy link
Contributor

@ryoskzypu ryoskzypu commented May 8, 2025

Script info

  • Script name:  colorize_nicks.py
  • Version:  33
  • Requirements: 
  • Min WeeChat version: 
  • Script tags: 

Description

Changes:

  • Remove the VALID_NICK regex to not be dependent on RFC spec and change the loop to split only on spaces, so the nick regex is free to match any suffix.

  • Add nick_prefixes and nick_suffixes options to configure charset affixes.

  • Replace the default 'greedy' matching with improved 'lazy' matching, because 'greedy' matches nicks incorrectly and crashes weechat.

  • Replace hook_modifier() with hook_line() for a more granular parsing (e.g. prefix is separated from message, get filtered lines, etc).

  • Add preserving of message colors logic.

  • Add irc_only option to ignore non IRC messages (i.e. set buffer restrictions: plugin = irc, tags = irc_privmsg and irc_notice, type = channel and private).

  • Add do not colorize nicks in filtered messages, and colorize_filtered option.

  • Add colorizing of IRC prefixes and nicks on IRC private buffers.

  • Update colorized_input_cb() with the changes, and add decoding of IRC colors from input.

  • Update config_init() parsing of options.

  • Remove 'so,root' from blacklist_nicks default option. (These nicks do not make sense for defaults.)

  • Change min_nick_length default option to 1. (Single char nicks should not be excluded by default.)

  • Remove hook_modifier() that has the modifier colorize_nicks. (Is it possible to pass custom modifiers?)

  • Replace % formatting strings with f-strings, " with ', and some code to use the := operator.

  • Update identifiers, comments, and add some whitespace in code for readability.

  • Remove unused global keywords and add error handlings.

  • Remove utf-8 encoding header, add SPDX copyright + license tags, and add upstream link.

Checklist (script update)

  • Author has been contacted
  • Single commit, single file added
  • Commit message format: script_name.py X.Y: …
  • Script version and Changelog have been updated
  • For Python script: works with Python 3 (Python 2 support is optional)
  • Score 100 / 100 displayed by weechat-script-lint

@flashcode flashcode added the feature New feature request label May 8, 2025
@weechatter
Copy link
Contributor

works for me

@flashcode
Copy link
Member

Hi @ryoskzypu,

Thanks for all these improvements.

To trace the history, could you please add all new features and fixes into the body of the
commit message (using (closes #1234) to close bugs).

And then you can remove (see Changes in the PR #574 for details) fro the script comment, as it's better to have detail of changes in git itself.

Thanks!

@flashcode flashcode self-assigned this May 8, 2025
@flashcode flashcode added the waiting info Waiting for info from author of issue label May 8, 2025
Changes:

- Remove the VALID_NICK regex to not be dependent on RFC spec and change
  the loop to split only on spaces, so the nick regex is free to match
  any suffix.

- Add nick_prefixes and nick_suffixes options to configure charset
  affixes.

- Replace the default 'greedy' matching with improved 'lazy' matching,
  because 'greedy' matches nicks incorrectly and crashes weechat. Thus
  remove ignore_nicks_in_urls option, since 'lazy' matching does not
  match nicks in substrings.

  closes weechat#133 and weechat#197.

  Rationale:

  - The greedy matching code recolors duplicated strings because of the
    way replace() works, so it crashes weechat on multiple duplicated
    nicks.

  - weechat#259 does not really prevent that, since it can still be reproduced
    by mentioning a short nick e.g. F1, repeatedly in a message.

  - It can be fixed by iterating on unique words, but it still colorizes
    nicks in substrings if a nick is mentioned before (e.g. alice
    https://www.alice.com), hence the option ignore_nicks_in_urls fails.

- Replace hook_modifier() with hook_line() for a more granular parsing
  (e.g. prefix is separated from message, get filtered lines, etc).

  closes weechat#70, closes weechat#135.

- Add preserving of message colors logic. closes weechat#49, closes weechat#175.

- Add irc_only option to ignore non IRC messages (i.e. set buffer
  restrictions: plugin = irc, tags = irc_privmsg and irc_notice,
  type = channel and private).

- Add do not colorize nicks in filtered messages, and colorize_filtered
  option.

- Add colorizing of IRC prefixes and nicks on IRC private buffers.

- Update colorized_input_cb()  with the changes, and add decoding of IRC
  colors from input.

- Update config_init() parsing of options.

- Remove 'so,root' from blacklist_nicks default option. (These nicks do
  not make sense for defaults.)

- Change min_nick_length default option to 1. (Single char nicks should
  not be excluded by default.)

- Remove hook_modifier() that has the modifier colorize_nicks. (Is it
  possible to pass custom modifiers?)

- Replace % formatting strings with f-strings, " with ', and some code
  to use the := operator.

- Update identifiers, comments, and add some whitespace in code for
  readability.

- Remove unused global keywords and add error handlings.

- Remove utf-8 encoding header, add SPDX copyright + license tags, and
  add upstream link.
@ryoskzypu
Copy link
Contributor Author

ryoskzypu commented May 8, 2025

@weechatter: Thanks for testing.

@flashcode: Done! Is it okay? I tried my best to fit the changes in commit for git log.

Thanks for all these improvements.

You're welcome and thank you for this great piece of software (WeeChat ofc). ;-)

@flashcode flashcode removed the waiting info Waiting for info from author of issue label May 8, 2025
@flashcode flashcode merged commit b0c60c1 into weechat:main May 9, 2025
2 checks passed
@flashcode
Copy link
Member

Thanks, merged.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment