unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#60110: 29.0.60; ruby-mode method parameter alignment
@ 2022-12-16  5:04 Aaron Jensen
  2022-12-18 22:32 ` Dmitry Gutov
  0 siblings, 1 reply; 13+ messages in thread
From: Aaron Jensen @ 2022-12-16  5:04 UTC (permalink / raw)
  To: 60110


Currently, ruby-mode smie indents method parameters like this:

def some_method(
    some_arg,
    some_other_arg
  )
end

def self.some_method(
      some_arg,
      some_other_arg
    )
end


I would prefer to be able to indent them like this:

def some_method(
  some_arg,
  some_other_arg
)
end

def self.some_method(
  some_arg,
  some_other_arg
)
end

Rubocop has two rules that govern this behavior:

Layout/FirstParameterIndentation: consistent
https://docs.rubocop.org/rubocop/1.40/cops_layout.html#layoutfirstparameterindentation

Layout/ParameterAlignment: with_first_parameter and
with_fixed_indentation would both work. I don't have a strong opinion on
this, because I usually break after a ( if I am going to put parameters
on their own line. Leaving the first one on the same line as the method
name is not as scannable.
https://docs.rubocop.org/rubocop/1.40/cops_layout.html#layoutparameteralignment


In GNU Emacs 29.0.60 (build 1, aarch64-apple-darwin22.1.0, NS
 appkit-2299.00 Version 13.0.1 (Build 22A400)) of 2022-12-10 built on
 Aarons-Laptop.local
Windowing system distributor 'Apple', version 10.3.2299
System Description:  macOS 13.1

Configured using:
 'configure --disable-dependency-tracking --disable-silent-rules
 --enable-locallisppath=/opt/homebrew/share/emacs/site-lisp
 --infodir=/opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/info/emacs
 --prefix=/opt/homebrew/Cellar/emacs-plus@29/29.0.60 --with-xml2
 --with-gnutls --with-native-compilation --without-compress-install
 --without-dbus --without-imagemagick --with-modules --with-rsvg
 --with-ns --disable-ns-self-contained 'CFLAGS=-Os -w -pipe
 -mmacosx-version-min=13
 -isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX13.sdk
 -DFD_SETSIZE=10000 -DDARWIN_UNLIMITED_SELECT'
 'CPPFLAGS=-I/opt/homebrew/opt/zlib/include
 -I/opt/homebrew/opt/jpeg/include -I/opt/homebrew/opt/icu4c/include
 -I/opt/homebrew/opt/openssl@1.1/include
 -I/opt/homebrew/opt/readline/include -isystem/opt/homebrew/include
 -F/opt/homebrew/Frameworks
 -isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX13.sdk'
 'LDFLAGS=-L/opt/homebrew/opt/zlib/lib -L/opt/homebrew/opt/jpeg/lib
 -L/opt/homebrew/opt/icu4c/lib -L/opt/homebrew/opt/openssl@1.1/lib
 -L/opt/homebrew/opt/readline/lib -L/opt/homebrew/lib
 -F/opt/homebrew/Frameworks -Wl,-headerpad_max_install_names
 -isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX13.sdk''

Configured features:
ACL GIF GLIB GMP GNUTLS JPEG JSON LCMS2 LIBXML2 MODULES NATIVE_COMP
NOTIFY KQUEUE NS PDUMPER PNG RSVG SQLITE3 THREADS TIFF
TOOLKIT_SCROLL_BARS TREE_SITTER WEBP XIM ZLIB

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

Major mode: Ruby

Minor modes in effect:
  treemacs-filewatch-mode: t
  treemacs-follow-mode: t
  treemacs-git-mode: t
  treemacs-fringe-indicator-mode: t
  eval-sexp-fu-flash-mode: t
  eros-mode: t
  speed-of-thought-mode: t
  global-anzu-mode: t
  anzu-mode: t
  global-evil-mc-mode: t
  evil-mc-mode: t
  global-git-commit-mode: t
  transient-posframe-mode: t
  corfu-history-mode: t
  envrc-mode: t
  global-evil-surround-mode: t
  evil-surround-mode: t
  evil-matchit-mode: t
  evil-vimish-fold-mode: t
  vimish-fold-mode: t
  dtrt-indent-mode: t
  electric-pair-mode: t
  inf-ruby-minor-mode: t
  org-roam-db-autosync-mode: t
  global-undo-fu-session-mode: t
  undo-fu-session-mode: t
  ws-butler-global-mode: t
  ws-butler-mode: t
  global-flycheck-mode: t
  flycheck-mode: t
  global-auto-revert-mode: t
  savehist-mode: t
  yas-global-mode: t
  yas-minor-mode: t
  mini-frame-mode: t
  which-key-posframe-mode: t
  which-key-mode: t
  gcmh-mode: t
  save-place-mode: t
  tabspaces-mode: t
  winner-mode: t
  recentf-mode: t
  better-jumper-mode: t
  better-jumper-local-mode: t
  repeat-mode: t
  server-mode: t
  vertico-mouse-mode: t
  vertico-mode: t
  +popup-mode: t
  shell-dirtrack-mode: t
  evil-mode: t
  evil-local-mode: t
  windmove-mode: t
  ns-auto-titlebar-mode: t
  nano-modeline-mode: t
  leader-key-leader-override-mode: t
  global-leader-key-leader-override-mode: t
  delete-selection-mode: t
  pixel-scroll-precision-mode: t
  xterm-mouse-mode: t
  override-global-mode: t
  straight-use-package-mode: t
  straight-package-neutering-mode: t
  global-display-line-numbers-mode: t
  display-line-numbers-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tab-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  window-divider-mode: t
  line-number-mode: t
  auto-fill-function: yas--auto-fill
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
/Users/aaronjensen/.emacs.d/straight/build/ivy/elpa hides /Users/aaronjensen/.emacs.d/straight/build/lispy/elpa
/Users/aaronjensen/.emacs.d/straight/build/transient/transient hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/transient
/Users/aaronjensen/.emacs.d/straight/build/use-package/use-package-jump hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/use-package/use-package-jump
/Users/aaronjensen/.emacs.d/straight/build/use-package/use-package-diminish hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/use-package/use-package-diminish
/Users/aaronjensen/.emacs.d/straight/build/use-package/use-package hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/use-package/use-package
/Users/aaronjensen/.emacs.d/straight/build/use-package/use-package-delight hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/use-package/use-package-delight
/Users/aaronjensen/.emacs.d/straight/build/use-package/use-package-lint hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/use-package/use-package-lint
/Users/aaronjensen/.emacs.d/straight/build/bind-key/bind-key hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/use-package/bind-key
/Users/aaronjensen/.emacs.d/straight/build/use-package/use-package-core hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/use-package/use-package-core
/Users/aaronjensen/.emacs.d/straight/build/use-package/use-package-ensure hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/use-package/use-package-ensure
/Users/aaronjensen/.emacs.d/straight/build/use-package/use-package-bind-key hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/use-package/use-package-bind-key
/Users/aaronjensen/.emacs.d/straight/build/org/ob-comint hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-comint
/Users/aaronjensen/.emacs.d/straight/build/org/ob-exp hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-exp
/Users/aaronjensen/.emacs.d/straight/build/org/org-ctags hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/org-ctags
/Users/aaronjensen/.emacs.d/straight/build/org/ob-emacs-lisp hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-emacs-lisp
/Users/aaronjensen/.emacs.d/straight/build/org/oc hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/oc
/Users/aaronjensen/.emacs.d/straight/build/org/ox-texinfo hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ox-texinfo
/Users/aaronjensen/.emacs.d/straight/build/org/ol-irc hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ol-irc
/Users/aaronjensen/.emacs.d/straight/build/org/ol-doi hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ol-doi
/Users/aaronjensen/.emacs.d/straight/build/org/ob hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob
/Users/aaronjensen/.emacs.d/straight/build/org/org-refile hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/org-refile
/Users/aaronjensen/.emacs.d/straight/build/org/org-version hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/org-version
/Users/aaronjensen/.emacs.d/straight/build/org/org-num hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/org-num
/Users/aaronjensen/.emacs.d/straight/build/org/ol-mhe hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ol-mhe
/Users/aaronjensen/.emacs.d/straight/build/org/ob-shell hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-shell
/Users/aaronjensen/.emacs.d/straight/build/org/org-attach hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/org-attach
/Users/aaronjensen/.emacs.d/straight/build/org/ob-C hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-C
/Users/aaronjensen/.emacs.d/straight/build/org/org-macs hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/org-macs
/Users/aaronjensen/.emacs.d/straight/build/org/org-entities hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/org-entities
/Users/aaronjensen/.emacs.d/straight/build/org/ob-dot hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-dot
/Users/aaronjensen/.emacs.d/straight/build/org/ob-sql hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-sql
/Users/aaronjensen/.emacs.d/straight/build/org/ol-eww hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ol-eww
/Users/aaronjensen/.emacs.d/straight/build/org/org-datetree hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/org-datetree
/Users/aaronjensen/.emacs.d/straight/build/org/org-macro hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/org-macro
/Users/aaronjensen/.emacs.d/straight/build/org/ob-eval hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-eval
/Users/aaronjensen/.emacs.d/straight/build/org/ob-haskell hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-haskell
/Users/aaronjensen/.emacs.d/straight/build/org/ox-org hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ox-org
/Users/aaronjensen/.emacs.d/straight/build/org/ol-rmail hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ol-rmail
/Users/aaronjensen/.emacs.d/straight/build/org/ob-awk hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-awk
/Users/aaronjensen/.emacs.d/straight/build/org/ob-groovy hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-groovy
/Users/aaronjensen/.emacs.d/straight/build/org/ox-icalendar hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ox-icalendar
/Users/aaronjensen/.emacs.d/straight/build/org/ob-octave hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-octave
/Users/aaronjensen/.emacs.d/straight/build/org/ob-scheme hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-scheme
/Users/aaronjensen/.emacs.d/straight/build/org/org-mobile hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/org-mobile
/Users/aaronjensen/.emacs.d/straight/build/org/ob-processing hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-processing
/Users/aaronjensen/.emacs.d/straight/build/org/oc-biblatex hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/oc-biblatex
/Users/aaronjensen/.emacs.d/straight/build/org/oc-csl hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/oc-csl
/Users/aaronjensen/.emacs.d/straight/build/org/org-colview hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/org-colview
/Users/aaronjensen/.emacs.d/straight/build/org/ob-R hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-R
/Users/aaronjensen/.emacs.d/straight/build/org/org-table hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/org-table
/Users/aaronjensen/.emacs.d/straight/build/org/ox-html hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ox-html
/Users/aaronjensen/.emacs.d/straight/build/org/ob-fortran hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-fortran
/Users/aaronjensen/.emacs.d/straight/build/org/ol hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ol
/Users/aaronjensen/.emacs.d/straight/build/org/ob-plantuml hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-plantuml
/Users/aaronjensen/.emacs.d/straight/build/org/ol-docview hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ol-docview
/Users/aaronjensen/.emacs.d/straight/build/org/ob-perl hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-perl
/Users/aaronjensen/.emacs.d/straight/build/org/ob-sqlite hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-sqlite
/Users/aaronjensen/.emacs.d/straight/build/org/oc-basic hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/oc-basic
/Users/aaronjensen/.emacs.d/straight/build/org/ob-sed hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-sed
/Users/aaronjensen/.emacs.d/straight/build/org/org-fold-core hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/org-fold-core
/Users/aaronjensen/.emacs.d/straight/build/org/ob-ditaa hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-ditaa
/Users/aaronjensen/.emacs.d/straight/build/org/ob-ruby hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-ruby
/Users/aaronjensen/.emacs.d/straight/build/org/oc-bibtex hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/oc-bibtex
/Users/aaronjensen/.emacs.d/straight/build/org/org-habit hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/org-habit
/Users/aaronjensen/.emacs.d/straight/build/org/org-loaddefs hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/org-loaddefs
/Users/aaronjensen/.emacs.d/straight/build/org/ol-gnus hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ol-gnus
/Users/aaronjensen/.emacs.d/straight/build/org/ob-screen hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-screen
/Users/aaronjensen/.emacs.d/straight/build/org/org-mouse hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/org-mouse
/Users/aaronjensen/.emacs.d/straight/build/org/ob-css hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-css
/Users/aaronjensen/.emacs.d/straight/build/org/org-inlinetask hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/org-inlinetask
/Users/aaronjensen/.emacs.d/straight/build/org/ob-lisp hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-lisp
/Users/aaronjensen/.emacs.d/straight/build/org/ol-eshell hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ol-eshell
/Users/aaronjensen/.emacs.d/straight/build/org/org-pcomplete hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/org-pcomplete
/Users/aaronjensen/.emacs.d/straight/build/org/org-lint hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/org-lint
/Users/aaronjensen/.emacs.d/straight/build/org/org-id hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/org-id
/Users/aaronjensen/.emacs.d/straight/build/org/org-capture hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/org-capture
/Users/aaronjensen/.emacs.d/straight/build/org/ob-sass hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-sass
/Users/aaronjensen/.emacs.d/straight/build/org/ob-tangle hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-tangle
/Users/aaronjensen/.emacs.d/straight/build/org/ob-calc hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-calc
/Users/aaronjensen/.emacs.d/straight/build/org/ob-java hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-java
/Users/aaronjensen/.emacs.d/straight/build/org/org-compat hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/org-compat
/Users/aaronjensen/.emacs.d/straight/build/org/org-attach-git hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/org-attach-git
/Users/aaronjensen/.emacs.d/straight/build/org/ox-beamer hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ox-beamer
/Users/aaronjensen/.emacs.d/straight/build/org/org-protocol hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/org-protocol
/Users/aaronjensen/.emacs.d/straight/build/org/org-element hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/org-element
/Users/aaronjensen/.emacs.d/straight/build/org/ob-lob hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-lob
/Users/aaronjensen/.emacs.d/straight/build/org/org-tempo hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/org-tempo
/Users/aaronjensen/.emacs.d/straight/build/org/ob-python hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-python
/Users/aaronjensen/.emacs.d/straight/build/org/ob-latex hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-latex
/Users/aaronjensen/.emacs.d/straight/build/org/ol-w3m hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ol-w3m
/Users/aaronjensen/.emacs.d/straight/build/org/org-agenda hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/org-agenda
/Users/aaronjensen/.emacs.d/straight/build/org/org-persist hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/org-persist
/Users/aaronjensen/.emacs.d/straight/build/org/ob-ocaml hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-ocaml
/Users/aaronjensen/.emacs.d/straight/build/org/ob-ref hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-ref
/Users/aaronjensen/.emacs.d/straight/build/org/org-fold hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/org-fold
/Users/aaronjensen/.emacs.d/straight/build/org/ob-julia hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-julia
/Users/aaronjensen/.emacs.d/straight/build/org/ob-lilypond hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-lilypond
/Users/aaronjensen/.emacs.d/straight/build/org/ob-table hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-table
/Users/aaronjensen/.emacs.d/straight/build/org/ob-clojure hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-clojure
/Users/aaronjensen/.emacs.d/straight/build/org/org-indent hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/org-indent
/Users/aaronjensen/.emacs.d/straight/build/org/org-plot hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/org-plot
/Users/aaronjensen/.emacs.d/straight/build/org/ox-latex hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ox-latex
/Users/aaronjensen/.emacs.d/straight/build/org/org-src hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/org-src
/Users/aaronjensen/.emacs.d/straight/build/org/org-duration hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/org-duration
/Users/aaronjensen/.emacs.d/straight/build/org/ob-makefile hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-makefile
/Users/aaronjensen/.emacs.d/straight/build/org/ol-info hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ol-info
/Users/aaronjensen/.emacs.d/straight/build/org/org-clock hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/org-clock
/Users/aaronjensen/.emacs.d/straight/build/org/ob-forth hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-forth
/Users/aaronjensen/.emacs.d/straight/build/org/ox-odt hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ox-odt
/Users/aaronjensen/.emacs.d/straight/build/org/ol-man hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ol-man
/Users/aaronjensen/.emacs.d/straight/build/org/ox-publish hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ox-publish
/Users/aaronjensen/.emacs.d/straight/build/org/org-archive hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/org-archive
/Users/aaronjensen/.emacs.d/straight/build/org/ob-org hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-org
/Users/aaronjensen/.emacs.d/straight/build/org/ob-lua hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-lua
/Users/aaronjensen/.emacs.d/straight/build/org/org-keys hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/org-keys
/Users/aaronjensen/.emacs.d/straight/build/org/ob-eshell hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-eshell
/Users/aaronjensen/.emacs.d/straight/build/org/org-faces hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/org-faces
/Users/aaronjensen/.emacs.d/straight/build/org/ox-man hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ox-man
/Users/aaronjensen/.emacs.d/straight/build/org/org-list hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/org-list
/Users/aaronjensen/.emacs.d/straight/build/org/ox-md hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ox-md
/Users/aaronjensen/.emacs.d/straight/build/org/org-goto hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/org-goto
/Users/aaronjensen/.emacs.d/straight/build/org/ol-bbdb hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ol-bbdb
/Users/aaronjensen/.emacs.d/straight/build/org/org hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/org
/Users/aaronjensen/.emacs.d/straight/build/org/ol-bibtex hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ol-bibtex
/Users/aaronjensen/.emacs.d/straight/build/org/ox-koma-letter hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ox-koma-letter
/Users/aaronjensen/.emacs.d/straight/build/org/ox-ascii hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ox-ascii
/Users/aaronjensen/.emacs.d/straight/build/org/ob-matlab hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-matlab
/Users/aaronjensen/.emacs.d/straight/build/org/ox hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ox
/Users/aaronjensen/.emacs.d/straight/build/org/org-timer hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/org-timer
/Users/aaronjensen/.emacs.d/straight/build/org/oc-natbib hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/oc-natbib
/Users/aaronjensen/.emacs.d/straight/build/org/ob-core hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-core
/Users/aaronjensen/.emacs.d/straight/build/org/org-feed hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/org-feed
/Users/aaronjensen/.emacs.d/straight/build/org/ob-gnuplot hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-gnuplot
/Users/aaronjensen/.emacs.d/straight/build/org/ob-js hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-js
/Users/aaronjensen/.emacs.d/straight/build/org/org-footnote hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/org-footnote
/Users/aaronjensen/.emacs.d/straight/build/org/ob-maxima hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/ob-maxima
/Users/aaronjensen/.emacs.d/straight/build/org/org-cycle hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/org-cycle
/Users/aaronjensen/.emacs.d/straight/build/org/org-crypt hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/org/org-crypt
/Users/aaronjensen/.emacs.d/straight/build/let-alist/let-alist hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/emacs-lisp/let-alist
/Users/aaronjensen/.emacs.d/straight/build/eldoc/eldoc hides /opt/homebrew/Cellar/emacs-plus@29/29.0.60/share/emacs/29.0.60/lisp/emacs-lisp/eldoc

Features:
(shadow magit-gitignore evil-collection-dired evil-collection-profiler
profiler ace-window evil-collection-ibuffer ibuffer ibuffer-loaddefs
consult-git-commit evil-nerd-commenter evil-nerd-commenter-operator
evil-nerd-commenter-sdk mail-extr tramp-cmds lispyville magit-extras
multi-vterm evil-collection-vterm vterm tramp tramp-integration
tramp-compat term hippie-exp novice time-stamp editorconfig
editorconfig-core editorconfig-core-handle editorconfig-fnmatch nvm
iter2 consult-xref dumb-jump popup semantic/ia semantic/analyze/refs
semantic/db-find semantic/db-ref semantic/senator semantic/decorate
semantic/analyze semantic/sort semantic/scope semantic/analyze/fcn
semantic/db eieio-base semantic/ctxt semantic/format ezimage
semantic/tag-ls semantic/find semantic/util-modes semantic/util semantic
semantic/tag cedet find-dired evil-collection-ediff ediff ediff-merg
ediff-mult ediff-wind ediff-diff ediff-help ediff-init ediff-util
ztree-diff ztree-diff-model ztree-view ztree-protocol ztree-util
terraform-mode hcl-mode evil-matchit-ruby evil-matchit-simple
evil-matchit-prog evil-matchit evil-matchit-sdk semantic/lex semantic/fw
wdired cfrs descr-text emmet-mode cl web-mode typescript-mode rng-xsd
xsd-regexp rng-cmpct rng-nxml rng-valid nxml-mode nxml-outln nxml-rap
org-drill persist timezone cal-move speeddating proced haml-mode
css-mode sgml-mode facemenu copy-as-format tabify
evil-collection-helpful helpful cc-langs trace info-look elisp-refs
lua-mode sql conf-mode json-mode json-snatcher js cc-mode cc-fonts
cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs
sort dabbrev company-rg company emacsbug org-clock diary-lib
diary-loaddefs lsp-diagnostics lsp-modeline lsp-lens lsp-ui
lsp-ui-flycheck lsp-ui-doc goto-addr lsp-ui-imenu lsp-ui-peek
lsp-ui-sideline lsp-ui-util lsp-zig lsp-steep lsp-svelte lsp-sqls
lsp-ruby-syntax-tree lsp-yaml lsp-xml lsp-vimscript lsp-vhdl image-file
image-converter lsp-volar lsp-vetur lsp-html lsp-verilog lsp-vala lsp-v
lsp-typeprof lsp-ttcn3 lsp-toml lsp-terraform lsp-tex lsp-sorbet
lsp-solargraph lsp-rust lsp-rf lsp-remark lsp-racket lsp-r
lsp-purescript lsp-pylsp lsp-pyls lsp-pwsh lsp-php lsp-pls
lsp-perlnavigator lsp-perl lsp-openscad lsp-ocaml lsp-magik lsp-nix
lsp-nim lsp-nginx lsp-mint lsp-marksman lsp-markdown lsp-lua lsp-kotlin
lsp-json lsp-javascript lsp-idris lsp-haxe lsp-groovy lsp-hack
lsp-graphql lsp-gleam lsp-go lsp-completion lsp-gdscript lsp-fsharp
lsp-fortran lsp-eslint lsp-erlang lsp-emmet lsp-elixir lsp-elm
lsp-dockerfile lsp-dhall lsp-d lsp-css lsp-csharp lsp-crystal lsp-cmake
lsp-clojure lsp-semantic-tokens lsp-clangd lsp-beancount lsp-bash
lsp-astro lsp-ansible lsp-angular lsp-ada lsp-actionscript lsp-mode
lsp-protocol spinner network-stream yaml-mode epa-file tramp-loaddefs
trampver cus-start ls-lisp ehelp vterm-module term/xterm xterm vc-hg
vc-bzr vc-src vc-sccs vc-cvs vc-rcs log-view bug-reference wgrep grep
embark-consult embark python ffap treemacs-magit treemacs-evil
doom-themes-ext-treemacs doom-themes doom-themes-base treemacs-tab-bar
treemacs-all-the-icons all-the-icons all-the-icons-faces data-material
data-weathericons data-octicons data-fileicons data-faicons
data-alltheicons treemacs treemacs-header-line treemacs-compatibility
treemacs-mode treemacs-bookmarks treemacs-tags treemacs-interface
treemacs-persistence treemacs-filewatch-mode treemacs-follow-mode
treemacs-rendering treemacs-annotations treemacs-async
treemacs-workspaces treemacs-dom treemacs-visuals
treemacs-fringe-indicator treemacs-scope pulse treemacs-faces
treemacs-icons treemacs-themes treemacs-core-utils pfuture inline
hl-line ht treemacs-logging treemacs-customization treemacs-macros
markdown-mode eval-sexp-fu eros lispy lispy-inline avy etags fileloop
evil-collection-edebug edebug lispy-tags mode-local zoutline elisp-def
ert ewoc evil-collection-debug debug backtrace evil-collection-xref xref
sotlisp skeleton consult-vertico consult compat-28 magit-bookmark
bookmark sh-script view org-appear orgonomic org-indent org-superstar
form-feed org-journal org-crypt cal-iso evil-terminal-cursor-changer
evil-anzu anzu oc-basic ol-eww eww url-queue mm-url ol-rmail ol-mhe
ol-irc ol-info ol-gnus nnselect gnus-art mm-uu mml2015 mm-view mml-smime
smime evil-mc evil-mc-command-execute evil-mc-command-record
evil-mc-cursor-make evil-mc-region evil-mc-cursor-state evil-mc-undo
evil-mc-vars evil-mc-known-commands evil-mc-common magit-delta
xterm-color evil-collection-magit magit-submodule magit-obsolete
magit-blame magit-stash magit-reflog magit-bisect magit-push magit-pull
magit-fetch magit-clone magit-remote magit-commit magit-sequence
magit-notes magit-worktree magit-tag magit-merge magit-branch
magit-reset magit-files magit-refs magit-status magit package
url-handlers magit-repos magit-apply magit-wip magit-log which-func
magit-diff smerge-mode diff git-commit log-edit pcvs-util add-log
magit-core magit-autorevert magit-margin magit-transient magit-process
with-editor magit-mode transient-posframe transient magit-git magit-base
crm tree-sitter-langs tree-sitter-langs-build tar-mode
evil-collection-arc-mode arc-mode archive-mode tree-sitter-hl
tree-sitter tree-sitter-load tree-sitter-cli tsc tsc-dyn tsc-dyn-get
dired-aux tsc-obsolete cape corfu-history corfu evil-ruby-text-objects
ruby-refactor envrc inheritenv evil-surround evil-matchit-evil-setup
evil-vimish-fold vimish-fold f f-shortdoc shortdoc dtrt-indent elec-pair
help-fns radix-tree bundler inf-ruby ruby-mode compile enh-ruby-mode
color gnutls vc-git diff-mode dig gnus-sum shr pixel-fill kinsoku
url-file svg dom browse-url gnus-group gnus-undo gnus-start gnus-dbus
dbus xml gnus-cloud nnimap nnmail mail-source utf7 nnoo parse-time
gnus-spec gnus-int gnus-range message sendmail yank-media rfc822 mml
mml-sec epa epg rfc6068 epg-config mm-decode mm-bodies mm-encode
mailabbrev gmm-utils mailheader gnus-win gnus nnheader gnus-util
text-property-search mail-utils range ol-docview doc-view jka-compr
image-mode exif ol-bibtex bibtex iso8601 ol-bbdb ol-w3m ol-doi
org-link-doi imenu ox-odt rng-loc rng-uri rng-parse rng-match rng-dt
rng-util rng-pttrn nxml-parse nxml-ns nxml-enc xmltok nxml-util ox-latex
ox-icalendar org-agenda ox-ascii ox-gfm ox-md ox-html table ox-publish
ox org-download url-http url url-proxy url-privacy url-expand
url-methods url-history mailcap url-auth mail-parse rfc2231 rfc2047
rfc2045 mm-util ietf-drums mail-prsvr url-cookie generate-lisp-file
url-domsuf url-util url-gw nsm puny url-parse auth-source password-cache
url-vars async vulpea vulpea-meta vulpea-select vulpea-buffer vulpea-db
s vulpea-utils vulpea-note org-roam-migrate org-roam-log org-roam-mode
org-roam-capture org-roam-id org-roam-node org-roam-db org-roam-utils
org-roam-compat org-roam org-mac-link org-goto org-capture org-attach
org-tempo tempo evil-org-agenda evil-org org-element org-persist xdg
org-id org-refile avl-tree generator ob-shell org time-date ob ob-tangle
ob-ref ob-lob ob-table ob-exp org-macro org-src ob-comint org-pcomplete
org-list org-footnote org-faces org-entities noutline outline
ob-emacs-lisp ob-core ob-eval org-cycle org-table ol org-fold
org-fold-core org-keys oc org-loaddefs cal-menu calendar cal-loaddefs
org-version org-compat org-macs emacsql-sqlite emacsql emacsql-compiler
magit-section format-spec eieio eieio-core compat-27 compat-26 smie
treesit executable undo-fu-session ws-butler vertico-directory
cursor-sensor flycheck json map find-func dash autorevert filenotify
savehist yasnippet mini-frame popup-mode-hacks which-key-posframe
posframe evil-collection-which-key which-key gcmh saveplace tabspaces
dired-x dired dired-loaddefs vc vc-dispatcher winner hide-mode-line
popup-mode-core recentf tree-widget better-jumper repeat vc-svn project
server gcmh-autoloads copy-as-format-autoloads pcase pdf-tools-autoloads
tablist-autoloads restclient-autoloads multi-vterm-autoloads
vterm-autoloads dumb-jump-autoloads popup-autoloads haml-mode-autoloads
emmet-mode-autoloads terraform-mode-autoloads hcl-mode-autoloads
dockerfile-mode-autoloads yaml-mode-autoloads json-snatcher-autoloads
lua-mode-autoloads bundler-autoloads inf-ruby-autoloads
ruby-refactor-autoloads evil-ruby-text-objects-autoloads
enh-ruby-mode-autoloads sotlisp-autoloads elisp-def-autoloads
lispyville-autoloads lispy-autoloads zoutline-autoloads swiper-autoloads
ivy-autoloads iedit-autoloads eros-autoloads eval-sexp-fu-autoloads
eslintd-fix-autoloads web-mode-autoloads typescript-mode-autoloads
company-rg-autoloads company-autoloads git-link-autoloads
consult-git-commit-autoloads git-timemachine-autoloads
magit-delta-autoloads xterm-color-autoloads prettier-autoloads
editorconfig-autoloads nvm-autoloads iter2-autoloads flycheck-autoloads
let-alist-autoloads pkg-info-autoloads epl-autoloads
tree-sitter-langs-autoloads tree-sitter-autoloads tsc-autoloads
lsp-ui-autoloads lsp-mode-autoloads eldoc-autoloads
markdown-mode-autoloads spinner-autoloads imenu-list-autoloads
org-superstar-autoloads ox-gfm-autoloads org-pandoc-import-autoloads
gnuplot-autoloads org-download-autoloads async-autoloads
org-journal-autoloads deft-autoloads vulpea-autoloads org-roam-autoloads
emacsql-sqlite-autoloads emacsql-autoloads orgonomic-autoloads
org-drill-autoloads persist-autoloads org-appear-autoloads
org-mac-link-autoloads evil-org-autoloads
evil-terminal-cursor-changer-autoloads transient-posframe-autoloads
better-jumper-autoloads hydra lv buffer-move-autoloads rotate-autoloads
mini-frame-autoloads embark-consult-autoloads embark-autoloads
consult-autoloads orderless orderless-autoloads cape-autoloads
corfu-autoloads vertico-mouse vertico vertico-autoloads
tabspaces-autoloads which-key-posframe-autoloads which-key-autoloads
popup-mode popup-mode-settings popup-mode-autoloads
hide-mode-line-autoloads evil-anzu-autoloads anzu-autoloads
titlecase-autoloads wgrep-autoloads yasnippet-autoloads
form-feed-autoloads drag-stuff-autoloads dtrt-indent-autoloads
ws-butler-autoloads evil-vimish-fold-autoloads vimish-fold-autoloads
evil-collection annalist evil-collection-autoloads annalist-autoloads
evil-mc-autoloads evil-numbers-autoloads speeddating-autoloads
evil-matchit-autoloads evil-nerd-commenter-autoloads
evil-visualstar-autoloads evil-surround-autoloads cus-edit cus-load
wid-edit evil evil-integration evil-maps evil-commands reveal flyspell
ispell evil-jumps evil-command-window evil-search evil-ex shell
pcomplete comint ansi-osc ansi-color evil-types evil-macros evil-repeat
evil-states evil-core byte-opt advice evil-common windmove calc
calc-loaddefs calc-macs thingatpt rect evil-digraphs evil-vars pp
vundo-autoloads undo-fu-session-autoloads ztree-autoloads
dwim-shell-command-autoloads doom-themes-autoloads
treemacs-tab-bar-autoloads treemacs-magit-autoloads magit-autoloads
magit-section-autoloads git-commit-autoloads with-editor-autoloads
transient-autoloads treemacs-all-the-icons-autoloads
all-the-icons-autoloads treemacs-evil-autoloads evil-autoloads
goto-chg-autoloads treemacs-autoloads cfrs-autoloads ht-autoloads
pfuture-autoloads ace-window-autoloads avy-autoloads
rainbow-mode-autoloads posframe-autoloads ns-auto-titlebar
ns-auto-titlebar-autoloads nano-modeline memoize nano-modeline-autoloads
memoize-autoloads nano-light-theme face-remap nano-theme disp-table
nano-theme-autoloads envrc-autoloads inheritenv-autoloads compdef
derived compdef-autoloads helpful-autoloads elisp-refs-autoloads
f-autoloads s-autoloads edmacro kmacro dired-subtree-autoloads
dired-hacks-utils-autoloads dash-autoloads use-package-bind-key
hydra-autoloads lv-autoloads finder-inf leader-key bind-map
leader-key-autoloads bind-map-autoloads delsel pixel-scroll cua-base
ring xt-mouse no-littering compat compat-macs no-littering-autoloads
compat-autoloads bind-key easy-mmode use-package-core
use-package-autoloads bind-key-autoloads info files-x straight-autoloads
straight comp comp-cstr warnings subr-x rx cl-seq cl-macs gv bytecomp
byte-compile cl-extra help-mode icons cl-loaddefs cl-lib
display-line-numbers rmc iso-transl tooltip cconv eldoc paren electric
uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel
term/ns-win ns-win ucs-normalize mule-util term/common-win tool-bar dnd
fontset image regexp-opt fringe tabulated-list replace newcomment
text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow
isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax
font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic
indonesian philippine 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 emoji-zwj charscript charprop case-table epa-hook
jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs
theme-loaddefs faces cus-face macroexp files window text-properties
overlay sha1 md5 base64 format env code-pages mule custom widget keymap
hashtable-print-readable backquote threads kqueue cocoa ns lcms2
multi-tty make-network-process native-compile emacs)

Memory information:
((conses 16 2427821 1029366)
 (symbols 48 81704 971)
 (strings 32 357613 133923)
 (string-bytes 1 12498992)
 (vectors 16 226384)
 (vector-slots 8 5343488 1440221)
 (floats 8 3695 6895)
 (intervals 56 141490 6601)
 (buffers 992 212))





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

* bug#60110: 29.0.60; ruby-mode method parameter alignment
  2022-12-16  5:04 bug#60110: 29.0.60; ruby-mode method parameter alignment Aaron Jensen
@ 2022-12-18 22:32 ` Dmitry Gutov
  2022-12-18 22:53   ` Aaron Jensen
  2022-12-19  0:48   ` Dmitry Gutov
  0 siblings, 2 replies; 13+ messages in thread
