摘要:由于這個插件有式的程序返回值和運行時間的顯示,我希望我的插件也具有這個功能。這個命令在后臺其實會做很多事情,比如設(shè)置中的版本號添加版本標(biāo)簽并提交到版本庫中。可以看到第一次提交插件的版本號為。
最近在學(xué)習(xí)Python,自然也安裝了Atom編輯器的一些Python插件。有一個插件名字叫做atom-python-run,作用很簡單,就是按F5運行當(dāng)前Python文件。不過這個插件有一個問題,就是只能在Windows平臺上以cmd方式運行。我希望這個插件能支持Powershell方式運行,所以我就給作者提了Issue。結(jié)果發(fā)現(xiàn)Issue還不少。而作者正好比較忙,目前沒工夫。所以我就想,為什么不自己做一個Atom插件呢?
以上就是我開發(fā)這個插件的目的了。這個插件的主要功能就是按F5啟動一個終端運行Python文件,終端可以是cmd也可以是powershell。
編寫插件這個插件我就叫它run-python-simply,聽名字應(yīng)該就能猜出它的作用。首先打開Atom編輯器,然后點擊菜單欄Packages->Package Generator->Generate Package,輸入要創(chuàng)建的插件名字,然后按回車。
時間統(tǒng)計在編寫插件之前,我們首先分析一下插件的需求。由于atom-python-run這個插件有CodeBlocks式的程序返回值和運行時間的顯示,我希望我的插件也具有這個功能。看了一下atom-python-run的源代碼,作者的實現(xiàn)方式是寫一個C++程序,用這個C++程序調(diào)用Python文件,時間統(tǒng)計在C++程序中。我這里就不使用C++了,既然是Python的插件,那么我這里就使用Python來統(tǒng)計時間。
下面的腳本很簡單,要執(zhí)行的文件通過命令行參數(shù)傳入。程序返回的結(jié)果附帶時間統(tǒng)計和返回值的,這個和atom-python-run插件的輸出結(jié)果相同。
# Python 3 file import subprocess import time import sys script = sys.argv[1] start = time.time() process = subprocess.run(["python", script], stderr=subprocess.STDOUT) exitcode = process.returncode end = time.time() seconds = end - start print() print( f"Process return {exitcode} ({hex(exitcode)}) execution time: {seconds:.03f} s") subprocess.call("pause", shell=True)主要代碼
插件的主要代碼我使用了CoffeeScript編寫。默認(rèn)自動生成的代碼有兩個,一個視圖,另一個是代碼。由于我們這個插件不需要顯示什么內(nèi)容,所以那個View文件直接刪了就行。剩下一個文件寫成下面這樣。
這個文件的實現(xiàn)參考了atom-python-run。由于我也是剛剛學(xué)習(xí)編寫插件,對于插件怎么寫還是不太懂,所以最簡單的辦法就是參考另一個插件了。當(dāng)然即使是參考,過程也是很痛苦的。因為我畢竟對JavaScript和CoffeeScript不太熟悉,有些簡單的地方也浪費了不少時間。而且插件的調(diào)試也不太方便,需要開兩個Atom窗口,一個修改完之后,重載另一個。
寫完之后再看看代碼,并不怎么難。由于代碼時間的統(tǒng)計已經(jīng)做Python文件中做好了,所以在這里只需要調(diào)用那個Python,讓Python調(diào)用實際的Python文件就行了。
這里用到的知識點有NodeJS的path、child_process模塊。具體用法看NodeJS文檔就好了。還有就是幾個Atom接口的使用:notifications用來創(chuàng)建通知,就是右上角的氣泡通知;atom.config用來獲取Atom的配置項;config節(jié)點用來添加插件的配置。具體使用到時不難,看Atom的文檔就行了。
{CompositeDisposable} = require "atom" child_process = require "child_process" path = require "path" module.exports = RunPythonSimply = subscriptions: null activate: (state) -> @subscriptions = new CompositeDisposable @subscriptions.add atom.commands.add "atom-workspace", "run-python-simply:toggle": => @toggle() deactivate: -> @subscriptions.dispose() serialize: -> toggle: -> editor = atom.workspace.getActiveTextEditor() if editor file = editor.buffer.file if file fileInfo = path.parse(file.path) if fileInfo.ext != ".py" atom.notifications.add("warning", "Current file is not a python source file") else editor.save() @run(file.path) else atom.notifications.add("info", "No source file to run") run: (file)-> command = atom.config.get("run-python-simply.command") args = command.split(" ").concat(["python", __dirname + path.sep + "exec.py", file]) process = child_process.spawn("start", args, { shell: true detached: true }) process.unref() config: command: title: "Command Prompt" type: "string" default: "cmd /c" enum: [ {value: "cmd /c", description: "Command Line Prompt"} {value: "powershell -command", description: "Powershell"} ]
其實Atom的插件系統(tǒng)比我想的要簡單。一開始我覺得Atom插件要做的事情其實還挺多,還要自己管理自己的配置對話框。后來我發(fā)現(xiàn)根本不需要,Atom的系統(tǒng)比較智能。就像上面代碼中的那樣,只要我們在代碼中聲明了一個config元素,編輯器就會自動生成對應(yīng)的配置界面。比方說上面我聲明了兩個enum,編輯器那么編輯器就自動生成了下拉列表。
本來在寫這個插件的時候我有很多想法準(zhǔn)備總結(jié)一下,后來寫完了回頭一看感覺也就這樣。沒什么說的了,大家都是聰明人,看看就得了。所以就這樣吧。
發(fā)布插件 推送到Github代碼寫完之后,就能發(fā)布了。首先需要將它推送到Github。我們在Github上創(chuàng)建一個倉庫,然后把代碼推進去就好了。如果對Git命令不熟悉的話,可以使用Git Extensions,這是Windows下最好用的圖形客戶端了。
發(fā)布插件第一步是輸入apm login。這樣會在瀏覽器中打開一個網(wǎng)頁,在網(wǎng)頁上登錄Atom賬號之后,復(fù)制網(wǎng)頁上的Token,然后粘貼回命令行中,再按回車。這樣就完成了登錄工作。
登錄之后,命令行切到我們插件的Git目錄中,然后輸入apm publish minor,稍等片刻插件就發(fā)布成功了。這個命令可以接受minor、major、patch三個參數(shù),當(dāng)我們需要更新大版本、小版本、修訂版本的時候使用。
這個命令在后臺其實會做很多事情,比如設(shè)置package.json中的版本號、添加版本標(biāo)簽并提交到版本庫中。完成之后,會顯示下面這樣的祝賀信息。這樣,插件就發(fā)布完成了。可以看到第一次提交插件的版本號為v0.0.1。如果我們查看一下Github倉庫,也會發(fā)現(xiàn)多了一個名為Prepare v0.0.1的提交。
這時候搜索一下Atom插件倉庫,會發(fā)現(xiàn)我們的插件已經(jīng)成功出現(xiàn)在了插件倉庫中。這樣這個插件就算開發(fā)完成了!插件地址是run-python-simply,源代碼地址是Github。這個插件作用很簡單,就是在cmd或者powershell中運行當(dāng)前的Python文件,有興趣的同學(xué)可以下載試試。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/38587.html
摘要:在這個編輯器中,和是其中排名靠前的兩個。是一個免費的輕量級編輯器和,用于和開發(fā)。對于免費的代碼編輯器來說,是一個很好的選擇。可以安裝兩個命令行實用程序,用于從啟動編輯器,用于管理的軟件包。 對于JavaScript程序員來說,目前有很多很棒的工具可供選擇。本文將會討論10個優(yōu)秀的支持javascript,HTML5和CSS開發(fā),并且可以使用Markdown進行文檔編寫的文本編輯器。為什...
摘要:注意本文目的不在開發(fā)一個什么什么插件,只告訴你如何進行開發(fā)注下文并無太多代碼,代碼建議到你新建一個模版插件然后你就擁有了所有的代碼,然后根據(jù)下文加深自己的理解,相信你會看懂它。開始開發(fā)入口文件有個方法釋放資源的方法不要做其他事情。 atom高級用法???除了自定義功能基本沒啥好玩,抱著裝逼的想法,搜了一波atom插件入門,發(fā)現(xiàn)說得太迷糊(可能是我太菜),然后打開了官網(wǎng)的插件文檔,細(xì)細(xì)的...
摘要:開發(fā)者的終極配置原文作者原文鏈接根據(jù)多年以來不斷完善配置的經(jīng)驗,決定這次給也來一個大改造。快捷鍵幫助開發(fā)人員在不同的編輯器之間保持一致的編碼風(fēng)格。一組專注,用于優(yōu)化現(xiàn)代開發(fā)生產(chǎn)力的命令集,目標(biāo)是符合推薦的代碼規(guī)范。 JS/React 開發(fā)者的 Atom 終極配置 原文作者:Elad Ossadon 原文鏈接:The Ultimate Atom Editor Setup (+for J...
摘要:發(fā)布于之后,采用了完全不同的方式,使用函數(shù)定義任務(wù)。它允許開發(fā)者使用它們的補丁和更新來修復(fù)這些安全漏洞。提供了工具用于掃描依賴來監(jiān)測漏洞。是一個開源診斷工具,用于和應(yīng)用。是和開發(fā)的一款新的包管理工具。與相比,它解決了安全性能以及一致性問題。 譯者按: 最全的JavaScript開發(fā)工具列表,總有一款適合你! 原文: THE ULTIMATE LIST OF JAVASCRIPT TOO...
摘要:本文分享自華為云社區(qū)使用技巧使用技巧,作者小聰不是小蔥。是一款開源的編輯器,擁有強大的功能,。由于擁有各種各樣的插件,這就使得可以做到的事情更多了。在使用的過程中,也是有很多技巧的,掌握一些技巧對于后期寫代碼也會輕松很多。 摘要:VsCode是一款開源的編輯器,擁有強大的功能,。由于擁有各...
閱讀 2647·2021-11-24 09:39
閱讀 1647·2021-11-24 09:38
閱讀 629·2021-11-22 14:44
閱讀 1887·2021-11-18 10:02
閱讀 2572·2021-11-18 10:02
閱讀 1158·2021-10-14 09:43
閱讀 4243·2021-09-29 09:35
閱讀 523·2021-07-30 15:30