国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

做一個運行Python文件的Atom插件

Genng / 1441人閱讀

摘要:由于這個插件有式的程序返回值和運行時間的顯示,我希望我的插件也具有這個功能。這個命令在后臺其實會做很多事情,比如設(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的pathchild_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ā)布成功了。這個命令可以接受minormajorpatch三個參數(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

相關(guān)文章

  • Top 10 JavaScript編輯器,你在用哪個?

    摘要:在這個編輯器中,和是其中排名靠前的兩個。是一個免費的輕量級編輯器和,用于和開發(fā)。對于免費的代碼編輯器來說,是一個很好的選擇。可以安裝兩個命令行實用程序,用于從啟動編輯器,用于管理的軟件包。 對于JavaScript程序員來說,目前有很多很棒的工具可供選擇。本文將會討論10個優(yōu)秀的支持javascript,HTML5和CSS開發(fā),并且可以使用Markdown進行文檔編寫的文本編輯器。為什...

    zombieda 評論0 收藏0
  • 開始開發(fā)atom插件(并無系列)

    摘要:注意本文目的不在開發(fā)一個什么什么插件,只告訴你如何進行開發(fā)注下文并無太多代碼,代碼建議到你新建一個模版插件然后你就擁有了所有的代碼,然后根據(jù)下文加深自己的理解,相信你會看懂它。開始開發(fā)入口文件有個方法釋放資源的方法不要做其他事情。 atom高級用法???除了自定義功能基本沒啥好玩,抱著裝逼的想法,搜了一波atom插件入門,發(fā)現(xiàn)說得太迷糊(可能是我太菜),然后打開了官網(wǎng)的插件文檔,細(xì)細(xì)的...

    solocoder 評論0 收藏0
  • JS/React 開發(fā)者 Atom 終極配置

    摘要:開發(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...

    LiangJ 評論0 收藏0
  • JavaScript開發(fā)工具大全

    摘要:發(fā)布于之后,采用了完全不同的方式,使用函數(shù)定義任務(wù)。它允許開發(fā)者使用它們的補丁和更新來修復(fù)這些安全漏洞。提供了工具用于掃描依賴來監(jiān)測漏洞。是一個開源診斷工具,用于和應(yīng)用。是和開發(fā)的一款新的包管理工具。與相比,它解決了安全性能以及一致性問題。 譯者按: 最全的JavaScript開發(fā)工具列表,總有一款適合你! 原文: THE ULTIMATE LIST OF JAVASCRIPT TOO...

    nifhlheimr 評論0 收藏0
  • 13個VSCode使用技巧,開啟高效開發(fā)模式

    摘要:本文分享自華為云社區(qū)使用技巧使用技巧,作者小聰不是小蔥。是一款開源的編輯器,擁有強大的功能,。由于擁有各種各樣的插件,這就使得可以做到的事情更多了。在使用的過程中,也是有很多技巧的,掌握一些技巧對于后期寫代碼也會輕松很多。 摘要:VsCode是一款開源的編輯器,擁有強大的功能,。由于擁有各...

    PumpkinDylan 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<