小编use*_*309的帖子

Emacs:为键绑定指定一个功能,重复按下后,撤消最后一次按下并在更宽的设置下重做

这是我正在尝试做的更大的图景:

使用按键,它将在最里面的关闭/打开分隔符(括号,括号,括号,等等)之后/之前插入一个左右括号.

但是如果在之后立即按下它,它将撤消最后一次插入,找出下一个结束分隔符,并在之后放置,依此类推.

我有第一部分的工作版本,但我正在寻找第二部分的"最佳实践"(它撤消并向外移动)

作为一个激励因素和具体的例子,这是用Python编码的典型场景.我经常使用列表推导,并且经常构造列表,然后决定我要总结所有元素等等.所以我先输入:

[x*x for x in some_lst if is_prime(x)]
Run Code Online (Sandbox Code Playgroud)

然后我想用"sum"命令封装这个列表:

sum([x*x for x in some_lst if is_prime(x)])
Run Code Online (Sandbox Code Playgroud)

我不想继续将光标移动到开头和结尾只是为了插入括号.我宁愿在列表中找到要点,按一下键,让它找出分隔符,然后将标记放在开头插入的括号之前,这样我就可以输入"sum".我的下面的功能似乎工作(捎带在"扩展区域"包):

(defun add-paren ()
  (interactive)
  (er/mark-outside-pairs)
  (exchange-point-and-mark)
  (insert-string ")")
  (exchange-point-and-mark)
  (insert-string "(")
  (left-char 1)
  )
Run Code Online (Sandbox Code Playgroud)

第二步的最佳做法是什么?

(对上述内容的任何建议/改进也将不胜感激.这是我在Elisp中的第一个"真实"功能.)

谢谢.

更新:感谢大家的提示.我可能会在最终解决方案中使用其中一些.我的原始问题仍然存在:是否存在"大规模撤消和重做"的标准模式,或者每个问题都有自己的自定义解决方案?假设我smartparens按照建议使用在一次击键中完成所有操作,但我希望它在第3级出现.我想要的是按下击键3次并将括号放在那里.

所以在第一次击键后,它将括号放在最里面.再次按下它应该删除插入的括号,并将它们放在下一级,依此类推......

(顺便说一句,不要试图重新发明轮子.我怀疑列出的一些软件包可能正是我需要的 - 我只想在Elisp中练习编码).

更新2: 我想这没有最好的做法?无论如何,我用expand-region和解决了这个问题smartparens:

(defun add-paren ()
  (interactive)
  (if (eq last-command 'add-paren)
      ;; (message "AAAA")
      (delete-paren)
    )
  (setq currpoint (point))
  (er/mark-outside-pairs)
  (if (eq currpoint (point))
      (er/mark-outside-pairs)
    )
  (sp-wrap-with-pair …
Run Code Online (Sandbox Code Playgroud)

emacs elisp

5
推荐指数
1
解决办法
136
查看次数

使用基于日期的条目填充 Pandas 数据框

我有一个 Pandas DataFrame,如下所示:

            Amount
Date              
2013-12-31  140.99
2014-01-31   24.97
2014-02-28   30.69
2014-03-31    0.00
2014-04-30    0.00
2014-05-31    0.00
2014-06-30    0.00
2014-07-31    0.00
2014-08-31  183.71
2014-09-30    0.00
2014-10-31    0.00
2014-11-30   59.87
2014-12-31   26.92
Expense
Run Code Online (Sandbox Code Playgroud)

这是由*df.resample("M", how="sum")*命令生成的。

这又是由*df = df[df["Date"] < end_date]*命令生成的(此外,该 *Date*列被设为索引)。

我的问题:

时间*end_date*是 2015 年 3 月 1 日。

但是,2014 年 12 月 31 日之后数据框没有条目。

我需要像 2015-01-01 和 2015-02-01 这样的条目(它们可能是 NaN,在这种情况下我将使用*fillna*它们将它们设置为 0)。

我怎样才能生成这些条目(从算法上来说 - 我在几个数据集上执行此操作,每个数据集在不同的月份结束,所以我无法手动填写它们)?

实际上,我需要在两端都这样做(开始和结束)。

谢谢。

python dataframe pandas

5
推荐指数
1
解决办法
2067
查看次数

如何在重构文本中制作脚注看起来像没有括号的上标?

我是CSS和reStructuredText的初学者.我正在写reST并导出为HTML.我正在使用的脚注的语法是[#]_,在生成的HTML中,显示为[1].我想将脚注改为上标.reST为写入的HTML中的所有脚注分配一个类,因此我可以利用它并利用此解决方案获取脚注引用上标.但是,如何剥离[]括号?

css restructuredtext

3
推荐指数
1
解决办法
531
查看次数

标签 统计

css ×1

dataframe ×1

elisp ×1

emacs ×1

pandas ×1

python ×1

restructuredtext ×1