DFreds / code-peek-atom

Atom package to peek functions in different files
MIT License
22 stars 10 forks source link

Uncaught TypeError: Cannot read property 'ignoreCase' of undefined #19

Closed jwverzijden closed 7 years ago

jwverzijden commented 7 years ago

steps to reproduce:

  1. remove the extension from a file
  2. peek at a function defined inside that file
  3. error

Atom Version: 1.13.1 Electron Version: 1.3.13 System: Microsoft Windows 10 Pro Thrown From: code-peek package, v1.4.15

Stack Trace

Uncaught TypeError: Cannot read property 'ignoreCase' of undefined

At C:\Users\Jan Willem\AppData\Local\atom\app-1.13.1\resources\app.asar\src\default-directory-searcher.js:11

TypeError: Cannot read property 'ignoreCase' of undefined
    at new DirectorySearch (C:\Users\Jan Willem\AppData\Local\atom\app-1.13.1\resources\app.asar\src\default-directory-searcher.js:11:26)
    at DefaultDirectorySearcher.module.exports.DefaultDirectorySearcher.search (C:\Users\Jan Willem\AppData\Local\atom\app-1.13.1\resources\app.asar\src\default-directory-searcher.js:61:25)
    at C:\Users\Jan Willem\AppData\Local\atom\app-1.13.1\resources\app.asar\src\workspace.js:978:40
    at Map.forEach (native)
    at Workspace.module.exports.Workspace.scan (C:\Users\Jan Willem\AppData\Local\atom\app-1.13.1\resources\app.asar\src\workspace.js:957:30)
    at Object.scanWorkspace (file:///C:/Users/Jan Willem/.atom/packages/code-peek/lib/code-peek.coffee:115:20)
    at Object.peekFunction (file:///C:/Users/Jan Willem/.atom/packages/code-peek/lib/code-peek.coffee:110:6)
    at atom-text-editor.subscriptions.add.atom.commands.add.code-peek:peekFunction (file:///C:/Users/Jan Willem/.atom/packages/code-peek/lib/code-peek.coffee:57:37)
    at CommandRegistry.module.exports.CommandRegistry.handleCommandEvent (C:\Users\Jan Willem\AppData\Local\atom\app-1.13.1\resources\app.asar\src\command-registry.js:259:29)
    at CommandRegistry.handleCommandEvent (C:\Users\Jan Willem\AppData\Local\atom\app-1.13.1\resources\app.asar\src\command-registry.js:3:59)
    at CommandRegistry.module.exports.CommandRegistry.dispatch (C:\Users\Jan Willem\AppData\Local\atom\app-1.13.1\resources\app.asar\src\command-registry.js:160:19)
    at AtomEnvironment.module.exports.AtomEnvironment.dispatchContextMenuCommand (C:\Users\Jan Willem\AppData\Local\atom\app-1.13.1\resources\app.asar\src\atom-environment.js:1181:28)
    at EventEmitter.outerCallback (C:\Users\Jan Willem\AppData\Local\atom\app-1.13.1\resources\app.asar\src\application-delegate.js:332:25)
    at emitThree (events.js:116:13)
    at EventEmitter.emit (events.js:194:7)

Commands

     -2:15.6.0 code-peek:peekFunction (span.syntax--text.syntax--plain.syntax--null-grammar)
     -1:43.4.0 find-and-replace:select-next (a.stack-toggle)
     -1:43 core:save (a.stack-toggle)
  2x -1:33.7.0 code-peek:peekFunction (span.syntax--text.syntax--plain.syntax--null-grammar)
     -0:33.8.0 tree-view:move (ol.tree-view.full-menu.list-tree.has-collapsable-children.focusable-panel)
     -0:32.7.0 editor:move-to-end-of-screen-line (input.hidden-input)
     -0:31.8.0 core:confirm (input.hidden-input)
  2x -0:28.2.0 code-peek:peekFunction (span.syntax--entity.syntax--name.syntax--function.syntax--js)
     -0:17.2.0 bookmarks:jump-to-next-bookmark (input.hidden-input)
     -0:16.9.0 tree-view:move (ol.tree-view.full-menu.list-tree.has-collapsable-children.focusable-panel)
     -0:15.7.0 core:move-right (input.hidden-input)
  2x -0:15.3.0 editor:select-to-end-of-word (input.hidden-input)
     -0:14.5.0 core:delete (input.hidden-input)
     -0:14.3.0 core:confirm (input.hidden-input)
  2x -0:10.7.0 code-peek:peekFunction (span.syntax--entity.syntax--name.syntax--function.syntax--js)
     -0:00.4.0 application:new-file (ul.list-inline.tab-bar.inset-panel)

Config

{
  "core": {
    "audioBeep": false,
    "disabledPackages": [
      "spell-check",
      "snippets"
    ],
    "followSymlinks": false,
    "packagesWithKeymapsDisabled": [
      "fonts"
    ],
    "projectHome": "C:\\Software\\",
    "telemetryConsent": "limited"
  }
}

Installed Packages

# User
atom-easy-jsdoc, v4.10.0 (active)
atom-html-preview, v0.1.22 (active)
code-peek, v1.4.15 (active)
emoji-syntax, v1.6.2 (active)
fonts, v2.0.0 (active)
jsdoc-generator, v0.2.3 (active)
markdown-scroll-sync, v2.1.2 (active)
minimap, v4.26.8 (active)
minimap-cursorline, v0.2.0 (active)
minimap-find-and-replace, v4.5.1 (active)
minimap-git-diff, v4.3.1 (active)
minimap-highlight-selected, v4.5.0 (active)
minimap-selection, v4.4.0 (active)
node-debugger, v1.10.0 (active)
single-click-open, v0.2.2 (active)
atom-dark-syntax, v0.28.0 (inactive)
atom-dark-ui, v0.53.0 (inactive)
atom-light-syntax, v0.29.0 (inactive)
atom-light-ui, v0.46.0 (inactive)
base16-tomorrow-dark-theme, v1.4.0 (inactive)
base16-tomorrow-light-theme, v1.4.0 (inactive)
one-dark-ui, v1.8.2 (active)
one-light-ui, v1.8.2 (inactive)
one-dark-syntax, v1.6.0 (active)
one-light-syntax, v1.6.0 (inactive)
solarized-dark-syntax, v1.1.1 (inactive)
solarized-light-syntax, v1.1.1 (inactive)
about, v1.7.2 (active)
archive-view, v0.62.0 (active)
autocomplete-atom-api, v0.10.0 (active)
autocomplete-css, v0.14.1 (active)
autocomplete-html, v0.7.2 (active)
autocomplete-plus, v2.33.1 (active)
autocomplete-snippets, v1.11.0 (active)
autoflow, v0.29.0 (inactive)
autosave, v0.23.2 (active)
background-tips, v0.26.1 (active)
bookmarks, v0.43.2 (active)
bracket-matcher, v0.85.1 (active)
command-palette, v0.39.1 (inactive)
deprecation-cop, v0.55.1 (active)
dev-live-reload, v0.47.0 (active)
encoding-selector, v0.22.0 (active)
exception-reporting, v0.40.0 (active)
find-and-replace, v0.204.5 (active)
fuzzy-finder, v1.4.0 (active)
git-diff, v1.2.0 (active)
go-to-line, v0.31.2 (inactive)
grammar-selector, v0.48.2 (active)
image-view, v0.60.0 (active)
incompatible-packages, v0.26.1 (active)
keybinding-resolver, v0.35.0 (active)
line-ending-selector, v0.5.1 (active)
link, v0.31.2 (inactive)
markdown-preview, v0.159.3 (active)
metrics, v1.1.3 (active)
notifications, v0.65.1 (active)
open-on-github, v1.2.1 (inactive)
package-generator, v1.0.2 (inactive)
settings-view, v0.244.0 (active)
snippets, v1.0.4 (inactive)
spell-check, v0.68.5 (inactive)
status-bar, v1.6.0 (active)
styleguide, v0.48.0 (active)
symbols-view, v0.113.1 (inactive)
tabs, v0.103.1 (active)
timecop, v0.33.2 (active)
tree-view, v0.211.1 (active)
update-package-dependencies, v0.10.0 (active)
welcome, v0.35.1 (active)
whitespace, v0.35.0 (active)
wrap-guide, v0.39.0 (active)
language-c, v0.54.0 (active)
language-clojure, v0.22.1 (active)
language-coffee-script, v0.48.1 (active)
language-csharp, v0.13.0 (active)
language-css, v0.40.1 (active)
language-gfm, v0.88.0 (active)
language-git, v0.15.0 (active)
language-go, v0.43.0 (active)
language-html, v0.47.1 (active)
language-hyperlink, v0.16.1 (active)
language-java, v0.24.0 (active)
language-javascript, v0.122.0 (active)
language-json, v0.18.3 (active)
language-less, v0.29.6 (active)
language-make, v0.22.2 (active)
language-mustache, v0.13.0 (active)
language-objective-c, v0.15.1 (active)
language-perl, v0.37.0 (active)
language-php, v0.37.3 (active)
language-property-list, v0.8.0 (active)
language-python, v0.45.1 (active)
language-ruby, v0.70.2 (active)
language-ruby-on-rails, v0.25.1 (active)
language-sass, v0.57.0 (active)
language-shellscript, v0.23.0 (active)
language-source, v0.9.0 (active)
language-sql, v0.25.0 (active)
language-text, v0.7.1 (active)
language-todo, v0.29.1 (active)
language-toml, v0.18.1 (active)
language-xml, v0.34.12 (active)
language-yaml, v0.27.1 (active)

# Dev
No dev packages
DFreds commented 7 years ago

Hey, thanks for reporting this.

The reason you get this error is because Code Peek attempts to make the search process faster by only finding functions in files with the same extension (https://github.com/DFreds/code-peek-atom/blob/master/lib/code-peek.coffee#L113).

I could add some undefined error handling around this so you don't get this issue.

jwverzijden commented 7 years ago

I suggest that if the extention is "" (none) you actually do search all files, or something similar, otherwise it is fair to assume that a function will be in the same type of file

DFreds commented 7 years ago

That's what I was planning on. I'll work on it and get something pushed up soon.

DFreds commented 7 years ago

Hey @crostine,

I was only able to reproduce this when the grammar type was not set, which is the default case when there is no file extension. Code Peek needs the grammar type in order to pick the appropriate regular expression. I went ahead and added an if check that displays a warning if the grammar type is null. I think this "fixes" the issue.

I also made it so that it will search the entire project if there is no file extension. So again, no need for a file extension, just the grammar.

Check it out (version 1.4.16): https://github.com/DFreds/code-peek-atom/pull/20

Let me know if you're still seeing an issue after choosing the grammar.

Thanks!