aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/progmodes/ruby-mode.el (follow)
Commit message (Collapse)AuthorAgeFilesLines
* ; Add 2026 to copyright years.Sean Whitton2026-01-011-1/+1
|
* Fix indentation of keyword argument arrays/hashes in ruby-modeAaron Jensen2025-11-261-1/+4
| | | | | | | | | | | | | | | | | | | | | | * lisp/progmodes/ruby-mode.el (ruby-smie-rules): Check for ':' and '=>' as previous tokens, and handle symbols ending with ':' to properly indent keyword argument arrays and hashes when ruby-bracketed-args-indent is nil. * lisp/progmodes/ruby-ts-mode.el (ruby-ts--parent-call-or-bol): Handle arrays/hashes that are children of 'pair' nodes (keyword arguments) to ensure consistent indentation. * test/lisp/progmodes/ruby-mode-resources/ruby-bracketed-args-indent.rb: Add test cases for keyword argument arrays and hashes with both symbol-colon and hash-rocket syntax. When ruby-bracketed-args-indent is nil, arrays and hashes used as keyword argument values now indent by ruby-indent-level from the line start, matching the documented behavior and fixing inconsistent indentation (bug#74517). (https://lists.gnu.org/archive/html/emacs-devel/2025-11/msg00939.html)
* ruby-syntax-propertize: Add exception for /=Dmitry Gutov2025-09-161-0/+1
| | | | | | | | * lisp/progmodes/ruby-mode.el (ruby-syntax-propertize): Create an exception for assign-division operator not to be recognized as regexp start (bug#79454). * test/lisp/progmodes/ruby-mode-resources/ruby.rb: Add example.
* ruby-flymake-simple: Refine furtherDmitry Gutov2025-08-281-1/+1
| | | | | * lisp/progmodes/ruby-mode.el (ruby-flymake-simple): Relax regexp but limit allowed characters (bug#79257).
* ; ruby-flymake-simple: Only match relative file name (bug#79257)john muhl2025-08-271-1/+1
|
* Fix 'ruby-flymake-simple' for Ruby 3.4 (Bug#79257)john muhl2025-08-261-1/+1
| | | | | | * lisp/progmodes/ruby-mode.el (ruby-flymake-simple): Update regular expression to handle new versions of Ruby including the location of the executable in the output.
* New user option 'treesit-enabled-modes' (bug#79180)Juri Linkov2025-08-141-4/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/treesit.el (treesit-enabled-modes): New user option. * src/treesit.c (treesit-major-mode-remap-alist): New variable. * lisp/progmodes/c-ts-mode.el: * lisp/progmodes/csharp-mode.el: * lisp/progmodes/java-ts-mode.el: * lisp/progmodes/js.el: * lisp/progmodes/json-ts-mode.el: * lisp/progmodes/ruby-ts-mode.el: * lisp/progmodes/sh-script.el: * lisp/textmodes/css-mode.el: * lisp/textmodes/mhtml-ts-mode.el: * lisp/textmodes/toml-ts-mode.el: Add ts-mode mapping to 'treesit-major-mode-remap-alist' for ts-modes that already have the corresponding non-ts mode association in 'auto-mode-alist'. * lisp/progmodes/cmake-ts-mode.el (cmake-ts-mode-maybe): * lisp/progmodes/dockerfile-ts-mode.el (dockerfile-ts-mode-maybe): * lisp/progmodes/elixir-ts-mode.el (elixir-ts-mode-maybe): * lisp/progmodes/go-ts-mode.el (go-ts-mode-maybe) (go-mod-ts-mode-maybe, go-work-ts-mode-maybe): * lisp/progmodes/heex-ts-mode.el (heex-ts-mode-maybe): * lisp/progmodes/lua-ts-mode.el (lua-ts-mode-maybe): * lisp/progmodes/php-ts-mode.el (php-ts-mode-maybe): * lisp/progmodes/rust-ts-mode.el (rust-ts-mode-maybe): * lisp/progmodes/typescript-ts-mode.el (typescript-ts-mode-maybe) (tsx-ts-mode-maybe): * lisp/textmodes/markdown-ts-mode.el (markdown-ts-mode-maybe): * lisp/textmodes/yaml-ts-mode.el (yaml-ts-mode-maybe): Add a wrapper function to 'auto-mode-alist' for ts-modes that have no corresponding non-ts mode. Also add a mapping to 'treesit-major-mode-remap-alist' for the case when a non-ts mode is installed from an external source to be able to customize it with 'treesit-enabled-modes'.
* Fix ruby lint output regexpsTim Landscheidt2025-04-281-2/+2
| | | | | | | | | * doc/misc/flymake.texi (An annotated example backend): Fix regexp. * lisp/progmodes/ruby-mode.el (ruby-flymake-simple) (ruby-flymake-rubocop): Fix regexp (https://lists.gnu.org/archive/html/emacs-devel/2025-04/msg00851.html).
* Prefer '(oddp A)' to '(= 1 (logand A 1))'Stefan Kangas2025-02-171-2/+1
| | | | | | | | | | | | | | | * lisp/calendar/todo-mode.el (todo-padded-string): * lisp/emacs-lisp/gv.el (setf): * lisp/emacs-lisp/macroexp.el (macroexp--expand-all): * lisp/hexl.el (hexl-insert-hex-string): * lisp/play/gamegrid.el (gamegrid-xbm): * lisp/play/hanoi.el (hanoi-internal): * lisp/progmodes/ebnf2ps.el (ebnf-end-of-string): * lisp/progmodes/elisp-mode.el (elisp--highlight-function-argument): * lisp/progmodes/ruby-mode.el (ruby-backward-sexp): * lisp/ps-print.el (ps-print-page-p): (ps-print-sheet-p): Prefer '(oddp A)' to '(= 1 (logand A 1))' and variations thereof.
* Merge branch 'scratch/no-purespace' into 'master'Stefan Kangas2025-02-011-10/+10
|\
| * Don't call purecopy in progmodes/*.elStefan Kangas2024-12-121-10/+10
| | | | | | | | | | | | | | | | | | | | * lisp/progmodes/compile.el (compile-command): * lisp/progmodes/etags.el (tags-compression-info-list): * lisp/progmodes/grep.el (grep-program, find-program, xargs-program): * lisp/progmodes/js.el (interpreter-mode-alist): * lisp/progmodes/python.el (interpreter-mode-alist): * lisp/progmodes/ruby-mode.el (auto-mode-alist, interpreter-mode-alist): * lisp/progmodes/vera-mode.el: Remove calls to purecopy.
* | Update copyright year to 2025Paul Eggert2025-01-011-1/+1
| | | | | | | | Run "TZ=UTC0 admin/update-copyright".
* | ; Update version tags of defcustomsEli Zaretskii2024-12-221-0/+1
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | * admin/release-process: Expand on 'cusver-check'. * lisp/editorconfig.el (editorconfig-indentation-alist) (editorconfig-trim-whitespaces-mode): * lisp/eshell/em-cmpl.el (eshell-cmpl-remote-file-ignore): * lisp/eshell/esh-ext.el (eshell-explicit-remote-commands): * lisp/gnus/nnfeed.el (nnfeed-date-format): * lisp/net/newst-ticker.el (newsticker-ticker-period): * lisp/progmodes/cc-vars.el (c-warn-ids-with-dollar): * lisp/progmodes/cperl-mode.el (cperl-fontify-trailer): * lisp/progmodes/eglot.el (customize-package-emacs-version-alist) (eglot-events-buffer-config, eglot-confirm-server-edits) (eglot-prefer-plaintext): * lisp/progmodes/flymake.el (customize-package-emacs-version-alist): * lisp/progmodes/ruby-mode.el (ruby-rubocop-use-bundler): * lisp/progmodes/verilog-mode.el (verilog-indent-ignore-multiline-defines) (verilog-indent-ignore-regexp, verilog-indent-class-inside-pkg) (verilog-align-decl-expr-comments) (verilog-align-comment-distance, verilog-align-assign-expr) (verilog-align-typedef-regexp, verilog-align-typedef-words) (verilog-fontify-variables): * lisp/register.el (register-preview-display-buffer-alist): * lisp/vc/vc-annotate.el (vc-annotate-use-short-revision): Add missing :version tags and additions to 'customize-package-emacs-version-alist' as appropriate.
* Allow to go back to using 'ruby-mode' after loading 'ruby-ts-mode'Eli Zaretskii2024-11-281-0/+4
| | | | | | | | * lisp/progmodes/ruby-ts-mode.el (major-mode-remap-defaults): Remap 'ruby-mode' to 'ruby-ts-mode'. Add commentary. * lisp/progmodes/ruby-mode.el (major-mode-remap-defaults): Remove any remappings of ruby-mode'. * lisp/progmodes/c-ts-mode.el: Fix a typo in a comment. (Bug#74339)
* Add new option ruby-bracketed-args-indentAaron Jensen2024-09-021-0/+23
| | | | | | | | * lisp/progmodes/ruby-mode.el (ruby-bracketed-args-indent): New option. (ruby-smie-rules): Use it (bug#60321). * test/lisp/progmodes/ruby-mode-resources/ruby-bracketed-args-indent.rb: New file. * test/lisp/progmodes/ruby-mode-tests.el: Use it for new case.
* Checkdoc fixes in progmodesStefan Kangas2024-07-071-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/progmodes/cperl-mode.el (cperl-file-style) (cperl-continued-brace-offset, cperl-tips-faces): * lisp/progmodes/eglot.el (eglot-confirm-server-edits, eglot) (eglot-list-connections-mode, eglot--outstanding-inlay-hints-region) (eglot--outstanding-inlay-regions-timer): * lisp/progmodes/etags.el (etags-goto-tag-location) (etags--xref-apropos-additional): * lisp/progmodes/flymake.el (flymake-autoresize-margins): * lisp/progmodes/gdb-mi.el (gdb-mouse-until, gdb-mouse-jump): * lisp/progmodes/hideif.el (hif-parse-macro-arglist): * lisp/progmodes/idlw-help.el (idlwave-html-help-location): * lisp/progmodes/idlwave.el (idlwave-reserved-word-upcase): * lisp/progmodes/java-ts-mode.el (java-ts-mode--string-highlight-helper): * lisp/progmodes/js.el (js--chained-expression-p): * lisp/progmodes/pascal.el (pascal-mode, pascal-comment-area): * lisp/progmodes/python.el (python--treesit-fontify-union-types): * lisp/progmodes/ruby-mode.el (ruby-align-chained-calls) (ruby-block-indent, ruby-rubocop-use-bundler): * lisp/progmodes/rust-ts-mode.el (rust-ts-mode--prettify-symbols-compose-p): * lisp/progmodes/verilog-mode.el (verilog-cache-has-lisp) (verilog-auto-insert-lisp, verilog-highlight-region): * lisp/progmodes/xref.el (xref--get-history): Various checkdoc fixes.
* ruby-rubocop-use-bundler: New user optionDmitry Gutov2024-05-131-5/+21
| | | | | | | | * lisp/progmodes/ruby-mode.el (ruby-rubocop-use-bundler): New user option. (ruby-flymake-rubocop--use-bundler-p): Use it. * etc/NEWS: Mention it.
* Merge from savannah/emacs-29Po Lu2024-01-021-1/+1
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | dc4e6b13296 ; Update copyright years in more files 64b37776318 ; Run set-copyright from admin.el 8e1c56ae467 ; Add 2024 to copyright years # Conflicts: # doc/misc/modus-themes.org # doc/misc/texinfo.tex # etc/NEWS # etc/refcards/ru-refcard.tex # etc/themes/modus-operandi-theme.el # etc/themes/modus-themes.el # etc/themes/modus-vivendi-theme.el # lib/alloca.in.h # lib/binary-io.h # lib/c-ctype.h # lib/c-strcasecmp.c # lib/c-strncasecmp.c # lib/careadlinkat.c # lib/cloexec.c # lib/close-stream.c # lib/diffseq.h # lib/dup2.c # lib/filemode.h # lib/fpending.c # lib/fpending.h # lib/fsusage.c # lib/getgroups.c # lib/getloadavg.c # lib/gettext.h # lib/gettime.c # lib/gettimeofday.c # lib/group-member.c # lib/malloc.c # lib/md5-stream.c # lib/md5.c # lib/md5.h # lib/memmem.c # lib/memrchr.c # lib/nanosleep.c # lib/save-cwd.h # lib/sha1.c # lib/sig2str.c # lib/stdlib.in.h # lib/strtoimax.c # lib/strtol.c # lib/strtoll.c # lib/time_r.c # lib/xalloc-oversized.h # lisp/auth-source-pass.el # lisp/emacs-lisp/lisp-mnt.el # lisp/emacs-lisp/timer.el # lisp/info-look.el # lisp/jit-lock.el # lisp/loadhist.el # lisp/mail/rmail.el # lisp/net/ntlm.el # lisp/net/webjump.el # lisp/progmodes/asm-mode.el # lisp/progmodes/project.el # lisp/progmodes/sh-script.el # lisp/textmodes/flyspell.el # lisp/textmodes/reftex-toc.el # lisp/textmodes/reftex.el # lisp/textmodes/tex-mode.el # lisp/url/url-gw.el # m4/alloca.m4 # m4/clock_time.m4 # m4/d-type.m4 # m4/dirent_h.m4 # m4/dup2.m4 # m4/euidaccess.m4 # m4/fchmodat.m4 # m4/filemode.m4 # m4/fsusage.m4 # m4/getgroups.m4 # m4/getloadavg.m4 # m4/getrandom.m4 # m4/gettime.m4 # m4/gettimeofday.m4 # m4/gnulib-common.m4 # m4/group-member.m4 # m4/inttypes.m4 # m4/malloc.m4 # m4/manywarnings.m4 # m4/mempcpy.m4 # m4/memrchr.m4 # m4/mkostemp.m4 # m4/mktime.m4 # m4/nproc.m4 # m4/nstrftime.m4 # m4/pathmax.m4 # m4/pipe2.m4 # m4/pselect.m4 # m4/pthread_sigmask.m4 # m4/readlink.m4 # m4/realloc.m4 # m4/sig2str.m4 # m4/ssize_t.m4 # m4/stat-time.m4 # m4/stddef_h.m4 # m4/stdint.m4 # m4/stdio_h.m4 # m4/stdlib_h.m4 # m4/stpcpy.m4 # m4/strnlen.m4 # m4/strtoimax.m4 # m4/strtoll.m4 # m4/time_h.m4 # m4/timegm.m4 # m4/timer_time.m4 # m4/timespec.m4 # m4/unistd_h.m4 # m4/warnings.m4 # nt/configure.bat # nt/preprep.c # test/lisp/register-tests.el
| * ; Add 2024 to copyright yearsPo Lu2024-01-021-1/+1
| |
* | ruby-syntax-methods-before-regexp: Drop this whitelistDmitry Gutov2023-12-161-21/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/progmodes/ruby-mode.el (ruby-syntax-before-regexp-re): Match only based on keywords and operators. (ruby-syntax-methods-before-regexp): Delete. (ruby-syntax-propertize): Use the new heuristic based on spaces instead of checking for method names before (bug#67569). * test/lisp/progmodes/ruby-mode-tests.el (ruby-regexp-not-division-when-only-space-before): Use non-whitelisted method name. * test/lisp/progmodes/ruby-mode-resources/ruby.rb: Adjust two examples.
* | Merge from origin/emacs-29Eli Zaretskii2023-12-101-3/+9
|\ \ | |/ | | | | | | | | | | | | | | | | | | 2773cf9e013 ; Fix typos 020aff95fa3 ; Fix typos in ChangeLog files 5e03a621efc ; * lisp/progmodes/c-ts-mode.el (c-ts-mode--else-heuristi... f0734e1c0d1 Fix c-ts-mode indent heuristic (bug#67417) 08fc6bace20 Fix c-ts-mode indentation (bug#67357) 71bc2815ccd Add font-locking for hash-bang lines in typescript-ts-mode. db8347c8c87 Add font-locking for hash-bang lines in js-ts-mode 91f2ade57bb ruby-mode: Better detect regexp vs division (bug#67569)
| * ruby-mode: Better detect regexp vs division (bug#67569)Dmitry Gutov2023-12-091-3/+9
| | | | | | | | | | | | * lisp/progmodes/ruby-mode.el (ruby-syntax-before-regexp-re): Add grouping around methods from the whitelist. (ruby-syntax-propertize): Also look for spaces around the slash.
* | Fix a defcustom :typeMauro Aranda2023-10-121-1/+3
| | | | | | | | | | * lisp/progmodes/ruby-mode.el (ruby-insert-encoding-magic-comment): Allow always-utf8. (Bug#66498)
* | Register more Ruby files in auto-mode-alistStefan Kangas2023-08-031-2/+2
| | | | | | | | | | * lisp/progmodes/ruby-mode.el (auto-mode-alist): Add fastlane and Caxlsx files.
* | Don't hardcode ruby version in interpreter-mode-alistStefan Kangas2023-08-021-1/+1
| | | | | | | | | | | | * lisp/progmodes/ruby-mode.el (interpreter-mode-alist): Don't hardcode ruby version. This adds support for modern versions of Ruby like "ruby2.7", instead of the previously hardcoded "ruby1.9".
* | Merge from origin/emacs-29Eli Zaretskii2023-04-151-2/+2
|\ \ | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 864a4dc2363 Fix compilation of w32.c with old MinGW system headers a22eb9ae0f9 ruby-add-log-current-method: Reduce the use of 'nreverse' 17d803d0a75 Fix detection of WebP images by their signature 43290391ce2 ; Eglot: make version parseable by version-to-list 6e6e8b5c974 Add more documentation for the keys of `package-vc-select... 7972b76c2c7 ; vc-checkout: Wrap var lookup in 'bound-and-true-p' e9fef1d70ff vc-checkout: Try to use the vc-dir's backend first 372e024accd ; Fix wallpaper-tests on XFCE 7055fd8e43e Improve documentation related to 'ispell-complete-word' 61fd017abde * configure.ac: Add -lbsd on Haiku. 05971c4d9a4 Add menu to 'c-ts-mode' and 'c++-ts-mode' # Conflicts: # lisp/progmodes/eglot.el # lisp/progmodes/ruby-mode.el
| * ruby-add-log-current-method: Reduce the use of 'nreverse'Dmitry Gutov2023-04-131-2/+2
| | | | | | | | | | | | | | | | | | * lisp/progmodes/ruby-mode.el (ruby-add-log-current-method): Reduce the use of 'nreverse' (bug#62761). * test/lisp/progmodes/ruby-mode-tests.el (ruby-add-log-current-method-singleton-referencing-outer): New test.
* | Remove ineffective uses of condition-caseMattias EngdegÄrd2023-03-031-87/+86
|/ | | | | | | | | * lisp/gnus/message.el (message-setup-1): * lisp/progmodes/cc-engine.el (c-forward-single-comment): * lisp/progmodes/ruby-mode.el (ruby-add-log-current-method): Eliminate uses of condition-case without handlers. These seem to have been there for quite a long time. This change does not affect the behaviour of the code and makes some warnings go away.
* ruby-mode: Fix method call indentation in rhs of multiple assignmentDmitry Gutov2023-02-281-5/+8
| | | | | | | * lisp/progmodes/ruby-mode.el (ruby-smie-rules): Special-case assignment that follows a comma-separated list (bug#61871). * test/lisp/progmodes/ruby-mode-resources/ruby.rb: Add case.
* ruby-smie-rules: Fix misindentation of a method call after assignmentDmitry Gutov2023-02-271-1/+3
| | | | | | | | | * lisp/progmodes/ruby-mode.el (ruby-smie-rules): Fix indentation of a method call after assignment with ruby-after-operator-indent=nil (bug#61822). * test/lisp/progmodes/ruby-mode-resources/ruby-after-operator-indent.rb: Add corresponding example.
* ruby-mode.el: Expand some docstrings with examplesDmitry Gutov2023-01-221-3/+25
| | | | | * lisp/progmodes/ruby-mode.el (ruby-align-chained-calls) (ruby-method-params-indent): Expand docstrings with examples.
* ruby-ts-mode: Highlight builtin methodsDmitry Gutov2023-01-201-73/+77
| | | | | | | | | | | | | | | | | | | * lisp/progmodes/ruby-mode.el (ruby-builtin-methods-with-reqs) (ruby-builtin-methods-no-reqs): New constants, extracted. (ruby-font-lock-keywords): Replace values with references. * lisp/progmodes/ruby-ts-mode.el (ruby-ts--builtin-methods): New variable. Construct regexp from aforementioned constants' values. * lisp/progmodes/ruby-ts-mode.el (ruby-ts--font-lock-settings): Use it. * lisp/progmodes/ruby-ts-mode.el (ruby-ts-mode): Add new font-lock feature: builtin-functions. * lisp/progmodes/ruby-ts-mode.el (ruby-ts--predefined-constants) (ruby-ts--predefined-variables): Unrelated to the rest of the patch, add string-start and string-end anchors.
* ruby-toggle-block: Fix in ruby-ts-modeDmitry Gutov2023-01-191-1/+1
| | | | | * lisp/progmodes/ruby-mode.el (ruby-toggle-block): Make it work with ruby-ts-mode. ruby-forward-sexp checks ruby-use-smie.
* Extract common code into ruby-base-mode to derive fromDmitry Gutov2023-01-031-27/+34
| | | | | | | | | | | | * lisp/progmodes/ruby-mode.el (ruby-base-mode): New major base mode, to set up common vars and hooks. (ruby-mode-variables): Delete. Move most code to ruby-base-mode. And some -- to ruby-mode body. (ruby-mode): Derive from ruby-base-mode. Also move some setup to there. * lisp/progmodes/ruby-ts-mode.el (ruby-ts-mode): Derive from ruby-base-mode. Remove duplicating settings.
* ; Add 2023 to copyright years.Eli Zaretskii2023-01-011-1/+1
|
* Add version tags and mention the new options in NEWSDmitry Gutov2022-12-311-4/+8
| | | | | | | | * etc/NEWS: Mention the new options (bug#60186). * lisp/progmodes/ruby-mode.el (ruby-block-indent) (ruby-after-operator-indent, ruby-method-call-indent) (ruby-parenless-call-arguments-indent): Add version tags.
* Add new options for Ruby code indentationDmitry Gutov2022-12-311-17/+124
| | | | | | | | | | | | | | | | | | * lisp/progmodes/ruby-mode.el (ruby-block-indent) (ruby-after-operator-indent, ruby-method-call-indent) (ruby-parenless-call-arguments-indent): New options (bug#60186). (ruby-smie-grammar): Specify associativity for "?". (ruby-smie--indent-to-stmt): Add optional argument. * test/lisp/progmodes/ruby-mode-resources/ruby.rb: New cases. * test/lisp/progmodes/ruby-mode-resources/ruby-method-call-indent.rb: * test/lisp/progmodes/ruby-mode-resources/ruby-block-indent.rb: * test/lisp/progmodes/ruby-mode-resources/ruby-after-operator-indent.rb: * test/lisp/progmodes/ruby-mode-resources/ ruby-parenless-call-arguments-indent.rb: New files. * test/lisp/progmodes/ruby-mode-tests.el: Add indentation tests for new files.
* Fix ruby-mode.el local command injection vulnerability (bug#60268)Xi Lu2022-12-241-1/+1
| | | | | * lisp/progmodes/ruby-mode.el (ruby-find-library-file): Fix local command injection vulnerability.
* ; Fix ruby-method-params-indent's :version valueDmitry Gutov2022-12-201-1/+1
|
* ruby-method-params-indent: New user optionDmitry Gutov2022-12-191-3/+23
| | | | | | | | | | | | | | | | | | | | * lisp/progmodes/ruby-mode.el (ruby-method-params-indent): New option (bug#60110). (ruby-smie-rules): Use it. * etc/NEWS: Mention it. * test/lisp/progmodes/ruby-mode-resources/ruby.rb: Ensure the var's value is default. * test/lisp/progmodes/ruby-mode-resources/ruby-method-params-indent.rb: New file. * test/lisp/progmodes/ruby-mode-tests.el (ruby-deftest-indent): New macro, use it to run the indentation test using the new file. Disable the :expensive-test tag, because neither runs for "longer than some few seconds", both take significantly below 1s.
* ; ruby-indent-level: Improve the docstringDmitry Gutov2022-12-191-1/+1
|
* ruby-mode: Support endless singleton method definitions tooDmitry Gutov2022-12-191-1/+2
| | | | | | | | * lisp/progmodes/ruby-mode.el (ruby-endless-method-head-re): Update to match not only 'self.' but 'xyz.' as well (bug#54702). * test/lisp/progmodes/ruby-mode-resources/ruby.rb (Bar#foo=): Update example.
* ruby-mode: Support endless methods (bug#54702)Dmitry Gutov2022-12-181-2/+26
| | | | | | | | | | | | | | | * lisp/progmodes/ruby-mode.el (ruby-endless-method-head-re): New constant. (ruby-smie-grammar): New token. (ruby-smie--forward-token, ruby-smie--backward-token): Recognize it. (ruby-smie-rules): Indentation support. (ruby-add-log-current-method): Support here too. * test/lisp/progmodes/ruby-mode-tests.el (ruby-add-log-current-method-after-endless-method): New test. * test/lisp/progmodes/ruby-mode-resources/ruby.rb: New examples.
* ruby-mode: Recognize instance or global var as first arg in parenless callDmitry Gutov2022-12-171-1/+1
| | | | | | | * lisp/progmodes/ruby-mode.el (ruby-smie--args-separator-p): Recognize instance or global var as first arg in parenless call. * test/lisp/progmodes/ruby-mode-resources/ruby.rb: Add example.
* Fix end-of-defun in ruby-modeDmitry Gutov2022-12-171-3/+4
| | | | | * lisp/progmodes/ruby-mode.el (ruby-beginning-of-defun): Return t in case of success.
* Fix ruby-add-log-current-method after nested class definitionDmitry Gutov2022-12-151-7/+31
| | | | | | | | | | | | | | | * lisp/progmodes/ruby-mode.el (ruby--add-log-current-indent): New function. (ruby-add-log-current-method): Use it. Check for "class" and "module" indentation to filter out the definitions which don't include the given position. Also try to match "def" only once (for performance), because if the closest one doesn't include the given position, none will. * test/lisp/progmodes/ruby-mode-tests.el (ruby-add-log-current-method-after-inner-class-outside-methods) (ruby-add-log-current-method-after-inner-class-outside-methods-with-text): New tests.
* Pacify recent unused/ignored lexvar warningsBasil L. Contovounesios2022-10-261-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | Lexvars with special names like 'ignored' or 'unused' are no longer treated specially. * lisp/ansi-color.el (ansi-color-process-output): * lisp/cus-edit.el (customize-apropos-options): * lisp/cus-theme.el (customize-create-theme): * lisp/dired-aux.el (dired-hide-all): * lisp/emacs-lisp/crm.el (crm--choose-completion-string): * lisp/emacs-lisp/tabulated-list.el (tabulated-list-revert): * lisp/ido.el (ido-choose-completion-string): * lisp/international/mule-diag.el (describe-font-internal): * lisp/mail/sendmail.el (sendmail-user-agent-compose): * lisp/progmodes/fortran.el (fortran-uncomment-region): * lisp/progmodes/prolog.el (prolog-inferior-guess-flavor): * lisp/progmodes/ruby-mode.el (ruby-indent-line, ruby-indent-exp): * lisp/url/url.el (url-mm-callback): * lisp/xwidget.el (xwidget-webkit-history-reload): Prepend an underscore to unused function parameter names. * lisp/emacs-lisp/cconv.el (cconv--dummy-var): Remove unused constant. * lisp/files.el (hack-local-variables-filter): Remove unused lexvar.
* Make point-at-eol and point-at-bol obsoleteStefan Kangas2022-08-231-2/+2
| | | | | | | * lisp/subr.el (point-at-eol, point-at-bol): Make XEmacs compat aliases obsolete in favor of `pos-bol'/'line-beginning-position' or 'pos-eol'/'line-end-position'. Update callers. Ref: https://lists.gnu.org/r/emacs-devel/2022-08/msg00853.html
* * lisp/progmodes/ruby-mode.el (ruby-mode): Set outline-regexp, outline-level.Juri Linkov2022-07-081-0/+7
| | | | Suggested by Yilkal Argaw <yilkalargawworkneh@gmail.com>.
* Fix Ruby indentation with double splat as first block paramDmitry Gutov2022-04-261-2/+2
| | | | | | * lisp/progmodes/ruby-mode.el (ruby-smie--forward-token) (ruby-smie--backward-token): Tokenize "**" separately from "|". Problem reported at https://github.com/dgutov/robe/issues/136.