Encontre e substitua todo o buffer para o emacs23

0

Eu tenho usado o emacs há anos, mas não sou um especialista. Quando recebi a minha nova versão do Ubuntu, obtive a versão mais recente do emacs (24), mas detestei-a, por isso voltei ao emacs23. É como o que eu estou acostumado, exceto que a função localizar e substituir não funciona como eu quero. Estou acostumado a estar em qualquer lugar em um documento, aperte M-x%, digite minha pesquisa e substitua strings, tecle enter e substitua pelo resto do documento. Não faz mais isso. Se eu não selecionar uma região, ela nem tentará encontrar nenhuma instância. Se eu tiver selecionado uma região, e ela estiver totalmente visível na minha janela, ela fará a pesquisa e substituirá. Se eu destacar uma região maior que minha janela, ela só pesquisará e substituirá na parte visível da região. Isso é enlouquecedor.

Eu acho que tem algo a ver com 'transient-mark-mode', que por padrão está aparentemente no emacs23, e as pessoas descrevem o comportamento que estou vendo. Mas quando eu desligo com M-x transit-mark-mode, ou no meu arquivo .emacs, nada muda. O que estou fazendo errado?

    
por soulish 29.11.2014 / 04:01

1 resposta

0

Não consigo reproduzir seu problema, mas pode ser que você tenha ativado o modo cua e evite desativar o modo de marca transiente. Tente alternar M-x cua-mode até que você tenha desativado e, depois, alterne M-x transient-mark-mode até que ele seja desativado . Então, verifique se isso resolve você.

Origem

Como nota, parece estranho para mim, que você gosta do Emacs23 (já que você o usava há anos) e odeia o Emacs24. O que deu errado quando você tentou o Emacs24?

Editar

Aqui está o query-replace-regexp-to-the-end-of-buffer-or-in-a-region defun que faz o que você quer:

(defun query-replace-regexp-to-the-end-of-buffer-or-in-a-region (point)
  "If there's a region - query replaces regexp in region, 
   otherwise replaces from current point to the end of buffer."
  (interactive "d")
  (let (start end)
    (if (use-region-p)
        (progn (setq start (region-beginning)) ;; then
               (setq end (region-end)))
      (progn (setq start point) ;; else
             (setq end (point-max))))
    (set-mark start)
    (goto-char end)
    (apply #'query-replace-regexp 
           (let ((common (query-replace-read-args (concat "Query replace regexp") t))) 
             (list (nth 0 common) (nth 1 common) (nth 2 common) (if (and transient-mark-mode mark-active) (region-beginning)) (if (and transient-mark-mode mark-active) (region-end)))))))

Basta vinculá-lo a alguma chave, talvez até mesmo a M-% .

    
por Adobe 10.12.2014 / 12:14