See #924. Add more verbose debugging to beautifyFilePath

This commit is contained in:
Glavin Wiechert 2016-04-16 16:18:10 -03:00
parent 78c2cc5480
commit 83ecac5d7e
3 changed files with 28 additions and 13 deletions

View File

@ -20,27 +20,27 @@ module.exports = class Beautifier
### ###
Supported Options Supported Options
Enable options for supported languages. Enable options for supported languages.
- <string:language>:<boolean:all_options_enabled> - <string:language>:<boolean:all_options_enabled>
- <string:language>:<string:option_key>:<boolean:enabled> - <string:language>:<string:option_key>:<boolean:enabled>
- <string:language>:<string:option_key>:<string:rename> - <string:language>:<string:option_key>:<string:rename>
- <string:language>:<string:option_key>:<function:transform> - <string:language>:<string:option_key>:<function:transform>
- <string:language>:<string:option_key>:<array:mapper> - <string:language>:<string:option_key>:<array:mapper>
### ###
options: {} options: {}
### ###
Supported languages by this Beautifier Supported languages by this Beautifier
Extracted from the keys of the `options` field. Extracted from the keys of the `options` field.
### ###
languages: null languages: null
### ###
Beautify text Beautify text
Override this method in subclasses Override this method in subclasses
### ###
beautify: null beautify: null
@ -87,7 +87,7 @@ module.exports = class Beautifier
### ###
Get Shell Environment variables Get Shell Environment variables
Special thank you to @ioquatix Special thank you to @ioquatix
See https://github.com/ioquatix/script-runner/blob/v1.5.0/lib/script-runner.coffee#L45-L63 See https://github.com/ioquatix/script-runner/blob/v1.5.0/lib/script-runner.coffee#L45-L63
### ###
@ -139,7 +139,7 @@ module.exports = class Beautifier
### ###
Like the unix which utility. Like the unix which utility.
Finds the first instance of a specified executable in the PATH environment variable. Finds the first instance of a specified executable in the PATH environment variable.
Does not cache the results, Does not cache the results,
so hash -r is not needed when the PATH changes. so hash -r is not needed when the PATH changes.
@ -165,7 +165,7 @@ module.exports = class Beautifier
### ###
Add help to error.description Add help to error.description
Note: error.description is not officially used in JavaScript, Note: error.description is not officially used in JavaScript,
however it is used internally for Atom Beautify when displaying errors. however it is used internally for Atom Beautify when displaying errors.
### ###
@ -319,7 +319,7 @@ module.exports = class Beautifier
for key, method of @logger for key, method of @logger
# @verbose(key, method) # @verbose(key, method)
@[key] = method @[key] = method
@verbose("Beautifier logger has been initialized.") @verbose("#{@name} beautifier logger has been initialized.")
### ###
Constructor to setup beautifer Constructor to setup beautifer

View File

