Skip to content
This repository was archived by the owner on Dec 15, 2022. It is now read-only.
This repository was archived by the owner on Dec 15, 2022. It is now read-only.

Atom snippets fail to treat an octal in multiline strings as expected #256

Open
@philoserf

Description

@philoserf

Description

Atom snippets fail to treat an octal in multiline strings as expected. While the specification at https://github.com/bevry/cson proclaims "Multi-line Strings! Without Quote Escaping!" and gives no warning about octal Atom editor gives an error message while saving a snippet definition containing an octal.

Escaping a closing brace in a multi-line string is in the README for the snippets package: https://github.com/atom/snippets/blob/edf7db4e5f3d9bb0354745433cf09e14c933d75a/README.md#multi-line-snippet-body

Using the same technique to escape the opening backslash of the octal delivers the same error message as with no escaping.

Steps to Reproduce

  1. Open $HOME/.atom/snippets.cson
  2. Save the CSON snippet definition described in Actual behavior below
  3. Save the file

Expected behavior:

Unlike a closing brace, other values do not require escaping in snippets.cson using CSON multi-line strings.

OR, a means of escaping the octal exists for snippets as that require them.

OR, the README is updated to reflect this limitation in addition to the closing brace limit.

Actual behavior:

While running Atom like this, atom --safe

Add this code fragment snippet definition to $HOME/.atom/snippets.cson:

'.source.makefile':
  'makefile':
    prefix: 'start.make'
    description: 'Makefile help'
    body: '''
      .DEFAULT_GOAL := help
      .PHONY: help
      help:
      	@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
      '''

Upon saving the file, get this error:

Failed to load snippets from '/.../.atom/snippets.cson'

/.../.atom/snippets.cson: ocatal esccape sequences are not allowed \03

Using the debugger arrive at this error message:

fs.js line 122
Error reading snippets file '/Users/mark/.atom/snippets.cson': [stdin]:147:99: error: octal escape sequences are not allowed \03
      	@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'

Which comes from this line/function:

function nullCheck(path, callback) {
  if (('' + path).indexOf('\u0000') !== -1) {
    var er = new Error('Path must be a string without null bytes');
    er.code = 'ENOENT';
    if (typeof callback !== 'function')
      throw er;
    process.nextTick(callback, er); // <-- line 122
    return false;
  }
  return true;
}

Reproduces how often: Always

Versions

> atom --version
Atom    : 1.22.0
Electron: 1.6.15
Chrome  : 56.0.2924.87
Node    : 7.4.0

> apm --version
apm  1.18.8
npm  3.10.10
node 6.9.5 x64
python 2.7.10
git 2.15.0

> sw_vers
ProductName:	Mac OS X
ProductVersion:	10.13.1
BuildVersion:	17B48

Additional Information

Not certain to which of these this issue belongs:

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions