簡體   English   中英

自動擴展emacs中的注釋塊

[英]Auto expanding blocks of comments in emacs

我希望任何評論都顯示在自己的行上。 我不喜歡在代碼所在的行上添加注釋。 在某些語言中,您可以編寫注釋塊,例如:

/**
 * I am a comment block. This comment block will be automatically expanded by the
 * IDE such that it can contain all of the text in this block.
**/

我喜歡。 我喜歡在向其添加更多文本時,注釋塊不斷獲得更多行的方式。 我喜歡如果我在塊中的任意位置插入文本,隨后的文本將被向下移動,以使文本不會超出右邊的特定點。 我使用Python。 Python沒有多行塊注釋。 我想您可以得到的最接近的是:

# I am a comment block.  This comment block will NOT be automatically expanded by
# the IDE, because it does not recognize these two comment lines as being joined.

我也使用emacs。 我只是想知道是否有人有一些聰明的解決方案,以便他們可以打開注釋框並開始輸入內容。 當注釋行的寬度太大時,不必擔心必須按回車鍵才能跳到下一行。 當您希望在注釋塊中插入時,不必重新整體整理注釋。 有任何想法嗎?

簡介:我正在尋找一種在emacs中進行多行連續注釋(對於Python)的方法,而不必手動設置注釋塊本身中的文本格式。

謝謝

auto-fill-mode似乎可以滿足您的需求。 當行的長度超過fill-column的值時,它將中斷該行並插入新的注釋行。

但是,它不是完全自動的,如果在之間插入了文本,則必須按Mq才能重新填充。

[編輯:這是一種智能化“空格”命令的方法。 每次按SPC,您的評論欄都會重新填充:

(defun refill-when-in-comment ()
  (interactive)
  (let ((curr-face (get-char-property (point) 'face)))
    (if (member "comment" (split-string (prin1-to-string curr-face) "-"))
        (fill-paragraph t)
      )
    )
  )

(defun smart-space (arg)
  (interactive "P")
  (refill-when-in-comment)
  (self-insert-command (prefix-numeric-value arg))
  )

(global-set-key " " 'smart-space)

這對您有用嗎?

這有點不合常規,但您不僅限於使用字符串作為文檔字符串的注釋。 將它們作為第一項的唯一神奇之處在於,它們將被分配給對象__doc__方法。 雖然它們可以在任何地方使用,但完全不會影響效率

>>> import dis
>>> def test():
...     """This is a standard doc string"""
...     a = 3  # This will get compiled
...     """This is a non standard doc string and will not get compiled"""
... 
>>> dis.dis(test)
  3           0 LOAD_CONST               1 (3)
              3 STORE_FAST               0 (a)

  4           6 LOAD_CONST               2 (None)
              9 RETURN_VALUE

您會看到生成的代碼沒有對兩個字符串中的任何一個進行任何引用。

我之所以僅提及這是因為文檔字符串似乎具有您所要求的所有功能。 盡管我個人認為它沒有問題,但它有些不規范。 多行注釋會很好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM