From 67b2d6c072d28ac00601edd536dcc7b5c725464b Mon Sep 17 00:00:00 2001 From: lemarcantoine Date: Wed, 4 Apr 2018 16:16:29 -0300 Subject: [PATCH 1/3] Fixed editor freezing when saving one-line files Old method needed a newline character to stop, resulting in an endless loop when compiling a one-line file --- lib/firstline.coffee | 36 ++++-------------------------------- 1 file changed, 4 insertions(+), 32 deletions(-) diff --git a/lib/firstline.coffee b/lib/firstline.coffee index 06c2bcb..46ae19b 100644 --- a/lib/firstline.coffee +++ b/lib/firstline.coffee @@ -3,38 +3,10 @@ fs = require 'fs' class FirstLine read: (filepath, callback) -> @callback = callback - fs.open filepath, 'r', (err, fd) => - if (err) - callback err - else - @stats fd - - stats: (fd) -> - fs.fstat fd, (err, stats) => - @startReading fd, stats.size - - startReading: (fd, size) -> - @fd = fd - - @buffer = new Buffer size - @buffer.fill 0 - @offset = 0 - @readFile() - - readFile: -> - length = Math.min(16, @buffer.length - @offset) - fs.read @fd, @buffer, @offset, length, null, @onRead - - onRead: (err, bytesRead, buffer) => - newline = buffer.indexOf '\n', @offset - - if newline > -1 - fs.close @fd, (err) -> console.log err if err - line = buffer.toString undefined, 0, newline - @callback null, line - else - @offset += bytesRead - @readFile() + fs.readFile filepath, (err, fileData) => + if err != null + callback err + callback null, fileData.toString().match /.*/ module.exports = FirstLine From 0508c2dcef6b75a1d23a98a0b16210d250775a99 Mon Sep 17 00:00:00 2001 From: lemarcantoine Date: Wed, 4 Apr 2018 16:17:03 -0300 Subject: [PATCH 2/3] Compilation now triggered after the file is saved on disk The old method triggered the LESS compilation on "core:save" which happens before the new file content is actually written on the disk. With the "onDidSave", you don't need to save your file twice to get your changes compiled. --- lib/atom-less.coffee | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/lib/atom-less.coffee b/lib/atom-less.coffee index 193c221..90963dd 100644 --- a/lib/atom-less.coffee +++ b/lib/atom-less.coffee @@ -1,25 +1,15 @@ -{CompositeDisposable} = require 'atom' - renderer = require './less-renderer' module.exports = activate: (state) -> - @subscriptions = new CompositeDisposable - - @subscriptions.add atom.commands.add 'atom-workspace', - 'core:save': => @render() + atom.workspace.observeTextEditors (editor) => + editor.onDidSave (event) => + @render event.path deactivate: -> @subscriptions.dispose() serialize: -> - render: -> - editor = atom.workspace.getActiveTextEditor() - return if not editor - - grammer = editor.getGrammar() - return if grammer.name.toLowerCase() != 'less' - - filepath = editor.getPath() + render: (filepath) -> renderer.render filepath From 2d6ab54bd4909864a9a1c224c9c82e8aad22c269 Mon Sep 17 00:00:00 2001 From: lemarcantoine Date: Wed, 4 Apr 2018 16:18:08 -0300 Subject: [PATCH 3/3] Increased version number --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 093af1b..4b8c87b 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "atom-less", "main": "./lib/atom-less", - "version": "0.1.10", + "version": "0.1.11", "description": "Atom plugin to compile .less files on save.", "keywords": [ "atom",