@ -180,6 +180,7 @@ beautify = ({onSave}) ->
return return
beautifyFilePath = (filePath, callback) -> beautifyFilePath = (filePath, callback) ->
logger.verbose('beautifyFilePath', filePath)
# Show in progress indicate on file's tree-view entry # Show in progress indicate on file's tree-view entry
$ ?= require("atom-space-pen-views").$ $ ?= require("atom-space-pen-views").$
@ -188,13 +189,16 @@ beautifyFilePath = (filePath, callback) ->
# Cleanup and return callback function # Cleanup and return callback function
cb = (err, result) -> cb = (err, result) ->
logger.verbose('Cleanup beautifyFilePath', err, result)
$el = $(".icon-file-text[data-path=\"#{filePath}\"]") $el = $(".icon-file-text[data-path=\"#{filePath}\"]")
$el.removeClass('beautifying') $el.removeClass('beautifying')
return callback(err, result) return callback(err, result)
# Get contents of file # Get contents of file
fs ?= require "fs" fs ?= require "fs"
logger.verbose('readFile', filePath)
fs.readFile(filePath, (err, data) -> fs.readFile(filePath, (err, data) ->
logger.verbose('readFile completed', err, filePath)
return cb(err) if err return cb(err) if err
input = data?.toString() input = data?.toString()
grammar = atom.grammars.selectGrammar(filePath, input) grammar = atom.grammars.selectGrammar(filePath, input)
@ -202,14 +206,18 @@ beautifyFilePath = (filePath, callback) ->
# Get the options # Get the options
allOptions = beautifier.getOptionsForPath(filePath) allOptions = beautifier.getOptionsForPath(filePath)
logger.verbose('beautifyFilePath allOptions', allOptions)
# Beautify File # Beautify File
completionFun = (output) -> completionFun = (output) ->
logger.verbose('beautifyFilePath completionFun', output)
if output instanceof Error if output instanceof Error
return cb(output, null ) # output == Error return cb(output, null ) # output == Error
else if typeof output is "string" else if typeof output is "string"
# do not allow empty string # do not allow empty string
return cb(null, output) if output is '' if output.trim() is ''
logger.verbose('beautifyFilePath, output was empty string!')
return cb(null, output)
# save to file # save to file
fs.writeFile(filePath, output, (err) -> fs.writeFile(filePath, output, (err) ->
return cb(err) if err return cb(err) if err
@ -218,6 +226,7 @@ beautifyFilePath = (filePath, callback) ->
else else
return cb( new Error("Unknown beautification result #{output}."), output) return cb( new Error("Unknown beautification result #{output}."), output)
try try
logger.verbose('beautify', input, allOptions, grammarName, filePath)
beautifier.beautify(input, allOptions, grammarName, filePath) beautifier.beautify(input, allOptions, grammarName, filePath)
.then(completionFun) .then(completionFun)
.catch(completionFun) .catch(completionFun)
@ -470,8 +479,9 @@ debug = () ->
handleSaveEvent = -> handleSaveEvent = ->
atom.workspace.observeTextEditors (editor) -> atom.workspace.observeTextEditors (editor) ->
buffer = editor.getBuffer() disposable = editor.onDidSave(({path : filePath}) ->
disposable = buffer.onDidSave(({path : filePath}) -> logger.verbose('Should beautify on this save?')
buffer = editor.getBuffer()
path ?= require('path') path ?= require('path')
# Get Grammar # Get Grammar
grammar = editor.getGrammar().name grammar = editor.getGrammar().name
@ -492,14 +502,18 @@ handleSaveEvent = ->
if beautifyOnSave if beautifyOnSave
posArray = getCursors(editor) posArray = getCursors(editor)
origScrollTop = getScrollTop(editor) origScrollTop = getScrollTop(editor)
logger.verbose('Beautifying file', filePath)
beautifyFilePath(filePath, -> beautifyFilePath(filePath, ->
logger.verbose('Done beautifying file', filePath)
if editor.isAlive() is true if editor.isAlive() is true
logger.verbose('Reloading TextEditor buffer...')
buffer.reload() buffer.reload()
logger.verbose('restore editor positions', posArray,origScrollTop) logger.verbose('Reloaded TextEditor buffer.')
# Let the scrollTop setting run after all the save related stuff is run, # Let the scrollTop setting run after all the save related stuff is run,
# otherwise setScrollTop is not working, probably because the cursor # otherwise setScrollTop is not working, probably because the cursor
# addition happens asynchronously # addition happens asynchronously
setTimeout ( -> setTimeout ( ->
logger.verbose('restore editor positions', posArray,origScrollTop)
setCursors(editor, posArray) setCursors(editor, posArray)
setScrollTop(editor, origScrollTop) setScrollTop(editor, origScrollTop)
# console.log "setScrollTop" # console.log "setScrollTop"

View File

@ -57,7 +57,8 @@ module.exports = do ->
label = "#{path.dirname(transport.label)\ label = "#{path.dirname(transport.label)\
.split(path.sep).reverse()[0]}\ .split(path.sep).reverse()[0]}\
#{path.sep}#{path.basename(transport.label)}" #{path.sep}#{path.basename(transport.label)}"
console.log("#{label} [#{level}]: #{msg}", meta) d = new Date()
console.log("#{d.toLocaleDateString()} #{d.toLocaleTimeString()} - #{label} [#{level}]: #{msg}", meta)
) )
# Export logger methods # Export logger methods
loggerMethods = ['silly','debug','verbose','info','warn','error'] loggerMethods = ['silly','debug','verbose','info','warn','error']