* bug#17057: 24.3.50; [ruby-mode] Font-locking of special global variables like $$ is broken(missing) @ 2014-03-21 12:53 Bozhidar Batsov 2014-03-21 14:47 ` Dmitry Gutov 0 siblings, 1 reply; 11+ messages in thread From: Bozhidar Batsov @ 2014-03-21 12:53 UTC (permalink / raw) To: 17057 Here's a few examples: "this is #$$" var = $! Things are different for: "this is #$1" var = $1 I think those should be highlighted at least like $1 and friends. There's another thing to consider - do built-in global vars should be font-locked like built-ins or like the other (user-defined) global variables? Personally I'd font-lock them as built-in to underline their significance. In GNU Emacs 24.3.50.1 (x86_64-apple-darwin13.0.0, NS apple-appkit-1265.00) of 2014-03-01 on Bozhidars-MacBook-Pro.local Windowing system distributor `Apple', version 10.3.1265 Configured using: `configure --prefix=/usr/local/Cellar/emacs/HEAD --without-dbus --enable-locallisppath=/usr/local/share/emacs/site-lisp --infodir=/usr/local/Cellar/emacs/HEAD/share/info/emacs --without-gnutls --with-ns --disable-ns-self-contained' Important settings: locale-coding-system: utf-8-unix Major mode: Ruby Minor modes in effect: subword-mode: t ruby-tools-mode: t inf-ruby-minor-mode: t magit-auto-revert-mode: t diff-auto-refine-mode: t guru-mode: t erc-truncate-mode: t erc-spelling-mode: t erc-list-mode: t erc-menu-mode: t erc-autojoin-mode: t erc-ring-mode: t erc-networks-mode: t erc-pcomplete-mode: t erc-track-mode: t erc-match-mode: t erc-button-mode: t erc-fill-mode: t erc-stamp-mode: t erc-netsplit-mode: t erc-irccontrols-mode: t erc-noncommands-mode: t erc-move-to-prompt-mode: t erc-readonly-mode: t global-flycheck-mode: t flycheck-mode: t which-function-mode: t flx-ido-mode: t ido-ubiquitous-mode: t winner-mode: t global-undo-tree-mode: t undo-tree-mode: t whitespace-mode: t global-anzu-mode: t anzu-mode: t projectile-global-mode: t projectile-mode: t flyspell-mode: t shell-dirtrack-mode: t volatile-highlights-mode: t global-hl-line-mode: t recentf-mode: t savehist-mode: t show-smartparens-global-mode: t show-smartparens-mode: t smartparens-mode: t global-auto-revert-mode: t delete-selection-mode: t prelude-global-mode: t prelude-mode: t tooltip-mode: t electric-indent-mode: t mouse-wheel-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t size-indication-mode: t column-number-mode: t line-number-mode: t transient-mark-mode: t Recent input: t SPC i s SPC @ <backspace> # g o o t C-b C-b C-b C-b C-b C-d @ C-f C-f C-f C-f C-d C-x C-s C-e C-x b <return> C-p C-p C-e <return> p SPC n o d e . c h i l d r e n C-x C-s C-x b <return> C-a C-f C-f C-f C-f C-f C-f C-f C-f C-f C-f C-f C-f C-f C-b C-b C-b { C-d C-f C-f C-f C-f C-f } C-x C-s C-b C-b C-b C-b C-b C-b C-b C-d C-f C-f C-f C-f C-f C-d C-x C-s C-x b <return> C-a C-a C-k C-k C-x b <return> C-b C-b C-b C-b C-b C-d $ C-x C-s C-d C-d C-d C-d $ C-x C-s <backspace> ! C-x C-s <backspace> 1 C-x C-s C-x b <return> C-n C-e . l o c . e x p r e s s i o n . s o u r c e C-x C-s C-n C-a C-f C-f C-f C-f C-f C-f C-k C-p C-a C-f C-f C-k C-n C-e C-y C-p C-p C-n C-a C-a C-k C-k C-n C-n C-n C-p C-p C-p C-n C-n C-n C-p C-k C-k C-n C-k C-k C-p <tab> C-x C-s <help-echo> <help-echo> <help-echo> <help-echo> <help-echo> <help-echo> <help-echo> <help-echo> <down-mouse-1> <mouse-1> <down-mouse-1> <mouse-1> C-x b t e s t <return> <backspace> ! <backspace> $ <backspace> 1 <backspace> $ <help-echo> <down-mouse-1> <mouse-1> C-v a <backspace> <return> v a r r <backspace> SPC = = SPC $ 1 <backspace> $ <backspace> ! <backspace> <backspace> <backspace> <backspace> <backspace> <backspace> <backspace> <backspace> <backspace> <backspace> <backspace> <return> <return> t o p SPC = SPC $ t e s t <backspace> <backspace> <backspace> <backspace> <backspace> <backspace> <backspace> <backspace> <backspace> <backspace> <backspace> <backspace> M-x r e b o <backspace> <backspace> p o r t <return> Recent messages: Wrote /Users/bozhidar/projects/test.rb Saving file /Users/bozhidar/projects/rubocop/lib/rubocop/cop/style/variable_interpolation.rb... Wrote /Users/bozhidar/projects/rubocop/lib/rubocop/cop/style/variable_interpolation.rb Mark set Indenting region...done Inconsistent indentation detected. Saving file /Users/bozhidar/projects/rubocop/lib/rubocop/cop/style/variable_interpolation.rb... Wrote /Users/bozhidar/projects/rubocop/lib/rubocop/cop/style/variable_interpolation.rb Saving file /Users/bozhidar/projects/test.rb... Wrote /Users/bozhidar/projects/test.rb scroll-up-command: End of buffer Load-path shadows: /Users/bozhidar/.emacs.d/elpa/tabulated-list-20120406.2251/tabulated-list hides /usr/local/Cellar/emacs/HEAD/share/emacs/24.3.50/lisp/emacs-lisp/tabulated-list Features: (rect shadow sort emacsbug make-mode ielm lisp-mnt clojure-test-mode cider-scratch network-stream starttls tls slime-fancy slime-fontifying-fu slime-package-fu slime-references slime-scratch slime-presentations slime-fuzzy slime-fancy-inspector slime-c-p-c slime-editing-commands slime-autodoc slime-parse slime-repl elp slime hyperspec ace-jump-mode hippie-exp browse-url cus-edit cus-start cus-load slim-mode mail-extr eieio-opt speedbar sb-image ezimage dframe rst yaml-mode superword subword ruby-tools inf-ruby ruby-mode-expansions smartparens-ruby ruby-mode smie cider coffee-mode js-mode-expansions js json cc-mode-expansions cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs web-mode-expansions web-mode disp-table nxml-uchnm rng-xsd xsd-regexp rng-cmpct cider-mode cider-repl cider-eldoc cider-interaction arc-mode archive-mode cider-client nrepl-client cider-util ewoc clojure-mode-expansions clojure-mode inf-lisp find-dired vc-annotate vc vc-dispatcher misearch multi-isearch gitignore-mode conf-mode ibuf-ext ibuffer ffap url-parse url-vars mule-util executable magit-key-mode magit view epa derived epg epg-config diff-mode git-rebase-mode git-commit-mode server log-edit message sendmail rfc822 mml mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 ietf-drums mailabbrev mail-utils gmm-utils mailheader pcvs-util add-log vc-git markdown-mode noutline outline rainbow-mode color rainbow-delimiters elisp-slime-nav guru-mode prelude-key-chord key-chord prelude-xml nxml-mode-expansions html-mode-expansions sgml-mode smartparens-html rng-nxml rng-valid rng-loc rng-uri rng-parse nxml-parse rng-match rng-dt rng-util rng-pttrn nxml-ns nxml-mode nxml-outln nxml-rap nxml-util nxml-glyph nxml-enc xmltok prelude-web prelude-scss prelude-scheme prelude-ruby prelude-perl prelude-org prelude-js prelude-erc erc-truncate erc-autoaway erc-spelling erc-notify erc-log erc-list erc-menu erc-join erc-ring erc-networks erc-pcomplete erc-track erc-match erc-button erc-fill erc-stamp erc-netsplit erc-goodies erc erc-backend erc-compat prelude-emacs-lisp prelude-css prelude-common-lisp slime-autoloads prelude-clojure prelude-lisp prelude-c prelude-programming flycheck help-mode rx f which-func imenu prelude-ido smex flx-ido flx ido-ubiquitous warnings ido prelude-osx exec-path-from-shell prelude-global-keybindings prelude-editor winner undo-tree diff esh-var esh-io esh-cmd esh-opt esh-ext esh-proc esh-arg eldoc esh-groups eshell esh-module esh-mode esh-util re-builder whitespace browse-kill-ring midnight ediff-merg ediff-wind ediff-diff ediff-mult ediff-help ediff-init ediff-util ediff dired-x dired anzu projectile pkg-info find-func grep compile s bookmark pp expand-region text-mode-expansions er-basic-expansions expand-region-core expand-region-custom flyspell ispell tramp tramp-compat auth-source gnus-util mm-util mail-prsvr password-cache tramp-loaddefs trampver shell pcomplete comint ansi-color format-spec etags ring volatile-highlights hl-line windmove recentf tree-widget wid-edit savehist saveplace diminish smartparens-config smartparens autorevert filenotify delsel prelude-mode easy-mmode edmacro kmacro prelude-core epl advice help-fns dash thingatpt prelude-ui zenburn-theme prelude-packages finder-inf ack-and-a-half-autoloads diminish-autoloads erlang-autoloads flx-ido-autoloads eieio byte-opt bytecomp byte-compile cconv eieio-core grizzl-autoloads key-chord-autoloads logito-autoloads info easymenu cl-macs gv pkg-info-autoloads rainbow-delimiters-autoloads rubocop-autoloads volatile-highlights-autoloads yaml-mode-autoloads package cl cl-loaddefs cl-lib time-date tooltip electric uniquify ediff-hook vc-hooks lisp-float-type mwheel ns-win 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 cocoa ns multi-tty emacs) ^ permalink raw reply [flat|nested] 11+ messages in thread
* bug#17057: 24.3.50; [ruby-mode] Font-locking of special global variables like $$ is broken(missing) 2014-03-21 12:53 bug#17057: 24.3.50; [ruby-mode] Font-locking of special global variables like $$ is broken(missing) Bozhidar Batsov @ 2014-03-21 14:47 ` Dmitry Gutov 2014-03-21 14:53 ` Bozhidar Batsov 0 siblings, 1 reply; 11+ messages in thread From: Dmitry Gutov @ 2014-03-21 14:47 UTC (permalink / raw) To: Bozhidar Batsov; +Cc: 17057 Bozhidar Batsov <bozhidar@batsov.com> writes: > Here's a few examples: > > "this is #$$" > > var = $! > > Things are different for: > > "this is #$1" > > var = $1 Have you tried it in the latest Emacs? For me, only one example "this is #$$" is not highlighted (I'll fix that). > There's another thing to consider - do built-in global vars should be > font-locked like built-ins or like the other (user-defined) global > variables? Personally I'd font-lock them as built-in to underline their > significance. Hmmm, maybe. But we also highlight nil, self, true, false, __LINE__, __ENCODING__ and __FILE__ with font-lock-variable-name-face. Should we change these, too? ^ permalink raw reply [flat|nested] 11+ messages in thread
* bug#17057: 24.3.50; [ruby-mode] Font-locking of special global variables like $$ is broken(missing) 2014-03-21 14:47 ` Dmitry Gutov @ 2014-03-21 14:53 ` Bozhidar Batsov 2014-03-22 10:02 ` Bozhidar Batsov 2014-03-24 9:12 ` Dmitry Gutov 0 siblings, 2 replies; 11+ messages in thread From: Bozhidar Batsov @ 2014-03-21 14:53 UTC (permalink / raw) To: Dmitry Gutov; +Cc: 17057 [-- Attachment #1: Type: text/plain, Size: 1253 bytes --] On Friday, March 21, 2014 at 4:47 PM, Dmitry Gutov wrote: > Bozhidar Batsov <bozhidar@batsov.com (mailto:bozhidar@batsov.com)> writes: > > > Here's a few examples: > > > > "this is #$$" > > > > var = $! > > > > Things are different for: > > > > "this is #$1" > > > > var = $1 > > Have you tried it in the latest Emacs? For me, only one example > > "this is #$$" > > is not highlighted (I'll fix that). > > > There's another thing to consider - do built-in global vars should be > > font-locked like built-ins or like the other (user-defined) global > > variables? Personally I'd font-lock them as built-in to underline their > > significance. > > > > > Hmmm, maybe. But we also highlight nil, self, true, false, __LINE__, > __ENCODING__ and __FILE__ with font-lock-variable-name-face. Should we > change these, too? > > Technically speaking all of those are keywords, not variables. Somewhat odd __LINE__ and friends are treated at string literals by the Ruby parser. As all of those evaluate to some value unlike most other keywords I guess it makes some sense to font-lock them as variables, but I’d prefer if we used font-locking that makes their special status more apparent. [-- Attachment #2: Type: text/html, Size: 2084 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* bug#17057: 24.3.50; [ruby-mode] Font-locking of special global variables like $$ is broken(missing) 2014-03-21 14:53 ` Bozhidar Batsov @ 2014-03-22 10:02 ` Bozhidar Batsov 2014-03-22 10:05 ` Bozhidar Batsov 2014-03-24 9:12 ` Dmitry Gutov 1 sibling, 1 reply; 11+ messages in thread From: Bozhidar Batsov @ 2014-03-22 10:02 UTC (permalink / raw) To: Dmitry Gutov; +Cc: 17057 [-- Attachment #1: Type: text/plain, Size: 1730 bytes --] On Friday, March 21, 2014 at 4:53 PM, Bozhidar Batsov wrote: > On Friday, March 21, 2014 at 4:47 PM, Dmitry Gutov wrote: > > Bozhidar Batsov <bozhidar@batsov.com (mailto:bozhidar@batsov.com)> writes: > > > > > Here's a few examples: > > > > > > "this is #$$" > > > > > > var = $! > > > > > > Things are different for: > > > > > > "this is #$1" > > > > > > var = $1 > > > > Have you tried it in the latest Emacs? For me, only one example > > > > "this is #$$" > > > > is not highlighted (I'll fix that). > > > > > There's another thing to consider - do built-in global vars should be > > > font-locked like built-ins or like the other (user-defined) global > > > variables? Personally I'd font-lock them as built-in to underline their > > > significance. > > > > > > > > > Hmmm, maybe. But we also highlight nil, self, true, false, __LINE__, > > __ENCODING__ and __FILE__ with font-lock-variable-name-face. Should we > > change these, too? > > > > > > > > Technically speaking all of those are keywords, not variables. Somewhat odd __LINE__ and friends are > treated at string literals by the Ruby parser. As all of those evaluate to some value unlike most other keywords I guess it makes some sense to font-lock them as variables, but I’d prefer if we used font-locking that makes their special status more apparent. > > There’s one more thing to consider - the special variables aliases defined in `English`. Those are considered de facto built-in (and are actually built-in in some implementations like JRuby; will probably be available out-of-the-box in MRI 3 as well), so I’d suggest treating them the same way as vars like $$, etc. [-- Attachment #2: Type: text/html, Size: 2807 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* bug#17057: 24.3.50; [ruby-mode] Font-locking of special global variables like $$ is broken(missing) 2014-03-22 10:02 ` Bozhidar Batsov @ 2014-03-22 10:05 ` Bozhidar Batsov 2014-03-24 7:33 ` Dmitry Gutov 0 siblings, 1 reply; 11+ messages in thread From: Bozhidar Batsov @ 2014-03-22 10:05 UTC (permalink / raw) To: Dmitry Gutov; +Cc: 17057 [-- Attachment #1: Type: text/plain, Size: 2068 bytes --] On Saturday, March 22, 2014 at 12:02 PM, Bozhidar Batsov wrote: > On Friday, March 21, 2014 at 4:53 PM, Bozhidar Batsov wrote: > > On Friday, March 21, 2014 at 4:47 PM, Dmitry Gutov wrote: > > > Bozhidar Batsov <bozhidar@batsov.com (mailto:bozhidar@batsov.com)> writes: > > > > > > > Here's a few examples: > > > > > > > > "this is #$$" > > > > > > > > var = $! > > > > > > > > Things are different for: > > > > > > > > "this is #$1" > > > > > > > > var = $1 > > > > > > Have you tried it in the latest Emacs? For me, only one example > > > > > > "this is #$$" > > > > > > is not highlighted (I'll fix that). > > > $1 gets font-locked immediately, but $$ currently gets font-locked only after some “word-boundary” character gets inserted (like space, newline, etc). > > > > > > > There's another thing to consider - do built-in global vars should be > > > > font-locked like built-ins or like the other (user-defined) global > > > > variables? Personally I'd font-lock them as built-in to underline their > > > > significance. > > > > > > > > > > > > > Hmmm, maybe. But we also highlight nil, self, true, false, __LINE__, > > > __ENCODING__ and __FILE__ with font-lock-variable-name-face. Should we > > > change these, too? > > > > > > > > > > > > > Technically speaking all of those are keywords, not variables. Somewhat odd __LINE__ and friends are > > treated at string literals by the Ruby parser. As all of those evaluate to some value unlike most other keywords I guess it makes some sense to font-lock them as variables, but I’d prefer if we used font-locking that makes their special status more apparent. > > > > > > > > There’s one more thing to consider - the special variables aliases defined in `English`. Those are considered de facto built-in (and are actually built-in in some implementations like JRuby; will probably be available out-of-the-box in MRI 3 as well), so I’d suggest treating them the same way as vars like $$, etc. > > [-- Attachment #2: Type: text/html, Size: 3765 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* bug#17057: 24.3.50; [ruby-mode] Font-locking of special global variables like $$ is broken(missing) 2014-03-22 10:05 ` Bozhidar Batsov @ 2014-03-24 7:33 ` Dmitry Gutov 0 siblings, 0 replies; 11+ messages in thread From: Dmitry Gutov @ 2014-03-24 7:33 UTC (permalink / raw) To: Bozhidar Batsov; +Cc: 17057 On 22.03.2014 12:05, Bozhidar Batsov wrote: > $1 gets font-locked immediately, but $$ currently gets font-locked only > after some “word-boundary” character gets inserted (like space, newline, > etc). Here's the relevant matcher, it's pretty old: "\\(\\$\\([^a-zA-Z0-9 \n]\\|[0-9]\\)\\)\\W" Apparently, it was meant as a light-weight syntax hint: no highlighting means syntax error. Very ad-hoc, so I'm up for removing it. ($1 also hits another matcher because 1 has the word syntax). ^ permalink raw reply [flat|nested] 11+ messages in thread
* bug#17057: 24.3.50; [ruby-mode] Font-locking of special global variables like $$ is broken(missing) 2014-03-21 14:53 ` Bozhidar Batsov 2014-03-22 10:02 ` Bozhidar Batsov @ 2014-03-24 9:12 ` Dmitry Gutov 2014-03-24 9:45 ` Bozhidar Batsov 1 sibling, 1 reply; 11+ messages in thread From: Dmitry Gutov @ 2014-03-24 9:12 UTC (permalink / raw) To: Bozhidar Batsov; +Cc: 17057-done Version: 24.4 On 21.03.2014 16:53, Bozhidar Batsov wrote: > Technically speaking all of those are keywords, not variables. Somewhat > odd __LINE__ and friends are > treated at string literals by the Ruby parser. As all of those evaluate > to some value unlike most other keywords I guess it makes some sense to > font-lock them as variables, but I’d prefer if we used font-locking that > makes their special status more apparent. Sounds good to me. Does this list look exhaustive to you? http://www.zenspider.com/Languages/Ruby/QuickRef.html#pre-defined-variables Aside from changing faces, the problems mentioned in this bug should be fixed now, emacs-24 r116850. ^ permalink raw reply [flat|nested] 11+ messages in thread
* bug#17057: 24.3.50; [ruby-mode] Font-locking of special global variables like $$ is broken(missing) 2014-03-24 9:12 ` Dmitry Gutov @ 2014-03-24 9:45 ` Bozhidar Batsov 2014-03-26 12:35 ` Dmitry Gutov 0 siblings, 1 reply; 11+ messages in thread From: Bozhidar Batsov @ 2014-03-24 9:45 UTC (permalink / raw) To: Dmitry Gutov; +Cc: 17057-done [-- Attachment #1: Type: text/plain, Size: 1109 bytes --] On Monday, March 24, 2014 at 11:12 AM, Dmitry Gutov wrote: > Version: 24.4 > > On 21.03.2014 16:53, Bozhidar Batsov wrote: > > > Technically speaking all of those are keywords, not variables. Somewhat > > odd __LINE__ and friends are > > treated at string literals by the Ruby parser. As all of those evaluate > > to some value unlike most other keywords I guess it makes some sense to > > font-lock them as variables, but I’d prefer if we used font-locking that > > makes their special status more apparent. > > > > > Sounds good to me. Does this list look exhaustive to you? > > http://www.zenspider.com/Languages/Ruby/QuickRef.html#pre-defined-variables > Yeah, seems that everything important is listed there. Here’s one a bit more extensive list, though: https://github.com/bbatsov/rubocop/blob/master/lib/rubocop/cop/style/global_vars.rb It features the JRuby-specific global vars in addition to the standard ones. > > Aside from changing faces, the problems mentioned in this bug should be > fixed now, emacs-24 r116850. > > Thanks! [-- Attachment #2: Type: text/html, Size: 2231 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* bug#17057: 24.3.50; [ruby-mode] Font-locking of special global variables like $$ is broken(missing) 2014-03-24 9:45 ` Bozhidar Batsov @ 2014-03-26 12:35 ` Dmitry Gutov 2014-03-26 12:42 ` Bozhidar Batsov 0 siblings, 1 reply; 11+ messages in thread From: Dmitry Gutov @ 2014-03-26 12:35 UTC (permalink / raw) To: Bozhidar Batsov; +Cc: 17057-done On 24.03.2014 11:45, Bozhidar Batsov wrote: > Yeah, seems that everything important is listed there. Here’s one a bit > more extensive list, though: > > https://github.com/bbatsov/rubocop/blob/master/lib/rubocop/cop/style/global_vars.rb > > It features the JRuby-specific global vars in addition to the standard > ones. I see that you don't include the $(digit) globals, which reference the last regexp-matched groups. The patch below does. Not sure if it's okay to install in 24.4, though: on the one hand it's low-risk, on the other hand it's not a bugfix. === modified file 'lisp/progmodes/ruby-mode.el' --- lisp/progmodes/ruby-mode.el 2014-03-24 08:53:56 +0000 +++ lisp/progmodes/ruby-mode.el 2014-03-26 11:33:42 +0000 @@ -2108,13 +2108,28 @@ 1 font-lock-variable-name-face) ;; Keywords that evaluate to certain values. ("\\_<__\\(?:LINE\\|ENCODING\\|FILE\\)__\\_>" - (0 font-lock-variable-name-face)) + (0 font-lock-builtin-face)) ;; Symbols. ("\\(^\\|[^:]\\)\\(:\\([-+~]@?\\|[/%&|^`]\\|\\*\\*?\\|<\\(<\\|=>?\\)?\\|>[>=]?\\|===?\\|=~\\|![~=]?\\|\\[\\]=?\\|@?\\(\\w\\|_\\)+\\([!?=]\\|\\b_*\\)\\|#{[^}\n\\\\]*\\(\\\\.[^}\n\\\\]*\\)*}\\)\\)" 2 font-lock-constant-face) - ;; Variables. - ("\\$[^a-zA-Z \n]" - 0 font-lock-variable-name-face) + ;; Special variables. + (,(concat "\\$\\(?:[:\"!@;,/\\._><\\$?~=*&`'+0-9]\\|-[0adFiIlpvw]\\|" + (regexp-opt '("LOAD_PATH" "LOADED_FEATURES" "PROGRAM_NAME" + "ERROR_INFO" "ERROR_POSITION" + "FS" "FIELD_SEPARATOR" + "OFS" "OUTPUT_FIELD_SEPARATOR" + "RS" "INPUT_RECORD_SEPARATOR" + "ORS" "OUTPUT_RECORD_SEPARATOR" + "NR" "INPUT_LINE_NUMBER" + "LAST_READ_LINE" "DEFAULT_OUTPUT" "DEFAULT_INPUT" + "PID" "PROCESS_ID" "CHILD_STATUS" + "LAST_MATCH_INFO" "IGNORECASE" + "ARGV" "MATCH" "PREMATCH" "POSTMATCH" + "LAST_PAREN_MATCH" "stdin" "stdout" "stderr" + "DEBUG" "FILENAME" "VERBOSE" "SAFE" "CLASSPATH" + "JRUBY_VERSION" "JRUBY_REVISION" "ENV_JAVA")) + "\\_>\\)") + 0 font-lock-builtin-face) ("\\(\\$\\|@\\|@@\\)\\(\\w\\|_\\)+" 0 font-lock-variable-name-face) ;; Constants. ^ permalink raw reply [flat|nested] 11+ messages in thread
* bug#17057: 24.3.50; [ruby-mode] Font-locking of special global variables like $$ is broken(missing) 2014-03-26 12:35 ` Dmitry Gutov @ 2014-03-26 12:42 ` Bozhidar Batsov 2014-03-27 8:26 ` Dmitry Gutov 0 siblings, 1 reply; 11+ messages in thread From: Bozhidar Batsov @ 2014-03-26 12:42 UTC (permalink / raw) To: Dmitry Gutov; +Cc: 17057-done [-- Attachment #1: Type: text/plain, Size: 2744 bytes --] I didn’t include them in RuboCop’s code since they actually constitute a different syntactic category according to the parser - a “nth-reference”. I don’t think we should care about this in ruby-mode, though. The patch looks great. Given the fact that Emacs releases are pretty far apart (usually more than 1 year) I think we should include this given that’s if virtually impossible to introduce a regression. -- Cheers, Bozhidar On Wednesday, March 26, 2014 at 2:35 PM, Dmitry Gutov wrote: > On 24.03.2014 11:45, Bozhidar Batsov wrote: > > > Yeah, seems that everything important is listed there. Here’s one a bit > > more extensive list, though: > > > > https://github.com/bbatsov/rubocop/blob/master/lib/rubocop/cop/style/global_vars.rb > > > > It features the JRuby-specific global vars in addition to the standard > > ones. > > > > > I see that you don't include the $(digit) globals, which reference the > last regexp-matched groups. The patch below does. > > Not sure if it's okay to install in 24.4, though: on the one hand it's > low-risk, on the other hand it's not a bugfix. > > > === modified file 'lisp/progmodes/ruby-mode.el' > --- lisp/progmodes/ruby-mode.el 2014-03-24 08:53:56 +0000 > +++ lisp/progmodes/ruby-mode.el 2014-03-26 11:33:42 +0000 > @@ -2108,13 +2108,28 @@ > 1 font-lock-variable-name-face) > ;; Keywords that evaluate to certain values. > ("\\_<__\\(?:LINE\\|ENCODING\\|FILE\\)__\\_>" > - (0 font-lock-variable-name-face)) > + (0 font-lock-builtin-face)) > ;; Symbols. > > ("\\(^\\|[^:]\\)\\(:\\([-+~]@?\\|[/%&|^`]\\|\\*\\*?\\|<\\(<\\|=>?\\)?\\|>[>=]?\\|===?\\|=~\\|![~=]?\\|\\[\\]=?\\|@?\\(\\w\\|_\\)+\\([!?=]\\|\\b_*\\)\\|#{[^}\n\\\\]*\\(\\\\.[^}\n\\\\]*\\)*}\\)\\)" > 2 font-lock-constant-face) > - ;; Variables. > - ("\\$[^a-zA-Z \n]" > - 0 font-lock-variable-name-face) > + ;; Special variables. > + (,(concat "\\$\\(?:[:\"!@;,/\\._><\\$?~=*&`'+0-9]\\|-[0adFiIlpvw]\\|" > + (regexp-opt '("LOAD_PATH" "LOADED_FEATURES" "PROGRAM_NAME" > + "ERROR_INFO" "ERROR_POSITION" > + "FS" "FIELD_SEPARATOR" > + "OFS" "OUTPUT_FIELD_SEPARATOR" > + "RS" "INPUT_RECORD_SEPARATOR" > + "ORS" "OUTPUT_RECORD_SEPARATOR" > + "NR" "INPUT_LINE_NUMBER" > + "LAST_READ_LINE" "DEFAULT_OUTPUT" > "DEFAULT_INPUT" > + "PID" "PROCESS_ID" "CHILD_STATUS" > + "LAST_MATCH_INFO" "IGNORECASE" > + "ARGV" "MATCH" "PREMATCH" "POSTMATCH" > + "LAST_PAREN_MATCH" "stdin" "stdout" "stderr" > + "DEBUG" "FILENAME" "VERBOSE" "SAFE" "CLASSPATH" > + "JRUBY_VERSION" "JRUBY_REVISION" "ENV_JAVA")) > + "\\_>\\)") > + 0 font-lock-builtin-face) > ("\\(\\$\\|@\\|@@\\)\\(\\w\\|_\\)+" > 0 font-lock-variable-name-face) > ;; Constants. > > [-- Attachment #2: Type: text/html, Size: 4376 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* bug#17057: 24.3.50; [ruby-mode] Font-locking of special global variables like $$ is broken(missing) 2014-03-26 12:42 ` Bozhidar Batsov @ 2014-03-27 8:26 ` Dmitry Gutov 0 siblings, 0 replies; 11+ messages in thread From: Dmitry Gutov @ 2014-03-27 8:26 UTC (permalink / raw) To: Bozhidar Batsov; +Cc: 17057-done On 26.03.2014 14:42, Bozhidar Batsov wrote: > Given the fact that Emacs releases are > pretty far apart (usually more than 1 year) I think we should include > this given that’s if virtually impossible to introduce a regression. Okay, this was probably enough time for someone else to weigh in. Guess I'll keep installing small tweaks in ruby-mode until an explicit slap on the wrist. :) emacs-24, r116870. ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2014-03-27 8:26 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-03-21 12:53 bug#17057: 24.3.50; [ruby-mode] Font-locking of special global variables like $$ is broken(missing) Bozhidar Batsov 2014-03-21 14:47 ` Dmitry Gutov 2014-03-21 14:53 ` Bozhidar Batsov 2014-03-22 10:02 ` Bozhidar Batsov 2014-03-22 10:05 ` Bozhidar Batsov 2014-03-24 7:33 ` Dmitry Gutov 2014-03-24 9:12 ` Dmitry Gutov 2014-03-24 9:45 ` Bozhidar Batsov 2014-03-26 12:35 ` Dmitry Gutov 2014-03-26 12:42 ` Bozhidar Batsov 2014-03-27 8:26 ` Dmitry Gutov
Code repositories for project(s) associated with this external index https://git.savannah.gnu.org/cgit/emacs.git https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.