Skip to content

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.

@serious-angel
Copy link

Thank you, heartfelt, for the awesome work, marvel you do, dear Developers and Artists! ✨

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