On 12.11.2018 22:58, Barry Warsaw wrote:
On Nov 12, 2018, at 03:15, Andreas Röhler <andreas.roeh...@online.de> wrote:

as decorators are part of function definitions, consider to drop all special 
handling. Beginning of def-or-class would reach the decorator - same with mark, 
copying and send.

Is it possible to use C-u to choose whether to go to the first decorator or the 
function definition?

Sure. Probably a defcustom py-include-decorators-p might be useful too.


Remember, you can have a bunch of function decorators, not just one. So going to the first decorator could put you way off from where you expect.

E.g. if you use click, from Mailman 3:

@click.command(
     cls=I18nCommand,
     context_settings=dict(help_option_names=['-h', '--help']),
     help=_("""\
     Master subprocess watcher.

     Start and watch the configured runners, ensuring that they stay alive and
     kicking.  Each runner is forked and exec'd in turn, with the master waiting
     on their process ids.  When it detects a child runner has exited, it may
     restart it.

     The runners respond to SIGINT, SIGTERM, SIGUSR1 and SIGHUP.  SIGINT,
     SIGTERM and SIGUSR1 all cause a runner to exit cleanly.  The master will
     restart runners that have exited due to a SIGUSR1 or some kind of other
     exit condition (say because of an uncaught exception).  SIGHUP causes the
     master and the runners to close their log files, and reopen then upon the
     next printed message.

     The master also responds to SIGINT, SIGTERM, SIGUSR1 and SIGHUP, which it
     simply passes on to the runners.  Note that the master will close and
     reopen its own log files on receipt of a SIGHUP.  The master also leaves
     its own process id in the file specified in the configuration file but you
     normally don't need to use this PID directly."""))
@click.option(
     '-C', '--config', 'config_file',
     envvar='MAILMAN_CONFIG_FILE',
     type=click.Path(exists=True, dir_okay=False, resolve_path=True),
     help=_("""\
     Configuration file to use.  If not given, the environment variable
     MAILMAN_CONFIG_FILE is consulted and used if set.  If neither are given, a
     default configuration file is loaded."""))
@click.option(
     '--no-restart', '-n', 'restartable',
     is_flag=True, default=True,
     help=_("""\
     Don't restart the runners when they exit because of an error or a SIGUSR1.
     Use this only for debugging."""))
@click.option(
     '--force', '-f',
     is_flag=True, default=False,
     help=_("""\
     If the master watcher finds an existing master lock, it will normally exit
     with an error message.  With this option,the master will perform an extra
     level of checking.  If a process matching the host/pid described in the
     lock file is running, the master will still exit, requiring you to manually
     clean up the lock.  But if no matching process is found, the master will
     remove the apparently stale lock and make another attempt to claim the
     master lock."""))
@click.option(
     '--runners', '-r',
     metavar='runner[:slice:range]',
     callback=validate_runner_spec, default=None,
     multiple=True,
     help=_("""\
     Override the default set of runners that the master will invoke, which is
     typically defined in the configuration file.  Multiple -r options may be
     given.  The values for -r are passed straight through to bin/runner."""))
@click.option(
     '-v', '--verbose',
     is_flag=True, default=False,
     help=_('Display more debugging information to the log file.'))
@click.version_option(MAILMAN_VERSION_FULL)
@public
def main(config_file, restartable, force, runners, verbose):
     # ….

Cheers,
=Barry


Thanks for the example,

Cheers,
Andreas
_______________________________________________
Python-mode mailing list
Python-mode@python.org
https://mail.python.org/mailman/listinfo/python-mode

Reply via email to