From: Dmitry Gutov @ 2022-12-18 22:32 UTC (permalink / raw)
  To: Aaron Jensen, 60110

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

Hi Aaron,

Thanks for the report.

On 16/12/2022 07:04, Aaron Jensen wrote:
> 
> Currently, ruby-mode smie indents method parameters like this:
> 
> def some_method(
>      some_arg,
>      some_other_arg
>    )
> end
> 
> def self.some_method(
>        some_arg,
>        some_other_arg
>      )
> end

I'm assuming the difference in indentation between these posted cases is 
just an email/bug tracker bug. If they are sometimes different, please 
let me know. That would be another bug.

> I would prefer to be able to indent them like this:
> 
> def some_method(
>    some_arg,
>    some_other_arg
> )
> end
> 
> def self.some_method(
>    some_arg,
>    some_other_arg
> )
> end

See the attached patch. (setq ruby-method-params-indent 0) should do it.

> Rubocop has two rules that govern this behavior:
> 
> Layout/FirstParameterIndentation: consistent
> https://docs.rubocop.org/rubocop/1.40/cops_layout.html#layoutfirstparameterindentation
> 
> Layout/ParameterAlignment: with_first_parameter and
> with_fixed_indentation would both work. I don't have a strong opinion on
> this, because I usually break after a ( if I am going to put parameters
> on their own line. Leaving the first one on the same line as the method
> name is not as scannable.
> https://docs.rubocop.org/rubocop/1.40/cops_layout.html#layoutparameteralignment

All right. It doesn't seem to support many styles, only indenting the 
first param against the opening paren, and against the beginning of 
"def". But it confirmed my idea for the option name (a generic one).

[-- Attachment #2: ruby-method-params-indent.diff --]
[-- Type: text/x-patch, Size: 4114 bytes --]

diff --git a/etc/NEWS b/etc/NEWS
index cded60cca63..fdf01592e10 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -2761,6 +2761,9 @@ project-dedicated or global) is specified by the new
 ---
 *** Support for endless methods.
 
+---
+*** New user option 'ruby-method-params-indent'.
+
 ** Eshell
 
 +++
diff --git a/lisp/progmodes/ruby-mode.el b/lisp/progmodes/ruby-mode.el
index ed6044280ea..d4e6a25e5b3 100644
--- a/lisp/progmodes/ruby-mode.el
+++ b/lisp/progmodes/ruby-mode.el
@@ -267,6 +267,24 @@ ruby-align-chained-calls
   :safe 'booleanp
   :version "24.4")
 
