unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#45922: 27.1; Better auto-fill for strings in python-mode
@ 2021-01-16 21:49 Акимжанчег
  2021-01-17 11:58 ` Tomas Nordin
  2022-05-07 15:51 ` Lars Ingebrigtsen
  0 siblings, 2 replies; 7+ messages in thread
From: Акимжанчег @ 2021-01-16 21:49 UTC (permalink / raw)
  To: 45922

[-- Attachment #1: Type: text/plain, Size: 21709 bytes --]

Date: Sun, 17 Jan 2021 03:45:31 +0600
Message-ID: <875z3wd090.fsf@gmail.com>
--text follows this line--

Today I was making a program in Python for myself. One of the functions
required me to pass a long string to it, so I did that. Auto-fill-mode
got triggered when I pressed the space bar and the string was split from
this:
```
matrix = self.getprop("Coordinate Transformation Matrix").split(", ")
```
To this:
```
matrix = self.getprop("Coordinate Transformation
                                  Matrix").split(", ")
```
After that, I saw `SyntaxError: EOL while scanning string literal'.
This can be fixed with two different methods:
1. Adding a `+' between the strings, so that it looks like
```
matrix = self.getprop("Coordinate Transformation"
                     +"Matrix").split(", ")
```
2. Dividing the string to 2 separate strings:
```
matrix = self.getprop("Coordinate Transformation"
                      "Matrix").split(", ")


In GNU Emacs 27.1 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.22,
cairo version 1.17.3)
 of 2020-08-29 built on juergen
Windowing system distributor 'The X.Org Foundation', version 11.0.12010000
System Description: Arch Linux

Recent messages:
invalid syntax [2 times]
Auto-saving...
EOL while scanning string literal
Auto-saving...
EOL while scanning string literal
Mark set
invalid syntax
Auto-saving...
End of buffer
delete-backward-char: Text is read-only [2 times]

Configured using:
 'configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib
 --localstatedir=/var --with-x-toolkit=gtk3 --with-xft --with-wide-int
 --with-modules --with-cairo --with-harfbuzz 'CFLAGS=-march=x86-64
 -mtune=generic -O2 -pipe -fno-plt' CPPFLAGS=-D_FORTIFY_SOURCE=2
 LDFLAGS=-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now'

Configured features:
XPM JPEG TIFF GIF PNG RSVG CAIRO SOUND GPM DBUS GSETTINGS GLIB NOTIFY
INOTIFY ACL GNUTLS LIBXML2 FREETYPE HARFBUZZ M17N_FLT LIBOTF ZLIB
TOOLKIT_SCROLL_BARS GTK3 X11 XDBE XIM MODULES THREADS LIBSYSTEMD JSON
PDUMPER LCMS2 GMP

Important settings:
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Python

Minor modes in effect:
  electric-pair-mode: t
  desktop-save-mode: t
  show-paren-mode: t
  delete-selection-mode: t
  global-display-line-numbers-mode: t
  display-line-numbers-mode: t
  async-bytecomp-package-mode: t
  savehist-mode: t
  rainbow-delimiters-mode: t
  elpy-mode: t
  pyvenv-mode: t
  shell-dirtrack-mode: t
  which-key-mode: t
  marginalia-mode: t
  flycheck-mode: t
  gcmh-mode: t
  global-company-mode: t
  company-mode: t
  TeX-PDF-mode: t
  ctrlf-mode: t
  ctrlf-local-mode: t
  highlight-indent-guides-mode: t
  yas-global-mode: t
  yas-minor-mode: t
  dired-async-mode: t
  selectrum-prescient-mode: t
  prescient-persist-mode: t
  selectrum-mode: t
  reverse-im-mode: t
  global-page-break-lines-mode: t
  global-undo-tree-mode: t
  undo-tree-mode: t
  override-global-mode: t
  straight-use-package-mode: t
  straight-package-neutering-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  global-prettify-symbols-mode: t
  prettify-symbols-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  auto-fill-function: yas--auto-fill
  global-visual-line-mode: t
  visual-line-mode: t
  transient-mark-mode: t

Load-path shadows:
/home/veronika/.emacs.d/straight/build/org/org-feed hides
/usr/share/emacs/27.1/lisp/org/org-feed
/home/veronika/.emacs.d/straight/build/org/org-compat hides
/usr/share/emacs/27.1/lisp/org/org-compat
/home/veronika/.emacs.d/straight/build/org/ol-eshell hides
/usr/share/emacs/27.1/lisp/org/ol-eshell
/home/veronika/.emacs.d/straight/build/org/ob-shell hides
/usr/share/emacs/27.1/lisp/org/ob-shell
/home/veronika/.emacs.d/straight/build/org/ox-publish hides
/usr/share/emacs/27.1/lisp/org/ox-publish
/home/veronika/.emacs.d/straight/build/org/org-lint hides
/usr/share/emacs/27.1/lisp/org/org-lint
/home/veronika/.emacs.d/straight/build/org/ol-rmail hides
/usr/share/emacs/27.1/lisp/org/ol-rmail
/home/veronika/.emacs.d/straight/build/org/org-src hides
/usr/share/emacs/27.1/lisp/org/org-src
/home/veronika/.emacs.d/straight/build/org/org-keys hides
/usr/share/emacs/27.1/lisp/org/org-keys
/home/veronika/.emacs.d/straight/build/org/ob-groovy hides
/usr/share/emacs/27.1/lisp/org/ob-groovy
/home/veronika/.emacs.d/straight/build/org/org-id hides
/usr/share/emacs/27.1/lisp/org/org-id
/home/veronika/.emacs.d/straight/build/org/ob-dot hides
/usr/share/emacs/27.1/lisp/org/ob-dot
/home/veronika/.emacs.d/straight/build/org/ob-emacs-lisp hides
/usr/share/emacs/27.1/lisp/org/ob-emacs-lisp
/home/veronika/.emacs.d/straight/build/org/ob-vala hides
/usr/share/emacs/27.1/lisp/org/ob-vala
/home/veronika/.emacs.d/straight/build/org/ob-abc hides
/usr/share/emacs/27.1/lisp/org/ob-abc
/home/veronika/.emacs.d/straight/build/org/org-footnote hides
/usr/share/emacs/27.1/lisp/org/org-footnote
/home/veronika/.emacs.d/straight/build/org/ox-md hides
/usr/share/emacs/27.1/lisp/org/ox-md
/home/veronika/.emacs.d/straight/build/org/ob hides
/usr/share/emacs/27.1/lisp/org/ob
/home/veronika/.emacs.d/straight/build/org/ob-clojure hides
/usr/share/emacs/27.1/lisp/org/ob-clojure
/home/veronika/.emacs.d/straight/build/org/ob-ditaa hides
/usr/share/emacs/27.1/lisp/org/ob-ditaa
/home/veronika/.emacs.d/straight/build/org/ob-ref hides
/usr/share/emacs/27.1/lisp/org/ob-ref
/home/veronika/.emacs.d/straight/build/org/ox-texinfo hides
/usr/share/emacs/27.1/lisp/org/ox-texinfo
/home/veronika/.emacs.d/straight/build/org/ob-css hides
/usr/share/emacs/27.1/lisp/org/ob-css
/home/veronika/.emacs.d/straight/build/org/org-ctags hides
/usr/share/emacs/27.1/lisp/org/org-ctags
/home/veronika/.emacs.d/straight/build/org/org-mouse hides
/usr/share/emacs/27.1/lisp/org/org-mouse
/home/veronika/.emacs.d/straight/build/org/ob-io hides
/usr/share/emacs/27.1/lisp/org/ob-io
/home/veronika/.emacs.d/straight/build/org/ox-org hides
/usr/share/emacs/27.1/lisp/org/ox-org
/home/veronika/.emacs.d/straight/build/org/org-version hides
/usr/share/emacs/27.1/lisp/org/org-version
/home/veronika/.emacs.d/straight/build/org/org-capture hides
/usr/share/emacs/27.1/lisp/org/org-capture
/home/veronika/.emacs.d/straight/build/org/ob-lob hides
/usr/share/emacs/27.1/lisp/org/ob-lob
/home/veronika/.emacs.d/straight/build/org/ob-exp hides
/usr/share/emacs/27.1/lisp/org/ob-exp
/home/veronika/.emacs.d/straight/build/org/ob-js hides
/usr/share/emacs/27.1/lisp/org/ob-js
/home/veronika/.emacs.d/straight/build/org/org-duration hides
/usr/share/emacs/27.1/lisp/org/org-duration
/home/veronika/.emacs.d/straight/build/org/ob-eval hides
/usr/share/emacs/27.1/lisp/org/ob-eval
/home/veronika/.emacs.d/straight/build/org/org-attach-git hides
/usr/share/emacs/27.1/lisp/org/org-attach-git
/home/veronika/.emacs.d/straight/build/org/ob-lisp hides
/usr/share/emacs/27.1/lisp/org/ob-lisp
/home/veronika/.emacs.d/straight/build/org/ob-picolisp hides
/usr/share/emacs/27.1/lisp/org/ob-picolisp
/home/veronika/.emacs.d/straight/build/org/ol hides
/usr/share/emacs/27.1/lisp/org/ol
/home/veronika/.emacs.d/straight/build/org/org-indent hides
/usr/share/emacs/27.1/lisp/org/org-indent
/home/veronika/.emacs.d/straight/build/org/org-agenda hides
/usr/share/emacs/27.1/lisp/org/org-agenda
/home/veronika/.emacs.d/straight/build/org/ol-docview hides
/usr/share/emacs/27.1/lisp/org/ol-docview
/home/veronika/.emacs.d/straight/build/org/ob-stan hides
/usr/share/emacs/27.1/lisp/org/ob-stan
/home/veronika/.emacs.d/straight/build/org/ox-latex hides
/usr/share/emacs/27.1/lisp/org/ox-latex
/home/veronika/.emacs.d/straight/build/org/ob-R hides
/usr/share/emacs/27.1/lisp/org/ob-R
/home/veronika/.emacs.d/straight/build/org/ob-java hides
/usr/share/emacs/27.1/lisp/org/ob-java
/home/veronika/.emacs.d/straight/build/org/org-plot hides
/usr/share/emacs/27.1/lisp/org/org-plot
/home/veronika/.emacs.d/straight/build/org/ob-perl hides
/usr/share/emacs/27.1/lisp/org/ob-perl
/home/veronika/.emacs.d/straight/build/org/ol-eww hides
/usr/share/emacs/27.1/lisp/org/ol-eww
/home/veronika/.emacs.d/straight/build/org/ob-ocaml hides
/usr/share/emacs/27.1/lisp/org/ob-ocaml
/home/veronika/.emacs.d/straight/build/org/org-macro hides
/usr/share/emacs/27.1/lisp/org/org-macro
/home/veronika/.emacs.d/straight/build/org/org-install hides
/usr/share/emacs/27.1/lisp/org/org-install
/home/veronika/.emacs.d/straight/build/org/org-habit hides
/usr/share/emacs/27.1/lisp/org/org-habit
/home/veronika/.emacs.d/straight/build/org/ol-info hides
/usr/share/emacs/27.1/lisp/org/ol-info
/home/veronika/.emacs.d/straight/build/org/ob-asymptote hides
/usr/share/emacs/27.1/lisp/org/ob-asymptote
/home/veronika/.emacs.d/straight/build/org/ob-matlab hides
/usr/share/emacs/27.1/lisp/org/ob-matlab
/home/veronika/.emacs.d/straight/build/org/org-num hides
/usr/share/emacs/27.1/lisp/org/org-num
/home/veronika/.emacs.d/straight/build/org/org-attach hides
/usr/share/emacs/27.1/lisp/org/org-attach
/home/veronika/.emacs.d/straight/build/org/org-pcomplete hides
/usr/share/emacs/27.1/lisp/org/org-pcomplete
/home/veronika/.emacs.d/straight/build/org/ob-mscgen hides
/usr/share/emacs/27.1/lisp/org/ob-mscgen
/home/veronika/.emacs.d/straight/build/org/org-colview hides
/usr/share/emacs/27.1/lisp/org/org-colview
/home/veronika/.emacs.d/straight/build/org/ox-man hides
/usr/share/emacs/27.1/lisp/org/ox-man
/home/veronika/.emacs.d/straight/build/org/org-inlinetask hides
/usr/share/emacs/27.1/lisp/org/org-inlinetask
/home/veronika/.emacs.d/straight/build/org/org-tempo hides
/usr/share/emacs/27.1/lisp/org/org-tempo
/home/veronika/.emacs.d/straight/build/org/ob-sqlite hides
/usr/share/emacs/27.1/lisp/org/ob-sqlite
/home/veronika/.emacs.d/straight/build/org/ob-maxima hides
/usr/share/emacs/27.1/lisp/org/ob-maxima
/home/veronika/.emacs.d/straight/build/org/ob-plantuml hides
/usr/share/emacs/27.1/lisp/org/ob-plantuml
/home/veronika/.emacs.d/straight/build/org/ob-haskell hides
/usr/share/emacs/27.1/lisp/org/ob-haskell
/home/veronika/.emacs.d/straight/build/org/ol-bbdb hides
/usr/share/emacs/27.1/lisp/org/ol-bbdb
/home/veronika/.emacs.d/straight/build/org/ob-awk hides
/usr/share/emacs/27.1/lisp/org/ob-awk
/home/veronika/.emacs.d/straight/build/org/org-mobile hides
/usr/share/emacs/27.1/lisp/org/org-mobile
/home/veronika/.emacs.d/straight/build/org/org-protocol hides
/usr/share/emacs/27.1/lisp/org/org-protocol
/home/veronika/.emacs.d/straight/build/org/ob-table hides
/usr/share/emacs/27.1/lisp/org/ob-table
/home/veronika/.emacs.d/straight/build/org/org-archive hides
/usr/share/emacs/27.1/lisp/org/org-archive
/home/veronika/.emacs.d/straight/build/org/org-list hides
/usr/share/emacs/27.1/lisp/org/org-list
/home/veronika/.emacs.d/straight/build/org/ox hides
/usr/share/emacs/27.1/lisp/org/ox
/home/veronika/.emacs.d/straight/build/org/ox-icalendar hides
/usr/share/emacs/27.1/lisp/org/ox-icalendar
/home/veronika/.emacs.d/straight/build/org/ob-fortran hides
/usr/share/emacs/27.1/lisp/org/ob-fortran
/home/veronika/.emacs.d/straight/build/org/ob-makefile hides
/usr/share/emacs/27.1/lisp/org/ob-makefile
/home/veronika/.emacs.d/straight/build/org/org-element hides
/usr/share/emacs/27.1/lisp/org/org-element
/home/veronika/.emacs.d/straight/build/org/org-timer hides
/usr/share/emacs/27.1/lisp/org/org-timer
/home/veronika/.emacs.d/straight/build/org/ob-core hides
/usr/share/emacs/27.1/lisp/org/ob-core
/home/veronika/.emacs.d/straight/build/org/org-macs hides
/usr/share/emacs/27.1/lisp/org/org-macs
/home/veronika/.emacs.d/straight/build/org/ob-lua hides
/usr/share/emacs/27.1/lisp/org/ob-lua
/home/veronika/.emacs.d/straight/build/org/ob-processing hides
/usr/share/emacs/27.1/lisp/org/ob-processing
/home/veronika/.emacs.d/straight/build/org/ol-w3m hides
/usr/share/emacs/27.1/lisp/org/ol-w3m
/home/veronika/.emacs.d/straight/build/org/ob-ebnf hides
/usr/share/emacs/27.1/lisp/org/ob-ebnf
/home/veronika/.emacs.d/straight/build/org/ol-gnus hides
/usr/share/emacs/27.1/lisp/org/ol-gnus
/home/veronika/.emacs.d/straight/build/org/ob-latex hides
/usr/share/emacs/27.1/lisp/org/ob-latex
/home/veronika/.emacs.d/straight/build/org/ol-irc hides
/usr/share/emacs/27.1/lisp/org/ol-irc
/home/veronika/.emacs.d/straight/build/org/ob-coq hides
/usr/share/emacs/27.1/lisp/org/ob-coq
/home/veronika/.emacs.d/straight/build/org/ox-beamer hides
/usr/share/emacs/27.1/lisp/org/ox-beamer
/home/veronika/.emacs.d/straight/build/org/ox-odt hides
/usr/share/emacs/27.1/lisp/org/ox-odt
/home/veronika/.emacs.d/straight/build/org/ob-octave hides
/usr/share/emacs/27.1/lisp/org/ob-octave
/home/veronika/.emacs.d/straight/build/org/ob-comint hides
/usr/share/emacs/27.1/lisp/org/ob-comint
/home/veronika/.emacs.d/straight/build/org/ob-gnuplot hides
/usr/share/emacs/27.1/lisp/org/ob-gnuplot
/home/veronika/.emacs.d/straight/build/org/ob-J hides
/usr/share/emacs/27.1/lisp/org/ob-J
/home/veronika/.emacs.d/straight/build/org/ox-ascii hides
/usr/share/emacs/27.1/lisp/org/ox-ascii
/home/veronika/.emacs.d/straight/build/org/ob-screen hides
/usr/share/emacs/27.1/lisp/org/ob-screen
/home/veronika/.emacs.d/straight/build/org/ox-html hides
/usr/share/emacs/27.1/lisp/org/ox-html
/home/veronika/.emacs.d/straight/build/org/ol-mhe hides
/usr/share/emacs/27.1/lisp/org/ol-mhe
/home/veronika/.emacs.d/straight/build/org/ob-eshell hides
/usr/share/emacs/27.1/lisp/org/ob-eshell
/home/veronika/.emacs.d/straight/build/org/ob-sql hides
/usr/share/emacs/27.1/lisp/org/ob-sql
/home/veronika/.emacs.d/straight/build/org/org-clock hides
/usr/share/emacs/27.1/lisp/org/org-clock
/home/veronika/.emacs.d/straight/build/org/ob-forth hides
/usr/share/emacs/27.1/lisp/org/ob-forth
/home/veronika/.emacs.d/straight/build/org/ob-hledger hides
/usr/share/emacs/27.1/lisp/org/ob-hledger
/home/veronika/.emacs.d/straight/build/org/ob-C hides
/usr/share/emacs/27.1/lisp/org/ob-C
/home/veronika/.emacs.d/straight/build/org/ob-sed hides
/usr/share/emacs/27.1/lisp/org/ob-sed
/home/veronika/.emacs.d/straight/build/org/ob-scheme hides
/usr/share/emacs/27.1/lisp/org/ob-scheme
/home/veronika/.emacs.d/straight/build/org/org hides
/usr/share/emacs/27.1/lisp/org/org
/home/veronika/.emacs.d/straight/build/org/ol-bibtex hides
/usr/share/emacs/27.1/lisp/org/ol-bibtex
/home/veronika/.emacs.d/straight/build/org/ob-shen hides
/usr/share/emacs/27.1/lisp/org/ob-shen
/home/veronika/.emacs.d/straight/build/org/ob-calc hides
/usr/share/emacs/27.1/lisp/org/ob-calc
/home/veronika/.emacs.d/straight/build/org/org-faces hides
/usr/share/emacs/27.1/lisp/org/org-faces
/home/veronika/.emacs.d/straight/build/org/org-datetree hides
/usr/share/emacs/27.1/lisp/org/org-datetree
/home/veronika/.emacs.d/straight/build/org/ob-ruby hides
/usr/share/emacs/27.1/lisp/org/ob-ruby
/home/veronika/.emacs.d/straight/build/org/org-loaddefs hides
/usr/share/emacs/27.1/lisp/org/org-loaddefs
/home/veronika/.emacs.d/straight/build/org/org-crypt hides
/usr/share/emacs/27.1/lisp/org/org-crypt
/home/veronika/.emacs.d/straight/build/org/org-table hides
/usr/share/emacs/27.1/lisp/org/org-table
/home/veronika/.emacs.d/straight/build/org/org-goto hides
/usr/share/emacs/27.1/lisp/org/org-goto
/home/veronika/.emacs.d/straight/build/org/ob-lilypond hides
/usr/share/emacs/27.1/lisp/org/ob-lilypond
/home/veronika/.emacs.d/straight/build/org/ob-tangle hides
/usr/share/emacs/27.1/lisp/org/ob-tangle
/home/veronika/.emacs.d/straight/build/org/ob-sass hides
/usr/share/emacs/27.1/lisp/org/ob-sass
/home/veronika/.emacs.d/straight/build/org/ob-python hides
/usr/share/emacs/27.1/lisp/org/ob-python
/home/veronika/.emacs.d/straight/build/org/ob-org hides
/usr/share/emacs/27.1/lisp/org/ob-org
/home/veronika/.emacs.d/straight/build/org/ob-ledger hides
/usr/share/emacs/27.1/lisp/org/ob-ledger
/home/veronika/.emacs.d/straight/build/org/org-entities hides
/usr/share/emacs/27.1/lisp/org/org-entities
/home/veronika/.emacs.d/straight/build/eldoc/eldoc hides
/usr/share/emacs/27.1/lisp/emacs-lisp/eldoc
/home/veronika/.emacs.d/straight/build/faceup/faceup hides
/usr/share/emacs/27.1/lisp/emacs-lisp/faceup
/home/veronika/.emacs.d/straight/build/let-alist/let-alist hides
/usr/share/emacs/27.1/lisp/emacs-lisp/let-alist

Features:
(shadow sort mail-extr emacsbug message rmc rfc822 mml mml-sec epa epg
epg-config gnus-util rmail rmail-loaddefs mm-decode mm-bodies mm-encode
mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047
rfc2045 ietf-drums mm-util mail-prsvr mail-utils cl-print debug
backtrace cua-base viper viper-cmd viper-keym viper-ex viper-macs
viper-mous viper-init viper-util eieio-opt speedbar sb-image ezimage
dframe tabify two-column iso-transl char-fold mule-util autorevert
filenotify vc-git elec-pair desktop frameset paren delsel
display-line-numbers async-bytecomp savehist projectile ibuf-ext ibuffer
ibuffer-loaddefs projectile-autoloads avy avy-autoloads
rainbow-delimiters rainbow-delimiters-autoloads slime arc-mode
archive-mode hyperspec slime-autoloads macrostep-autoloads
company-oddmuse company-keywords company-etags company-gtags
company-dabbrev-code company-dabbrev company-files company-clang
company-cmake company-semantic company-template company-bbdb
highlight-indentation company-capf help-fns radix-tree elpy elpy-rpc
pyvenv eshell esh-cmd esh-ext esh-opt esh-proc esh-io esh-arg esh-module
esh-groups esh-util elpy-shell elpy-profile elpy-django s elpy-refactor
diff-mode python tramp-sh tramp tramp-loaddefs trampver
tramp-integration tramp-compat shell pcomplete parse-time iso8601
time-date ls-lisp format-spec files-x cus-edit cus-start cus-load
elpy-autoloads s-autoloads pyvenv-autoloads
highlight-indentation-autoloads which-key which-key-autoloads marginalia
marginalia-autoloads base16-google-light-theme base16-theme
base16-theme-autoloads consult-selectrum consult recentf tree-widget
wid-edit bookmark consult-selectrum-autoloads flycheck dash jka-compr
let-alist flycheck-autoloads let-alist-autoloads pkg-info-autoloads
epl-autoloads dash-autoloads flx flx-autoloads gcmh gcmh-autoloads vterm
face-remap term disp-table ehelp vterm-module vterm-autoloads
haskell-mode haskell-cabal haskell-utils haskell-font-lock
haskell-indentation haskell-string haskell-sort-imports haskell-lexeme
haskell-align-imports haskell-complete-module haskell-ghc-support
noutline outline etags fileloop generator dabbrev haskell-customize
haskell-mode-autoloads company-auctex company latex latex-flymake
flymake-proc flymake warnings tex-ispell tex-style tex dbus texmathp
company-math-autoloads math-symbol-lists-autoloads
company-auctex-autoloads auctex-autoloads tex-site company-autoloads
ctrlf hl-line ctrlf-autoloads highlight-indent-guides color
highlight-indent-guides-autoloads yasnippet-snippets yasnippet
yasnippet-snippets-autoloads yasnippet-autoloads dired-async advice
dired-aux dired dired-loaddefs async async-autoloads selectrum-prescient
selectrum minibuf-eldef crm prescient selectrum-prescient-autoloads
selectrum-autoloads prescient-autoloads reverse-im quail
reverse-im-autoloads page-break-lines page-break-lines-autoloads
eldoc-autoloads undo-tree diff undo-tree-autoloads use-package-diminish
sicp racket-mode derived racket-bug-report package url-handlers
racket-collection tq racket-repl-buffer-name racket-stepper
racket-logger racket-profile racket-smart-open racket-xp
racket-xp-complete racket-show pcase pos-tip racket-imenu imenu
racket-edit hideshow racket-repl semantic/symref/grep grep
semantic/symref semantic/util-modes semantic/util semantic pp
semantic/tag semantic/lex semantic/fw mode-local find-func cedet compile
racket-eldoc racket-describe shr text-property-search url-cookie
url-domsuf url-util url-parse auth-source password-cache json map
url-vars puny svg xml dom browse-url racket-visit xref project eieio
eieio-core eieio-loaddefs racket-complete racket-common racket-parens
racket-indent racket-font-lock racket-ppss racket-keywords-and-builtins
thingatpt ido comint ansi-color ring racket-doc racket-cmd racket-util
racket-browse-url racket-custom sh-script smie executable rx
racket-mode-autoloads pos-tip-autoloads faceup-autoloads edmacro kmacro
windmove finder-inf use-package-bind-key bind-key easy-mmode cl-seq
use-package-core early-init use-package-autoloads bind-key-autoloads
straight-autoloads info cl-extra help-mode easymenu seq byte-opt
straight subr-x cl-macs gv cl-loaddefs cl-lib bytecomp byte-compile
cconv tooltip eldoc electric uniquify ediff-hook vc-hooks
lisp-float-type mwheel term/x-win x-win term/common-win x-dnd tool-bar
dnd fontset image regexp-opt fringe tabulated-list replace newcomment
text-mode elisp-mode lisp-mode prog-mode register page tab-bar menu-bar
rfn-eshadow isearch timer select scroll-bar mouse jit-lock font-lock
syntax facemenu font-core term/tty-colors frame minibuffer cl-generic
cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech
european ethiopic indian cyrillic chinese composite charscript charprop
case-table epa-hook jka-cmpr-hook help simple abbrev obarray
cl-preloaded nadvice loaddefs button faces cus-face macroexp files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote threads dbusbind
inotify lcms2 dynamic-setting system-font-setting font-render-setting
cairo move-toolbar gtk x-toolkit x multi-tty make-network-process emacs)

Memory information:
((conses 16 998382 583405)
 (symbols 48 52020 35)
 (strings 32 166975 30774)
 (string-bytes 1 4861732)
 (vectors 16 64196)
 (vector-slots 8 1028063 287354)
 (floats 8 796 1311)
 (intervals 56 66038 16961)
 (buffers 1000 41))

[-- Attachment #2: Type: text/html, Size: 23054 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#45922: 27.1; Better auto-fill for strings in python-mode
  2021-01-16 21:49 bug#45922: 27.1; Better auto-fill for strings in python-mode Акимжанчег
@ 2021-01-17 11:58 ` Tomas Nordin
       [not found]   ` <CAJBTzO=rE4n4iZdBNv2HE=zi+_O1r=bqwFdsCku1-3VZOgqOWg@mail.gmail.com>
  2022-05-07 15:51 ` Lars Ingebrigtsen
  1 sibling, 1 reply; 7+ messages in thread
From: Tomas Nordin @ 2021-01-17 11:58 UTC (permalink / raw)
  To: Акимжанчег,
	45922

Hello Акимжанчег

Акимжанчег <zelenaruta@gmail.com> writes:

> Date: Sun, 17 Jan 2021 03:45:31 +0600
> Message-ID: <875z3wd090.fsf@gmail.com>
> --text follows this line--
>
> Today I was making a program in Python for myself. One of the functions
> required me to pass a long string to it, so I did that. Auto-fill-mode
> got triggered when I pressed the space bar and the string was split from
> this:
> ```
> matrix = self.getprop("Coordinate Transformation Matrix").split(", ")
> ```
> To this:
> ```
> matrix = self.getprop("Coordinate Transformation
>                                   Matrix").split(", ")
> ```
> After that, I saw `SyntaxError: EOL while scanning string literal'.
> This can be fixed with two different methods:
> 1. Adding a `+' between the strings, so that it looks like
> ```
> matrix = self.getprop("Coordinate Transformation"
>                      +"Matrix").split(", ")
> ```
> 2. Dividing the string to 2 separate strings:
> ```
> matrix = self.getprop("Coordinate Transformation"
>                       "Matrix").split(", ")

From the recepie it would seem like fill-column is set to something low.
But probably you have some indentation there prior to 'matrix = ...'?

I don't think there is something in python mode that do what you are
suggesting as of now. For curiosity, do you see this kind of support in
other editors?

nit: the 2 suggestions would loose a space in the string





^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#45922: 27.1; Better auto-fill for strings in python-mode
       [not found]   ` <CAJBTzO=rE4n4iZdBNv2HE=zi+_O1r=bqwFdsCku1-3VZOgqOWg@mail.gmail.com>
@ 2021-01-17 20:18     ` Tomas Nordin
  0 siblings, 0 replies; 7+ messages in thread
From: Tomas Nordin @ 2021-01-17 20:18 UTC (permalink / raw)
  To: Акимжанчег
  Cc: 45922

Акимжанчег <zelenaruta@gmail.com> writes:

>>
>>
>> From the recepie it would seem like fill-column is set to something low.
>> But probably you have some indentation there prior to 'matrix = ...'?
>>
> Yes there were 8 spaces before that
>
>> I don't think there is something in python mode that do what you are
>> suggesting as of now. For curiosity, do you see this kind of support in
>> other editors?
>>
> Emacs is the only editor I ever used, but when I write a comment and reach
> the fill-column auto-fill-mode opens a new line and puts the comment
> character there, so I thought if it does it for comments then it might as
> well do it for strings.

The one and true editor. I /think/ the filling of comments gets handled
by fill.el. Filling of one-line strings would have to be handled by
python.el. I was looking to see if it tries to support that but couldn't
find indications it does. Cannot find that it documents to support it.

I agree it could be convenient and understand the expectation based on
the comment filling. Might be difficult to implement tho.





^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#45922: 27.1; Better auto-fill for strings in python-mode
  2021-01-16 21:49 bug#45922: 27.1; Better auto-fill for strings in python-mode Акимжанчег
  2021-01-17 11:58 ` Tomas Nordin
@ 2022-05-07 15:51 ` Lars Ingebrigtsen
  2022-05-07 16:25   ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
  1 sibling, 1 reply; 7+ messages in thread
From: Lars Ingebrigtsen @ 2022-05-07 15:51 UTC (permalink / raw)
  To: Акимжанчег
  Cc: 45922, Stefan Monnier

Акимжанчег <zelenaruta@gmail.com> writes:

> Today I was making a program in Python for myself. One of the functions
> required me to pass a long string to it, so I did that. Auto-fill-mode
> got triggered when I pressed the space bar and the string was split from
> this:
> ```
> matrix = self.getprop("Coordinate Transformation Matrix").split(", ")
> ```
> To this:
> ```
> matrix = self.getprop("Coordinate Transformation
>                                   Matrix").split(", ")
> ```
> After that, I saw `SyntaxError: EOL while scanning string literal'.

I can reproduce this in Emacs 29, too.

The Python auto fill basically just calls `do-auto-fill', so I wondered
whether there was something simple to tell that function to not consider
any points where ppss-string-terminator is non-nil as a break point, but
apparently not?  (It seems like such an obvious thing to have, so
perhaps there's a good reason we don't have that.)

I've added Stefan to the CCs; perhaps he has some comments.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#45922: 27.1; Better auto-fill for strings in python-mode
  2022-05-07 15:51 ` Lars Ingebrigtsen
@ 2022-05-07 16:25   ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2022-05-07 16:56     ` Lars Ingebrigtsen
  0 siblings, 1 reply; 7+ messages in thread
From: Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-05-07 16:25 UTC (permalink / raw)
  To: Lars Ingebrigtsen
  Cc: Акимжанчег,
	45922

> The Python auto fill basically just calls `do-auto-fill', so I wondered
> whether there was something simple to tell that function to not consider
> any points where ppss-string-terminator is non-nil as a break point, but
> apparently not?

`fill-nobreak-predicate`?


        Stefan






^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#45922: 27.1; Better auto-fill for strings in python-mode
  2022-05-07 16:25   ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2022-05-07 16:56     ` Lars Ingebrigtsen
  2022-05-07 17:28       ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 7+ messages in thread
From: Lars Ingebrigtsen @ 2022-05-07 16:56 UTC (permalink / raw)
  To: Stefan Monnier
  Cc: Акимжанчег,
	45922

Stefan Monnier <monnier@iro.umontreal.ca> writes:

>> The Python auto fill basically just calls `do-auto-fill', so I wondered
>> whether there was something simple to tell that function to not consider
>> any points where ppss-string-terminator is non-nil as a break point, but
>> apparently not?
>
> `fill-nobreak-predicate`?

Ah, yes, perfect.  With this, it works like the original bug reporter
wanted:

              (setq-local fill-nobreak-predicate
              (lambda ()
                (ppss-string-terminator (syntax-ppss))))

But this reminds me that auto-fill-mode in programming modes is a bad
idea in general: Even if it doesn't chop anything inside the string,
it'll still lead to invalid code.

So I think the answer to this bug report is really -- don't use
auto-fill in python-mode, and I'm closing it as a wontfix.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#45922: 27.1; Better auto-fill for strings in python-mode
  2022-05-07 16:56     ` Lars Ingebrigtsen
@ 2022-05-07 17:28       ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 0 replies; 7+ messages in thread
From: Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-05-07 17:28 UTC (permalink / raw)
  To: Lars Ingebrigtsen
  Cc: Акимжанчег,
	45922

> But this reminds me that auto-fill-mode in programming modes is a bad
> idea in general:

Or at least, it needs to be custom-tailored (as in `smie-auto-fill` or
things along these lines).

In many/most programming languages the only real trouble is
inserting/adding newlines inside strings or newline-terminated comments.

> So I think the answer to this bug report is really -- don't use
> auto-fill in python-mode, and I'm closing it as a wontfix.

Yup, in python-mode (and other programming modes where LF is not always
treated as whitespace) it does need a lot more care.


        Stefan






^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2022-05-07 17:28 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-16 21:49 bug#45922: 27.1; Better auto-fill for strings in python-mode Акимжанчег
2021-01-17 11:58 ` Tomas Nordin
     [not found]   ` <CAJBTzO=rE4n4iZdBNv2HE=zi+_O1r=bqwFdsCku1-3VZOgqOWg@mail.gmail.com>
2021-01-17 20:18     ` Tomas Nordin
2022-05-07 15:51 ` Lars Ingebrigtsen
2022-05-07 16:25   ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-05-07 16:56     ` Lars Ingebrigtsen
2022-05-07 17:28       ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).