* bug#18992: 24.4; describe-mode @ 2014-11-08 9:16 Andreas Röhler 2014-11-08 14:34 ` Tassilo Horn 0 siblings, 1 reply; 8+ messages in thread From: Andreas Röhler @ 2014-11-08 9:16 UTC (permalink / raw) To: 18992 M-x describe-mode RET should report the major-mode. Currently it tells the value of "mode-name". Several issues with this: - Value of mode-name is displayed in current-buffers mode-line allready - mode-name often will be a quit shortened, as space in mode-line is precious - don't see a usage of mode-name beyond mode-line - user will be interested in value of major-mode, which isn't told See for example from inside a M-x shell RET M-x describe-mode says: "Shell mode" while the real major-mode is sh-mode Thanks all, Andreas Röhler In GNU Emacs 24.4.1 (i686-pc-linux-gnu, X toolkit, Xaw3d scroll bars) of 2014-10-24 Windowing system distributor `The X.Org Foundation', version 11.0.11204000 System Description: Debian GNU/Linux 7.7 (wheezy) Important settings: value of $LANG: de_DE.utf8 locale-coding-system: utf-8-unix Major mode: Shell-script Minor modes in effect: sh-electric-here-document-mode: t shell-dirtrack-mode: t tooltip-mode: t electric-indent-mode: t mouse-wheel-mode: t tool-bar-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 line-number-mode: t transient-mark-mode: t Recent input: <help-echo> C-h f d e s c r i b e - m o d e <return> C-x o C-x 1 <down> <left> <left> <left> <left> <left> <return> C-x 1 <help-echo> <help-echo> <help-echo> <help-echo> <help-echo> <help-echo> <help-echo> <help-echo> <help-echo> <help-echo> <help-echo> <help-echo> <help-echo> <menu-bar> <options> <menu-set-font> C-s m o d e - n a m e <left> M-x s h e l l <return> C-h v m a j p r - <backspace> <backspace> <backspace> o r - m o <tab> <return> C-x C-f <M-backspace> <M-backspace> <M-backspace> <M-backspace> e i n . s h <return> C-h f <up> <return> C-d C-g C-h v m a j o r - m o d e <return> s h - m o d e C-x C-w <return> M-x d e s c r i b e - m o d e <return> C-x o <down> <down> <down> <down> <down> <down> <down> <down> <down> <down> C-SPC C-e M-w C-x o M-x r e p o r t - e m a c s - b u g <return> Recent messages: (New file) Setting up indent for shell type sh Indentation variables are now local. Indentation setup for shell type sh Quit You can run the command `describe-mode' with C-h m Load-path shadows: None found. Features: (shadow sort gnus-util mail-extr emacsbug message format-spec rfc822 mml mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils sh-script smie executable pp shell pcomplete comint ansi-color ring misearch multi-isearch find-func help-mode easymenu help-fns time-date tooltip electric uniquify ediff-hook vc-hooks lisp-float-type mwheel x-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list newcomment lisp-mode prog-mode register page menu-bar rfn-eshadow timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core frame cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese case-table epa-hook jka-cmpr-hook help simple abbrev minibuffer 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 make-network-process inotify dynamic-setting x-toolkit x multi-tty emacs) Memory information: ((conses 8 122385 5181) (symbols 24 36505 0) (miscs 20 123 292) (strings 16 50339 4912) (string-bytes 1 680645) (vectors 8 11520) (vector-slots 4 437709 3282) (floats 8 67 468) (intervals 28 565 16) (buffers 512 16) (heap 1024 30852 417)) ^ permalink raw reply [flat|nested] 8+ messages in thread
* bug#18992: 24.4; describe-mode 2014-11-08 9:16 bug#18992: 24.4; describe-mode Andreas Röhler @ 2014-11-08 14:34 ` Tassilo Horn 2014-11-08 15:54 ` Andreas Röhler ` (2 more replies) 0 siblings, 3 replies; 8+ messages in thread From: Tassilo Horn @ 2014-11-08 14:34 UTC (permalink / raw) To: Andreas Röhler; +Cc: 18992 Andreas Röhler <andreas.roehler@easy-emacs.de> writes: > M-x describe-mode RET should report the major-mode. > Currently it tells the value of "mode-name". > > Several issues with this: > > - Value of mode-name is displayed in current-buffers mode-line allready I guess the main usage of `describe-mode' is to get its documentation and key bindings. > - mode-name often will be a quit shortened, as space in mode-line is precious Usually it's just the capitalized version of the major-mode function with the `-mode' stripped. And sometimes it contains more information that just the mode function, e.g., "Dired by name", "Dired by date", etc. > - don't see a usage of mode-name beyond mode-line The other important usage is printing the pretty name with describe-mode. ;-) > - user will be interested in value of major-mode, which isn't told describe-mode prints a link you can click to jump to the major-mode function. > See for example from inside a M-x shell RET > > M-x describe-mode says: "Shell mode" > while the real major-mode is sh-mode No, the real mode function is `shell-mode'. `sh-mode' is the editing mode for shell scripts, and that has mode-names like "Shell-script[zsh]" or "Shell-script[bash]" which are even more informative than just the plain mode function. Well, but of course having the mode functions printed in `describe-mode' wouldn't hurt anyway. This patch does that: --8<---------------cut here---------------start------------->8--- === modified file 'lisp/help.el' --- lisp/help.el 2014-08-07 03:25:09 +0000 +++ lisp/help.el 2014-11-08 14:27:54 +0000 @@ -946,7 +946,8 @@ (let ((start (point))) (insert (format-mode-line mode nil nil buffer)) (add-text-properties start (point) '(face bold))))) - (princ " mode") + (princ " mode ") + (princ (format "(`%s')" major-mode)) (let* ((mode major-mode) (file-name (find-lisp-object-file-name mode nil))) (when file-name --8<---------------cut here---------------end--------------->8--- With that, in this message buffer I get: --8<---------------cut here---------------start------------->8--- Message mode (`message-mode') defined in `message.el': Major mode for editing mail and news to be sent. Like Text Mode but with these additional commands: ... --8<---------------cut here---------------end--------------->8--- With the following patch, the same would be done for the active minor modes, too: --8<---------------cut here---------------start------------->8--- === modified file 'lisp/help.el' --- lisp/help.el 2014-08-07 03:25:09 +0000 +++ lisp/help.el 2014-11-08 14:31:30 +0000 @@ -924,7 +924,8 @@ (push (point-marker) help-button-cache) ;; Document the minor modes fully. (insert pretty-minor-mode) - (princ (format " minor mode (%s):\n" + (princ (format " minor mode (`%s'; %s):\n" + mode-function (if (zerop (length indicator)) "no indicator" (format "indicator%s" @@ -946,7 +947,8 @@ (let ((start (point))) (insert (format-mode-line mode nil nil buffer)) (add-text-properties start (point) '(face bold))))) - (princ " mode") + (princ " mode ") + (princ (format "(`%s')" major-mode)) (let* ((mode major-mode) (file-name (find-lisp-object-file-name mode nil))) (when file-name --8<---------------cut here---------------end--------------->8--- However, in contrast to major-modes, minor mode names tend to be much longer, so we can get some long lines like: Global-Edit-Server-Edit minor mode (`global-edit-server-edit-mode'; no indicator): Bye, Tassilo ^ permalink raw reply [flat|nested] 8+ messages in thread
* bug#18992: 24.4; describe-mode 2014-11-08 14:34 ` Tassilo Horn @ 2014-11-08 15:54 ` Andreas Röhler 2014-11-08 16:35 ` Drew Adams 2014-11-08 15:57 ` Drew Adams 2019-12-05 11:35 ` Stefan Kangas 2 siblings, 1 reply; 8+ messages in thread From: Andreas Röhler @ 2014-11-08 15:54 UTC (permalink / raw) To: Tassilo Horn; +Cc: 18992 On 08.11.2014 15:34, Tassilo Horn wrote: > Andreas Röhler <andreas.roehler@easy-emacs.de> writes: > >> M-x describe-mode RET should report the major-mode. >> Currently it tells the value of "mode-name". >> >> Several issues with this: >> >> - Value of mode-name is displayed in current-buffers mode-line allready > > I guess the main usage of `describe-mode' is to get its documentation > and key bindings. > >> - mode-name often will be a quit shortened, as space in mode-line is precious > > Usually it's just the capitalized version of the major-mode function > with the `-mode' stripped. And sometimes it contains more information > that just the mode function, e.g., "Dired by name", "Dired by date", > etc. > >> - don't see a usage of mode-name beyond mode-line > > The other important usage is printing the pretty name with > describe-mode. ;-) > >> - user will be interested in value of major-mode, which isn't told > > describe-mode prints a link you can click to jump to the major-mode > function. > >> See for example from inside a M-x shell RET >> >> M-x describe-mode says: "Shell mode" >> while the real major-mode is sh-mode > > No, the real mode function is `shell-mode'. `sh-mode' is the editing > mode for shell scripts, and that has mode-names like "Shell-script[zsh]" > or "Shell-script[bash]" which are even more informative than just the > plain mode function. > > Well, but of course having the mode functions printed in `describe-mode' > wouldn't hurt anyway. This patch does that: > > --8<---------------cut here---------------start------------->8--- > === modified file 'lisp/help.el' > --- lisp/help.el 2014-08-07 03:25:09 +0000 > +++ lisp/help.el 2014-11-08 14:27:54 +0000 > @@ -946,7 +946,8 @@ > (let ((start (point))) > (insert (format-mode-line mode nil nil buffer)) > (add-text-properties start (point) '(face bold))))) > - (princ " mode") > + (princ " mode ") > + (princ (format "(`%s')" major-mode)) > (let* ((mode major-mode) > (file-name (find-lisp-object-file-name mode nil))) > (when file-name > --8<---------------cut here---------------end--------------->8--- > > With that, in this message buffer I get: > > --8<---------------cut here---------------start------------->8--- > Message mode (`message-mode') defined in `message.el': > Major mode for editing mail and news to be sent. > Like Text Mode but with these additional commands: > ... > --8<---------------cut here---------------end--------------->8--- > > With the following patch, the same would be done for the active minor > modes, too: > > --8<---------------cut here---------------start------------->8--- > === modified file 'lisp/help.el' > --- lisp/help.el 2014-08-07 03:25:09 +0000 > +++ lisp/help.el 2014-11-08 14:31:30 +0000 > @@ -924,7 +924,8 @@ > (push (point-marker) help-button-cache) > ;; Document the minor modes fully. > (insert pretty-minor-mode) > - (princ (format " minor mode (%s):\n" > + (princ (format " minor mode (`%s'; %s):\n" > + mode-function > (if (zerop (length indicator)) > "no indicator" > (format "indicator%s" > @@ -946,7 +947,8 @@ > (let ((start (point))) > (insert (format-mode-line mode nil nil buffer)) > (add-text-properties start (point) '(face bold))))) > - (princ " mode") > + (princ " mode ") > + (princ (format "(`%s')" major-mode)) > (let* ((mode major-mode) > (file-name (find-lisp-object-file-name mode nil))) > (when file-name > --8<---------------cut here---------------end--------------->8--- > > However, in contrast to major-modes, minor mode names tend to be much > longer, so we can get some long lines like: > > Global-Edit-Server-Edit minor mode (`global-edit-server-edit-mode'; no indicator): > > Bye, > Tassilo > What about mentioning the variable at stake, i.e. "major-mode: " resp. "minor-mode: " in format-function? As said, repeating the rather arbitrary mode-line string doesn't contribute, is confusing. Thanks, Andreas ^ permalink raw reply [flat|nested] 8+ messages in thread
* bug#18992: 24.4; describe-mode 2014-11-08 15:54 ` Andreas Röhler @ 2014-11-08 16:35 ` Drew Adams 0 siblings, 0 replies; 8+ messages in thread From: Drew Adams @ 2014-11-08 16:35 UTC (permalink / raw) To: Andreas Röhler, Tassilo Horn; +Cc: 18992 > What about mentioning the variable at stake, i.e. "major-mode: " > resp. "minor-mode: " in format-function? > As said, repeating the rather arbitrary mode-line string doesn't > contribute, is confusing. There is no variable `minor-mode'. And users can find out about `major-mode' elsewhere. ^ permalink raw reply [flat|nested] 8+ messages in thread
* bug#18992: 24.4; describe-mode 2014-11-08 14:34 ` Tassilo Horn 2014-11-08 15:54 ` Andreas Röhler @ 2014-11-08 15:57 ` Drew Adams 2014-11-08 16:42 ` Drew Adams 2019-12-05 11:35 ` Stefan Kangas 2 siblings, 1 reply; 8+ messages in thread From: Drew Adams @ 2014-11-08 15:57 UTC (permalink / raw) To: Tassilo Horn, Andreas Röhler; +Cc: 18992 > Well, but of course having the mode functions printed in `describe- > mode' wouldn't hurt anyway. This patch does that: This is an improvement. > However, in contrast to major-modes, minor mode names tend to be > much longer, so we can get some long lines like: > > Global-Edit-Server-Edit minor mode (`global-edit-server-edit-mode'; > no indicator): Yes, that violates *Help* conventions. It is better to use this (or similar): ;; Document the minor modes fully. (insert pretty-minor-mode) (princ (format " minor mode:\n(`%s'; %s)\n" mode-function (if (zerop (length indicator)) "no indicator" (format "indicator%s" indicator)))) (save-excursion (fill-region-as-paragraph (line-beginning-position 0) (line-end-position 0) nil t t)) ^ permalink raw reply [flat|nested] 8+ messages in thread
* bug#18992: 24.4; describe-mode 2014-11-08 15:57 ` Drew Adams @ 2014-11-08 16:42 ` Drew Adams 0 siblings, 0 replies; 8+ messages in thread From: Drew Adams @ 2014-11-08 16:42 UTC (permalink / raw) To: Tassilo Horn, Andreas Röhler; +Cc: 18992 > > However, in contrast to major-modes, minor mode names tend to be > > much longer, so we can get some long lines like: > > > > Global-Edit-Server-Edit minor mode (`global-edit-server-edit- > > mode'; no indicator): > > Yes, that violates *Help* conventions. It is better to use this > (or similar): ... Actually, we should do similarly for the major mode, even if major mode names (including `mode-name') *tend* to be shorter. It is good behavior for functions printing unknown stuff to *Help* to ensure that lines are not too long, when possible. Something like this: (princ " mode") (let* ((mode major-mode) (file-name (find-lisp-object-file-name mode nil))) (when file-name (princ (concat " defined in `" (file-name-nondirectory file-name) "'")) (with-current-buffer standard-output ; Hyperlink to library. (save-excursion (re-search-backward "`\\([^`']+\\)'" nil t) (help-xref-button 1 'help-function-def mode file-name)))) (with-current-buffer standard-output (insert (format " (`%s'):\n" mode)) (save-excursion (fill-region-as-paragraph (line-beginning-position 0) (line-end-position 0) nil t t)))) ^ permalink raw reply [flat|nested] 8+ messages in thread
* bug#18992: 24.4; describe-mode 2014-11-08 14:34 ` Tassilo Horn 2014-11-08 15:54 ` Andreas Röhler 2014-11-08 15:57 ` Drew Adams @ 2019-12-05 11:35 ` Stefan Kangas 2020-01-15 2:01 ` Stefan Kangas 2 siblings, 1 reply; 8+ messages in thread From: Stefan Kangas @ 2019-12-05 11:35 UTC (permalink / raw) To: Tassilo Horn; +Cc: 18992 Tassilo Horn <tsdh@gnu.org> writes: > Well, but of course having the mode functions printed in `describe-mode' > wouldn't hurt anyway. This patch does that: [...] > With that, in this message buffer I get: > > Message mode (`message-mode') defined in `message.el': > Major mode for editing mail and news to be sent. > Like Text Mode but with these additional commands: I don't think this is an improvement. It risks confusing more than it helps, especially for beginning users. We can already say `C-h v major-mode RET' which to my mind is wholly sufficient for anyone who needs to know the value of the `major-mode' variable. > With the following patch, the same would be done for the active minor > modes, too: [...] > However, in contrast to major-modes, minor mode names tend to be much > longer, so we can get some long lines like: > > Global-Edit-Server-Edit minor mode (`global-edit-server-edit-mode'; no indicator): I think this is even less of an improvement. I suggest to close this as wontfix. If I don't see any objections, I'll just go ahead and do that within a couple of weeks. Please send any opinions on this issue before then. Best regards, Stefan Kangas ^ permalink raw reply [flat|nested] 8+ messages in thread
* bug#18992: 24.4; describe-mode 2019-12-05 11:35 ` Stefan Kangas @ 2020-01-15 2:01 ` Stefan Kangas 0 siblings, 0 replies; 8+ messages in thread From: Stefan Kangas @ 2020-01-15 2:01 UTC (permalink / raw) To: Tassilo Horn; +Cc: 18992 tags 18992 + wontfix notabug close 18992 thanks Stefan Kangas <stefan@marxist.se> writes: > I suggest to close this as wontfix. If I don't see any objections, > I'll just go ahead and do that within a couple of weeks. Please send > any opinions on this issue before then. No objections within 6 weeks; closing this bug now. Best regards, Stefan Kangas ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2020-01-15 2:01 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-11-08 9:16 bug#18992: 24.4; describe-mode Andreas Röhler 2014-11-08 14:34 ` Tassilo Horn 2014-11-08 15:54 ` Andreas Röhler 2014-11-08 16:35 ` Drew Adams 2014-11-08 15:57 ` Drew Adams 2014-11-08 16:42 ` Drew Adams 2019-12-05 11:35 ` Stefan Kangas 2020-01-15 2:01 ` Stefan Kangas
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).