sorting - 如何让 Emacs 按长度对行进行排序?

标签 sorting emacs elisp

我希望能够在 Emacs 中突出显示某个区域,然后按行长度对该区域进行排序。

我发现的最接近的是以下代码,我认为它会按长度排序:

 (sort-subr t #'forward-line #'end-of-line nil nil 
             (lambda (l1 l2) 
               (apply #'< (mapcar (lambda (range) (- (cdr range) (car range))) 
                                  (list l1 l2))))) 

但我不知道如何将其变成交互式功能,让我可以通过突出显示某个区域来使用它。有人可以帮忙吗?

最佳答案

您可以将 sort-lines 命令定义与代码片段结合起来形成一个新命令:

(defun sort-lines-by-length (reverse beg end)
  "Sort lines by length."
  (interactive "P\nr")
  (save-excursion
    (save-restriction
      (narrow-to-region beg end)
      (goto-char (point-min))
      (let ;; To make `end-of-line' and etc. to ignore fields.
          ((inhibit-field-text-motion t))
        (sort-subr reverse 'forward-line 'end-of-line nil nil
                   (lambda (l1 l2)
                     (apply #'< (mapcar (lambda (range) (- (cdr range) (car range)))
                                        (list l1 l2)))))))))

关于sorting - 如何让 Emacs 按长度对行进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30697523/

相关文章:

python - 找到具有最多值的键并打印其值(字典,python)

c++ - 按在 C++ 中接受参数的函数排序?

emacs - evil-mode Emacs 中的键映射

r - 如何在 ESS/Emacs 中设置 R 进程的后台?

emacs - 打开窗口并在 emacs lisp 中加载特定缓冲区

C++ 计数排序

python - 根据模式对列表进行数字排序

emacs - 为什么 set-default-font 会影响 find-file-other-window?

json - Emacs 中类似模型/ View 的编辑

java - Emacs-公司 : An error occurred in auto-begin Invalid function