+(defcustom ruby-method-params-indent t
+  "Indentation style of multiline method parameters.
+
+When t, the whole list with parentheses is indented against the
+method name.
+
+When a number, indent the parameters this many columns against
+the beginning of the method (the \"def\" keyword).
+
+The value nil means the same as 0.
+
+Only has effect when `ruby-use-smie' is t."
+  :type '(choice (const :tag "Indent against method name" t)
+                 (number :tag "Indent specified number of columns against def")
+                 (const :tag "Indent to def" nil))
+  :safe (lambda (val) (or (memq val '(t nil)) (numberp val)))
+  :version 29.1)
+
 (defcustom ruby-deep-arglist t
   "Deep indent lists in parenthesis when non-nil.
 Also ignores spaces after parenthesis when `space'.
@@ -659,9 +677,12 @@ ruby-smie-rules
        (unless (or (eolp) (forward-comment 1))
          (cons 'column (current-column)))))
     ('(:before . " @ ")
-     (save-excursion
-       (skip-chars-forward " \t")
-       (cons 'column (current-column))))
+     (if (or (eq ruby-method-params-indent t)
+             (not (smie-rule-parent-p "def" "def=")))
+         (save-excursion
+           (skip-chars-forward " \t")
+           (cons 'column (current-column)))
+       (smie-rule-parent (or ruby-method-params-indent 0))))
     ('(:before . "do") (ruby-smie--indent-to-stmt))
     ('(:before . ".")
      (if (smie-rule-sibling-p)
diff --git a/test/lisp/progmodes/ruby-mode-resources/ruby-method-params-indent.rb b/test/lisp/progmodes/ruby-mode-resources/ruby-method-params-indent.rb
new file mode 100644
index 00000000000..2b665797397
--- /dev/null
+++ b/test/lisp/progmodes/ruby-mode-resources/ruby-method-params-indent.rb
@@ -0,0 +1,18 @@
+class C
+  def self.foo(
+    baz,
+    bar
+  ) =
+    what
+
+  def foo=(
+    baz,
+    bar
+  )
+    hello
+  end
+end
+
+# Local Variables:
+# ruby-method-params-indent: 0
+# End:
diff --git a/test/lisp/progmodes/ruby-mode-resources/ruby.rb b/test/lisp/progmodes/ruby-mode-resources/ruby.rb
index 5636a4fc0e2..61b75c0c7f2 100644
--- a/test/lisp/progmodes/ruby-mode-resources/ruby.rb
+++ b/test/lisp/progmodes/ruby-mode-resources/ruby.rb
@@ -536,3 +536,7 @@ def foo=(
     hello
   end
 end
+
+# Local Variables:
+# ruby-method-params-indent: t
+# End:
diff --git a/test/lisp/progmodes/ruby-mode-tests.el b/test/lisp/progmodes/ruby-mode-tests.el
index 9be01dc78f9..ad9fc3dad4d 100644
--- a/test/lisp/progmodes/ruby-mode-tests.el
+++ b/test/lisp/progmodes/ruby-mode-tests.el
@@ -943,7 +943,7 @@ ruby-imenu-with-private-modifier
                      "Blub#bye"
                      "Blub#hiding")))))
 
-(ert-deftest ruby--indent/converted-from-manual-test ()
+(ert-deftest ruby--indent/run-manual-test ()
   :tags '(:expensive-test)
   ;; Converted from manual test.
   (let ((buf (find-file-noselect (ert-resource-file "ruby.rb"))))
@@ -954,6 +954,17 @@ ruby--indent/converted-from-manual-test
             (should (equal (buffer-string) orig))))
       (kill-buffer buf))))
 
+(ert-deftest ruby--indent/run-manual-test-method-params-indent ()
+  :tags '(:expensive-test)
+  ;; Converted from manual test.
+  (let ((buf (find-file-noselect (ert-resource-file "ruby-method-params-indent.rb"))))
+    (unwind-protect
+        (with-current-buffer buf
+          (let ((orig (buffer-string)))
+            (indent-region (point-min) (point-max))
+            (should (equal (buffer-string) orig))))
+      (kill-buffer buf))))
+
 (ert-deftest ruby--test-chained-indentation ()
   (with-temp-buffer
     (ruby-mode)

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

* bug#60110: 29.0.60; ruby-mode method parameter alignment
  2022-12-18 22:32 ` Dmitry Gutov
@ 2022-12-18 22:53   ` Aaron Jensen
  2022-12-19  1:00     ` Dmitry Gutov
  2022-12-19  0:48   ` Dmitry Gutov
  1 sibling, 1 reply; 13+ messages in thread
From: Aaron Jensen @ 2022-12-18 22:53 UTC (permalink / raw)
  To: Dmitry Gutov; +Cc: 60110

On Sun, Dec 18, 2022 at 5:32 PM Dmitry Gutov <dgutov@yandex.ru> wrote:
>
> I'm assuming the difference in indentation between these posted cases is
> just an email/bug tracker bug. If they are sometimes different, please
> let me know. That would be another bug.

I think so, yeah.

>
> > I would prefer to be able to indent them like this:
> >
> > def some_method(
> >    some_arg,
> >    some_other_arg
> > )
> > end
> >
> > def self.some_method(
> >    some_arg,
> >    some_other_arg
> > )
> > end
>
> See the attached patch. (setq ruby-method-params-indent 0) should do it.

Works for me.

Next question is... is there an existing setting to change the
indentation of expressions like:

x = [3,4].
      map { |x| x * 2 }

Like everything else, I just want a 2 space indent, no alignment,
nothing clever:

x = [3,4].
  map { |x| x * 2 }

I can open another issue for this if there's no existing option and
you'd like me to.

Thanks,

Aaron





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

* bug#60110: 29.0.60; ruby-mode method parameter alignment
  2022-12-18 22:32 ` Dmitry Gutov
  2022-12-18 22:53   ` Aaron Jensen
@ 2022-12-19  0:48   ` Dmitry Gutov
  2022-12-19 12:12     ` Eli Zaretskii
  1 sibling, 1 reply; 13+ messages in thread
From: Dmitry Gutov @ 2022-12-19  0:48 UTC (permalink / raw)
  To: 60110, Eli Zaretskii; +Cc: Aaron Jensen

On 19/12/2022 00:32, Dmitry Gutov wrote:
> See the attached patch.

Eli, I'd like to push that one to Emacs 29 as well.

It should be very safe: the default value of the new option makes sure 
that aside from the (eq ruby-method-params-indent t) check all the code 
runs exactly as before.

(No, I'm not going to ask that for every next feature request.)





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

* bug#60110: 29.0.60; ruby-mode method parameter alignment
  2022-12-18 22:53   ` Aaron Jensen
@ 2022-12-19  1:00     ` Dmitry Gutov
  2022-12-19  2:58       ` Aaron Jensen
  0 siblings, 1 reply; 13+ messages in thread
From: Dmitry Gutov @ 2022-12-19  1:00 UTC (permalink / raw)
  To: Aaron Jensen; +Cc: 60110

On 19/12/2022 00:53, Aaron Jensen wrote:

> Next question is... is there an existing setting to change the
> indentation of expressions like:
> 
> x = [3,4].
>        map { |x| x * 2 }
> 
> Like everything else, I just want a 2 space indent, no alignment,
> nothing clever:
> 
> x = [3,4].
>    map { |x| x * 2 }
> 
> I can open another issue for this if there's no existing option and
> you'd like me to.

Yes, please.

That's going to be more difficult, though, since this part stems from 
the default SMIE indentation behavior.

It will help to be specific: whether you are concerned about this 
behavior for assignments only (and probably for operators like +=, /=, 
&=, etc), or whether there are other tokens/keywords like that.

Or whether adding an option for = and friends will get us 99% there, maybe.





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

* bug#60110: 29.0.60; ruby-mode method parameter alignment
  2022-12-19  1:00     ` Dmitry Gutov
@ 2022-12-19  2:58       ` Aaron Jensen
  2022-12-19 19:09         ` Dmitry Gutov
  0 siblings, 1 reply; 13+ messages in thread
From: Aaron Jensen @ 2022-12-19  2:58 UTC (permalink / raw)
  To: Dmitry Gutov; +Cc: 60110

On Sun, Dec 18, 2022 at 8:00 PM Dmitry Gutov <dgutov@yandex.ru> wrote:
> Yes, please.
>
> That's going to be more difficult, though, since this part stems from
> the default SMIE indentation behavior.
>
> It will help to be specific: whether you are concerned about this
> behavior for assignments only (and probably for operators like +=, /=,
> &=, etc), or whether there are other tokens/keywords like that.
>
> Or whether adding an option for = and friends will get us 99% there, maybe.

Done: bug#60186

Not sure what it'll take, it sounds like I just want all the SMIE
behavior disabled :)

Thanks,

Aaron





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

* bug#60110: 29.0.60; ruby-mode method parameter alignment
  2022-12-19  0:48   ` Dmitry Gutov
@ 2022-12-19 12:12     ` Eli Zaretskii
  2022-12-19 19:14       ` Dmitry Gutov
  0 siblings, 1 reply; 13+ messages in thread
From: Eli Zaretskii @ 2022-12-19 12:12 UTC (permalink / raw)
  To: Dmitry Gutov; +Cc: 60110, aaronjensen

> Date: Mon, 19 Dec 2022 02:48:57 +0200
> From: Dmitry Gutov <dgutov@yandex.ru>
> Cc: Aaron Jensen <aaronjensen@gmail.com>
> 
> On 19/12/2022 00:32, Dmitry Gutov wrote:
> > See the attached patch.
> 
> Eli, I'd like to push that one to Emacs 29 as well.
> 
> It should be very safe: the default value of the new option makes sure 
> that aside from the (eq ruby-method-params-indent t) check all the code 
> runs exactly as before.

OK.

> (No, I'm not going to ask that for every next feature request.)

Thanks in advance ;-)





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

* bug#60110: 29.0.60; ruby-mode method parameter alignment
  2022-12-19  2:58       ` Aaron Jensen
@ 2022-12-19 19:09         ` Dmitry Gutov
  0 siblings, 0 replies; 13+ messages in thread
From: Dmitry Gutov @ 2022-12-19 19:09 UTC (permalink / raw)
  To: Aaron Jensen; +Cc: 60110

On 19/12/2022 04:58, Aaron Jensen wrote:
> Not sure what it'll take, it sounds like I just want all the SMIE
> behavior disabled 😄

That could be a problem: indentation code has historically been black 
magic, and SMIE makes it a little easier. :)





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

* bug#60110: 29.0.60; ruby-mode method parameter alignment
  2022-12-19 12:12     ` Eli Zaretskii
@ 2022-12-19 19:14       ` Dmitry Gutov
  2022-12-19 19:30         ` Eli Zaretskii
  0 siblings, 1 reply; 13+ messages in thread
From: Dmitry Gutov @ 2022-12-19 19:14 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 60110-done, aaronjensen

Version: 29.1

On 19/12/2022 14:12, Eli Zaretskii wrote:
>> Date: Mon, 19 Dec 2022 02:48:57 +0200
>> From: Dmitry Gutov<dgutov@yandex.ru>
>> Cc: Aaron Jensen<aaronjensen@gmail.com>
>>
>> On 19/12/2022 00:32, Dmitry Gutov wrote:
>>> See the attached patch.
>> Eli, I'd like to push that one to Emacs 29 as well.
>>
>> It should be very safe: the default value of the new option makes sure
>> that aside from the (eq ruby-method-params-indent t) check all the code
>> runs exactly as before.
> OK.

Excellent! Now pushed to emacs-29, and closing.

BTW, suggestions to improveme to ruby-method-params-indent's docstring 
are welcome, if any. Not sure if it is clear enough, but it's the best I 
could come up with.





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

* bug#60110: 29.0.60; ruby-mode method parameter alignment
  2022-12-19 19:14       ` Dmitry Gutov
@ 2022-12-19 19:30         ` Eli Zaretskii
  2022-12-19 20:08           ` Dmitry Gutov
  0 siblings, 1 reply; 13+ messages in thread
From: Eli Zaretskii @ 2022-12-19 19:30 UTC (permalink / raw)
  To: Dmitry Gutov; +Cc: 60110, aaronjensen

> Date: Mon, 19 Dec 2022 21:14:13 +0200
> Cc: 60110-done@debbugs.gnu.org, aaronjensen@gmail.com
> From: Dmitry Gutov <dgutov@yandex.ru>
> 
> BTW, suggestions to improveme to ruby-method-params-indent's docstring 
> are welcome, if any. Not sure if it is clear enough, but it's the best I 
> could come up with.

You can rest assured I've read it.  I didn't have any significant
issues with it.





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

* bug#60110: 29.0.60; ruby-mode method parameter alignment
  2022-12-19 19:30         ` Eli Zaretskii
@ 2022-12-19 20:08           ` Dmitry Gutov
  2022-12-20  0:17             ` Andy Moreton
  0 siblings, 1 reply; 13+ messages in thread
From: Dmitry Gutov @ 2022-12-19 20:08 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 60110, aaronjensen

On 19/12/2022 21:30, Eli Zaretskii wrote:
>> Date: Mon, 19 Dec 2022 21:14:13 +0200
>> Cc:60110-done@debbugs.gnu.org,aaronjensen@gmail.com
>> From: Dmitry Gutov<dgutov@yandex.ru>
>>
>> BTW, suggestions to improveme to ruby-method-params-indent's docstring
>> are welcome, if any. Not sure if it is clear enough, but it's the best I
>> could come up with.
> You can rest assured I've read it.  I didn't have any significant
> issues with it.

Thank you.






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

* bug#60110: 29.0.60; ruby-mode method parameter alignment
  2022-12-19 20:08           ` Dmitry Gutov
@ 2022-12-20  0:17             ` Andy Moreton
  2022-12-20  1:13               ` Dmitry Gutov
  0 siblings, 1 reply; 13+ messages in thread
From: Andy Moreton @ 2022-12-20  0:17 UTC (permalink / raw)
  To: 60110

On Mon 19 Dec 2022, Dmitry Gutov wrote:

> On 19/12/2022 21:30, Eli Zaretskii wrote:
>>> Date: Mon, 19 Dec 2022 21:14:13 +0200
>>> Cc:60110-done@debbugs.gnu.org,aaronjensen@gmail.com
>>> From: Dmitry Gutov<dgutov@yandex.ru>
>>>
>>> BTW, suggestions to improveme to ruby-method-params-indent's docstring
>>> are welcome, if any. Not sure if it is clear enough, but it's the best I
>>> could come up with.
>> You can rest assured I've read it.  I didn't have any significant
>> issues with it.
>
> Thank you.

The commit 2b1fdbffcb ("ruby-method-params-indent: New user option") has
a bug on emacs-29, namely that the :version tag for the defcustom is not
a string (missing quotes), which breaks the build.

    AndyM






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

* bug#60110: 29.0.60; ruby-mode method parameter alignment
  2022-12-20  0:17             ` Andy Moreton
@ 2022-12-20  1:13               ` Dmitry Gutov
  0 siblings, 0 replies; 13+ messages in thread
From: Dmitry Gutov @ 2022-12-20  1:13 UTC (permalink / raw)
  To: Andy Moreton, 60110

On 20/12/2022 02:17, Andy Moreton wrote:
> The commit 2b1fdbffcb ("ruby-method-params-indent: New user option") has
> a bug on emacs-29, namely that the :version tag for the defcustom is not
> a string (missing quotes), which breaks the build.

Sorry about that, now fixed.





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

end of thread, other threads:[~2022-12-20  1:13 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-12-16  5:04 bug#60110: 29.0.60; ruby-mode method parameter alignment Aaron Jensen
2022-12-18 22:32 ` Dmitry Gutov
2022-12-18 22:53   ` Aaron Jensen
2022-12-19  1:00     ` Dmitry Gutov
2022-12-19  2:58       ` Aaron Jensen
2022-12-19 19:09         ` Dmitry Gutov
2022-12-19  0:48   ` Dmitry Gutov
2022-12-19 12:12     ` Eli Zaretskii
2022-12-19 19:14       ` Dmitry Gutov
2022-12-19 19:30         ` Eli Zaretskii
2022-12-19 20:08           ` Dmitry Gutov
2022-12-20  0:17             ` Andy Moreton
2022-12-20  1:13               ` Dmitry Gutov

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).