emacs-helm / helm-descbinds

A helm frontend for describe-bindings.
GNU General Public License v3.0
116 stars 12 forks source link

`helm-descbinds` does not work for certain prefix keys #25

Closed xiongtx closed 8 years ago

xiongtx commented 8 years ago

Expected behavior

C-x r C-h should bring up bindings beginning with C-x r.

Actual behavior, from emacs-helm.sh if possible

After activating helm-descbinds-mode, helm-descbinds does not work for certain prefixes.

For example, C-x r C-h fails. C-x C-h works, however.

Steps to reproduce

  1. Activate helm-descbinds-mode
  2. Try to activate helm-descbinds with C-x r C-h

    Backtraces (M-x toggle-debug-on-error)

(invalid-slot-name "#<helm-source-sync helm-source-sync>" nil)
  signal(invalid-slot-name ("#<helm-source-sync helm-source-sync>" nil))
  #[(object slot-name operation &optional new-value) "\302\303\304!    D\"\207" [object slot-name signal invalid-slot-name eieio-object-name] 4 "Method invoked when an attempt to access a slot in OBJECT fails.\nSLOT-NAME is the name of the failed slot, OPERATION is the type of access\nthat was requested, and optional NEW-VALUE is the value that was desired\nto be set.\n\nThis method is called from `oref', `oset', and other functions which\ndirectly reference slots in EIEIO objects."]([object helm-source-sync "helm-source-sync" nil nil nil ("ERROR: You must specify the `candidates' slot, either with a list or a function") nil nil nil identity nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil t nil nil nil nil nil nil] nil oset :candidates)
  apply(#[(object slot-name operation &optional new-value) "\302\303\304!  D\"\207" [object slot-name signal invalid-slot-name eieio-object-name] 4 "Method invoked when an attempt to access a slot in OBJECT fails.\nSLOT-NAME is the name of the failed slot, OPERATION is the type of access\nthat was requested, and optional NEW-VALUE is the value that was desired\nto be set.\n\nThis method is called from `oref', `oset', and other functions which\ndirectly reference slots in EIEIO objects."] ([object helm-source-sync "helm-source-sync" nil nil nil ("ERROR: You must specify the `candidates' slot, either with a list or a function") nil nil nil identity nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil t nil nil nil nil nil nil] nil oset :candidates))
  slot-missing([object helm-source-sync "helm-source-sync" nil nil nil ("ERROR: You must specify the `candidates' slot, either with a list or a function") nil nil nil identity nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil t nil nil nil nil nil nil] nil oset :candidates)
  #[(obj slots) "\304\216\305H B\n\2057\306\305H\n@\"\211\204%\307\n@\310\nA@$\210\202-\311\nA@#\210)\nAA\211\204\f\312)\207" [obj eieio--scoped-class-stack slots rn ((byte-code "\210A\301\207" [eieio--scoped-class-stack nil] 1)) 1 eieio-initarg-to-attribute slot-missing oset eieio-oset nil] 6 "Set slots of OBJ with SLOTS which is a list of name/value pairs.\nCalled from the constructor routine."]([object helm-source-sync "helm-source-sync" nil nil nil ("ERROR: You must specify the `candidates' slot, either with a list or a function") nil nil nil identity nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil t nil nil nil nil nil nil] (nil :candidates nil))
  apply(#[(obj slots) "\304\216\305H   B\n\2057\306\305H\n@\"\211\204%\307\n@\310\nA@$\210\202-\311\nA@#\210)\nAA\211\204\f\312)\207" [obj eieio--scoped-class-stack slots rn ((byte-code "\210A\301\207" [eieio--scoped-class-stack nil] 1)) 1 eieio-initarg-to-attribute slot-missing oset eieio-oset nil] 6 "Set slots of OBJ with SLOTS which is a list of name/value pairs.\nCalled from the constructor routine."] ([object helm-source-sync "helm-source-sync" nil nil nil ("ERROR: You must specify the `candidates' slot, either with a list or a function") nil nil nil identity nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil t nil nil nil nil nil nil] (nil :candidates nil)))
  shared-initialize([object helm-source-sync "helm-source-sync" nil nil nil ("ERROR: You must specify the `candidates' slot, either with a list or a function") nil nil nil identity nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil t nil nil nil nil nil nil] (nil :candidates nil))
  #[(this &optional slots) "\306H\307N\211\310H  \311H\n\203/\312@!\211@=\204%\313\n@\f#\210)\nAA\202+\314
\"\207" [this this-class slot defaults dflt slots 1 eieio-class-definition 5 6 eieio-default-eval-maybe eieio-oset shared-initialize] 5 "Construct the new object THIS based on SLOTS.\nSLOTS is a tagged list where odd numbered elements are tags, and\neven numbered elements are the values to store in the tagged slot.\nIf you overload the `initialize-instance', there you will need to\ncall `shared-initialize' yourself, or you can call `call-next-method'\nto have this constructor called automatically.  If these steps are\nnot taken, then new objects of your class will not have their values\ndynamically set from SLOTS."]([object helm-source-sync "helm-source-sync" nil nil nil ("ERROR: You must specify the `candidates' slot, either with a list or a function") nil nil nil identity nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil t nil nil nil nil nil nil] (nil :candidates nil))
  apply(#[(this &optional slots) "\306H\307N\211\310H    \311H\n\203/\312@!\211@=\204%\313\n@\f#\210)\nAA\202+\314
\"\207" [this this-class slot defaults dflt slots 1 eieio-class-definition 5 6 eieio-default-eval-maybe eieio-oset shared-initialize] 5 "Construct the new object THIS based on SLOTS.\nSLOTS is a tagged list where odd numbered elements are tags, and\neven numbered elements are the values to store in the tagged slot.\nIf you overload the `initialize-instance', there you will need to\ncall `shared-initialize' yourself, or you can call `call-next-method'\nto have this constructor called automatically.  If these steps are\nnot taken, then new objects of your class will not have their values\ndynamically set from SLOTS."] ([object helm-source-sync "helm-source-sync" nil nil nil ("ERROR: You must specify the `candidates' slot, either with a list or a function") nil nil nil identity nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil t nil nil nil nil nil nil] (nil :candidates nil)))
  initialize-instance([object helm-source-sync "helm-source-sync" nil nil nil ("ERROR: You must specify the `candidates' slot, either with a list or a function") nil nil nil identity nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil t nil nil nil nil nil nil] (nil :candidates nil))
  eieio-default-superclass(helm-source-sync "helm-source-sync" nil :candidates nil)
  apply(eieio-default-superclass (helm-source-sync "helm-source-sync" nil :candidates nil))
  eieio-generic-call(constructor (helm-source-sync "helm-source-sync" nil :candidates nil))
  constructor(helm-source-sync "helm-source-sync" nil :candidates nil)
  apply(constructor helm-source-sync "helm-source-sync" (nil :candidates nil))
  helm-source-sync("helm-source-sync" nil :candidates nil)
  apply(helm-source-sync "helm-source-sync" (nil :candidates nil))
  make-instance(helm-source-sync nil :candidates nil)
  apply(make-instance helm-source-sync nil (:candidates nil))
  helm-make-source(nil helm-source-sync :candidates nil)
  (append (helm-make-source name (quote helm-source-sync) :candidates candidates) helm-descbinds-source-template)
  helm-descbinds-source(nil nil)
  #[257 "\300@A\"\207" [helm-descbinds-source] 4 "\n\n(fn SECTION)"]((nil))
  mapcar(#[257 "\300@A\"\207" [helm-descbinds-source] 4 "\n\n(fn SECTION)"] (("Global Bindings Starting With C-x r:" ("C-x r C-@" . "point-to-register") ("C-x r ESC" . "Prefix Command") ("C-x r SPC" . "point-to-register") ("C-x r +" . "increment-register") ("C-x r N" . "rectangle-number-lines") ("C-x r b" . "helm-filtered-bookmarks") ("C-x r c" . "clear-rectangle") ("C-x r d" . "delete-rectangle") ("C-x r f" . "frameset-to-register") ("C-x r g" . "insert-register") ("C-x r i" . "insert-register") ("C-x r j" . "jump-to-register") ("C-x r k" . "kill-rectangle") ("C-x r l" . "bookmark-bmenu-list") ("C-x r m" . "bookmark-set") ("C-x r n" . "number-to-register") ("C-x r o" . "open-rectangle") ("C-x r r" . "copy-rectangle-to-register") ("C-x r s" . "copy-to-register") ("C-x r t" . "string-rectangle") ("C-x r w" . "window-configuration-to-register") ("C-x r x" . "copy-to-register") ("C-x r y" . "yank-rectangle") ("C-x r C-SPC" . "point-to-register") ("C-x r M-w" . "copy-rectangle-as-kill")) (nil)))
  helm-descbinds-sources(#<buffer github.com/emacs-helm/helm-descbinds/issues/new> "r")
  describe-bindings("r")

Describe versions of Helm, Emacs, operating system, etc.

thierryvolpiatto commented 8 years ago

Tianxiang Xiong notifications@github.com writes:

Expected behavior

C-x r C-h should bring up bindings beginning with C-x r.

Actual behavior, from emacs-helm.sh if possible

After activating helm-descbinds-mode, helm-descbinds does not work for certain prefixes.

For example, C-x r C-h fails. C-x C-h works, however.

Steps to reproduce

  1. Activate helm-descbinds-mode
  2. Try to activate helm-descbinds with C-x r C-h

Good catch, should be fixed now.

Thanks.

Thierry

xiongtx commented 8 years ago

Confirmed as fixed.