Czy są jakieś różnice funkcjonalne przy użyciu konwencji dwóch spacji vs. jednej spacji na końcu zdania?


9

P: Jakie względy praktyczne są tam nie do zestawu sentence-end-double-spacedo nil?

Niedawno odnowiony wątek na temat rozpoznawania zdań, które nie kończą się dwiema spacjami, zainspirował to pytanie.

Emacs obsługi węzła przy zdaniach notatki że polecenia zdanie Zakładamy, że używamy konwencji Amerykańskiego maszynistki oddania dwie spacje na końcu zdania (w przeciwieństwie do, powiedzmy, francuski Konwencji jednej przestrzeni). Argumenty za / przeciw konwencji dwóch przestrzeni najwyraźniej stają się dość polemiczne (np. Ten kawałek Slate'a ).

Nie zwracam szczególnej uwagi na wygląd, ponieważ pozwalam LaTeXowi zajmować się ustawieniem mojego typu, ale konwencja o dwóch przestrzeniach wbija się w pamięć mięśni. Jednak kiedy wklejam tekst do bufora Emacsa z innych źródeł (stron internetowych itp.), Prawie zawsze jest to konwencja jednoprzestrzenna. To trochę irytujące w how-śmie-one-różnią-z-me rodzaju sposób, a ja jestem skłonny do zestawu sentence-end-double-space, aby nilradzić sobie z rzeczywistością. Nigdy tego nie zrobiłem, ponieważ zawsze zakładałem, że coś się zepsuje, jeśli to zrobię. Po prostu nie mam solidnych podstaw do tego założenia.

Więc: czy są jakieś praktyczne konsekwencje w postaci utraty funkcjonalności do ustawiania sentence-end-double-spacesię nil? Jedyną znaczącą zmianą, o której mogę myśleć, jest to, że funkcje wypełniania zmienią konwencję dwóch spacji na konwencję jednej spacji.


2
Uwielbiam to pytanie, całkowicie rozumiem, co czujesz ...
mbork

Nawet cytowany przez ciebie artykuł Slate'a dowodzi, że w typie monospacowym konwencja podwójnych spacji może pomóc w określeniu zakończenia zdań.
alexurba

Odpowiedzi:


9

Jedyną konsekwencją, jaką widzę, jest umiejętność rozpoznawania kropek na podstawie skrótów.

Jak stwierdził gnu.org :

Jeśli chcesz użyć tylko jednej spacji między zdaniami, możesz ustawić zmienną sentence-end-double-spacena zero, aby komendy zdania zatrzymały się dla pojedynczych spacji. Jednak ta ma wadę: nie ma sposobu, aby odróżnić okresy końcowych zdaniach i te, które wskazują na skróty .

Dlatego w celu wygodnej i niezawodnej edycji zalecamy przestrzeganie konwencji dwóch spacji. Zmienna sentence-end-double-spacewpływa również na wypełnienie .

Myślę, że nigdy nie korzystałem z konwencji dwóch spacji, to zależy od tego, jak / co edytujesz.


3

To naprawdę nie jest odpowiedź na pytanie, jak stwierdzono ( „Jak mogę stracić, jeśli ustawiony sentence-end-double-spacena nil”), ale raczej coś w rodzaju trzeciej drogi ;-). (Jest to także (częściowa) kopia posta, który właśnie napisałem na moim blogu ; jeśli to nie jest odpowiednie, ktoś to usunie, ale mam nadzieję, że może to być pomocne.)

Więc w zasadzie, dlaczego chcesz coś stracić , stawiając coś wbrew swoim upodobaniom? W końcu to Emacs!

(defvar sentence-end-double-space-threshold 2
  "How many occurrences of \".  \" per kilobyte should be enough
  to declare this file as using two spaces after sentences.")

(defun set-sentence-end-double-space ()
  "Set `sentence-end-double-space' according to how often the
  literal string \".  \" occurs in the current buffer."
  (make-local-variable 'sentence-end-double-space)
  (if (>= (* (count-matches "\\.  ") 1024)
      (* (buffer-size) sentence-end-double-space-threshold))
      (setq sentence-end-double-space t)
    (setq sentence-end-double-space nil)))

(add-hook 'find-file-hook 'set-sentence-end-double-space)     

Teraz, kiedy otwierasz plik, Emacs decyduje (używając bardzo konserwatywnej wartości sentence-end-double-space-threshold, którą możesz zrobić, setqco ci się wydaje, że masz rację), jaki to styl. (Oczywiście nie pomaga to w przypadku wklejenia z przeglądarki itp. Można to zrobić, doradzając yanki - w razie potrzeby - zastępując spacje w szarpanym tekście, jeśli to konieczne, ale hej, miałem na to tylko 15 minut!)

PS. Oczywiście nie uwzględnia okresów w EOL itp .; ale znowu próg jest bardzo niski.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.