Skip to content

Instantly share code, notes, and snippets.

@michaelmhoffman
Last active August 25, 2020 14:47

Revisions

  1. michaelmhoffman revised this gist Apr 29, 2020. No changes.
  2. michaelmhoffman created this gist Apr 29, 2020.
    31 changes: 31 additions & 0 deletions auto-insert-python.el
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,31 @@
    (defun new-copyright ()
    "Generate new copyright string."
    (format-time-string "Copyright %Y Michael M. Hoffman <[email protected]>"))

    (define-auto-insert 'python-mode
    `(
    "Description: "
    "#!/usr/bin/env python3.6" \n
    "\"\"\"" (setq basename (buffer-file-basename)) ": " str \n
    "\"\"\"" \n \n
    "__version__ = \"0.1\"" \n \n
    "# " (new-copyright) \n \n
    "from argparse import Namespace" \n
    "from os import EX_OK" \n
    "import sys" \n
    "from typing import List, Optional" \n \n \n
    "def " (setq namebase (file-name-sans-extension basename)) "(args: Namespace) -> int:\n"
    " return EX_OK\n\n\n"
    "def parse_args(args: List[str]) -> Namespace:\n"
    " from argparse import ArgumentDefaultsHelpFormatter, ArgumentParser\n\n"
    " description = __doc__.splitlines()[0].partition(\": \")[2]\n"
    " parser = ArgumentParser(description=description,\n"
    " formatter_class=ArgumentDefaultsHelpFormatter)\n\n"
    " version = f\"%(prog)s {__version__}\"\n"
    " parser.add_argument(\"--version\", action=\"version\", version=version)\n\n"
    " return parser.parse_args(args)\n\n\n"
    "def main(argv: List[str] = sys.argv[1:]) -> int:\n"
    " args = parse_args(argv)\n\n"
    " return " namebase "(args)\n\n\n"
    "if __name__ == \"__main__\":\n"
    " sys.exit(main())\n"))
    39 changes: 39 additions & 0 deletions template.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,39 @@
    #!/usr/bin/env python3.6
    """REPLACE_THIS.py: REPLACE_WITH_DESCRIPTION
    """

    __version__ = "0.1"

    # Copyright 2020 Michael M. Hoffman <[email protected]>

    from argparse import Namespace
    from os import EX_OK
    import sys
    from typing import List, Optional


    def REPLACE_THIS(args: Namespace) -> int:
    return EX_OK


    def parse_args(args: List[str]) -> Namespace:
    from argparse import ArgumentDefaultsHelpFormatter, ArgumentParser

    description = __doc__.splitlines()[0].partition(": ")[2]
    parser = ArgumentParser(description=description,
    formatter_class=ArgumentDefaultsHelpFormatter)

    version = f"%(prog)s {__version__}"
    parser.add_argument("--version", action="version", version=version)

    return parser.parse_args(args)


    def main(argv: List[str] = sys.argv[1:]) -> int:
    args = parse_args(argv)

    return REPLACE_THIS(args)


    if __name__ == "__main__":
    sys.exit(main())