commit f42db4b6e1598c12924cce4bbe4d67e6d86b7963 (HEAD, refs/remotes/origin/master) Author: Eli Zaretskii Date: Fri May 29 23:02:10 2020 +0300 Another fix of display of line-prefix with fringe bitmaps * src/xdisp.c (redisplay_internal): Don't use "optimization 1" if a glyph row from which to start display begins with a display property that draws into the fringes. (Bug#41584) diff --git a/src/xdisp.c b/src/xdisp.c index 47246d0690..db0ec68315 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -15566,6 +15566,12 @@ redisplay_internal (void) if (it.current_x != this_line_start_x) goto cancel; + /* Give up on this optimization if the line starts with a + string with display property that draws on the fringes, + as that might interfere with line-prefix display. */ + if (it.sp > 1 + && it.method == GET_FROM_IMAGE && it.image_id == -1) + goto cancel; redisplay_trace ("trying display optimization 1\n"); w->cursor.vpos = -1; overlay_arrow_seen = false; commit 187fe4310834af72ecfcc5068af464c2e5f14b9a Author: Stefan Monnier Date: Fri May 29 15:01:58 2020 -0400 * lisp/emacs-lisp/package.elm lisp/emacs-lisp/smie.el: Fix indent Use the new "space after paren" convention to get the desired indentation diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index 9a6d1d7319..6298244c39 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -690,9 +690,9 @@ updates `package-alist'." (progn (package-load-all-descriptors) package-alist))) -(defun define-package (_name-string _version-string - &optional _docstring _requirements - &rest _extra-properties) +(defun define-package ( _name-string _version-string + &optional _docstring _requirements + &rest _extra-properties) "Define a new package. NAME-STRING is the name of the package, as a string. VERSION-STRING is the version of the package, as a string. @@ -1219,8 +1219,8 @@ The return result is a `package-desc'." cipher-algorithm digest-algorithm compress-algorithm)) -(declare-function epg-verify-string "epg" (context signature - &optional signed-text)) +(declare-function epg-verify-string "epg" ( context signature + &optional signed-text)) (declare-function epg-context-result-for "epg" (context name)) (declare-function epg-signature-status "epg" (signature) t) (declare-function epg-signature-to-string "epg" (signature)) diff --git a/lisp/emacs-lisp/smie.el b/lisp/emacs-lisp/smie.el index 60d8fa591e..38a7b8b54c 100644 --- a/lisp/emacs-lisp/smie.el +++ b/lisp/emacs-lisp/smie.el @@ -52,6 +52,13 @@ ;; error because the parser just automatically does something. Better yet, ;; we can afford to use a sloppy grammar. +;; The benefits of this approach were presented in the following article, +;; which includes a kind of tutorial to get started with SMIE: +;; +;; SMIE: Weakness is Power! Auto-indentation with incomplete information +;; Stefan Monnier, Journal 2020, volumn 5, issue 1. +;; doi: 10.22152/programming-journal.org/2020/5/1 + ;; A good background to understand the development (especially the parts ;; building the 2D precedence tables and then computing the precedence levels ;; from it) can be found in pages 187-194 of "Parsing techniques" by Dick Grune @@ -63,6 +70,7 @@ ;; Since then, some of that code has been beaten into submission, but the ;; smie-indent-keyword is still pretty obscure. + ;; Conflict resolution: ;; ;; - One source of conflicts is when you have: @@ -1356,9 +1364,9 @@ Only meaningful when called from within `smie-rules-function'." (funcall smie-rules-function :elem 'basic)) smie-indent-basic)) -(defun smie-indent--rule (method token - ;; FIXME: Too many parameters. - &optional after parent base-pos) +(defun smie-indent--rule ( method token + ;; FIXME: Too many parameters. + &optional after parent base-pos) "Compute indentation column according to `smie-rules-function'. METHOD and TOKEN are passed to `smie-rules-function'. AFTER is the position after TOKEN, if known. commit ba292ea330b55b06f4742e4aae397ef64086d3dc Author: Dmitry Gutov Date: Fri May 29 21:37:12 2020 +0300 project-prompt-project-dir: Use more consistent prompts * lisp/progmodes/project.el (project-prompt-project-dir): Use more consistent prompts. diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el index 92293d0e2d..1f2a4e8471 100644 --- a/lisp/progmodes/project.el +++ b/lisp/progmodes/project.el @@ -783,9 +783,9 @@ It's also possible to enter an arbitrary directory." ;; completion style). (project--file-completion-table (append project--list `(,dir-choice)))) - (pr-dir (completing-read "Project: " choices nil t))) + (pr-dir (completing-read "Select project: " choices nil t))) (if (equal pr-dir dir-choice) - (read-directory-name "Choose directory: " default-directory nil t) + (read-directory-name "Select directory: " default-directory nil t) pr-dir))) commit dc15e70ddd0dd01a24aa181d8ebb4718df0592c9 Author: Eli Zaretskii Date: Fri May 29 17:00:52 2020 +0300 Fix display of line-prefix with fringe bitmaps * src/xdisp.c (try_window_id): Don't use this optimization if a glyph row from which to start display begins with a display property that draws into the fringes. (Bug#41584) diff --git a/src/xdisp.c b/src/xdisp.c index f5a8f2eabf..47246d0690 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -20338,6 +20338,12 @@ try_window_id (struct window *w) if (! init_to_row_end (&it, w, last_unchanged_at_beg_row)) GIVE_UP (18); + /* Give up if the row starts with a display property that draws + on the fringes, since that could prevent correct display of + line-prefix and wrap-prefix. */ + if (it.sp > 1 + && it.method == GET_FROM_IMAGE && it.image_id == -1) + GIVE_UP (26); start_pos = it.current.pos; /* Start displaying new lines in the desired matrix at the same commit c74e24eacd2cfb182e2159a23db21cfbec73cced Author: Eli Zaretskii Date: Fri May 29 16:30:44 2020 +0300 Commit indian.el forgotten in previous change. diff --git a/lisp/leim/quail/indian.el b/lisp/leim/quail/indian.el index 2681eab0e5..100ae63f6a 100644 --- a/lisp/leim/quail/indian.el +++ b/lisp/leim/quail/indian.el @@ -117,6 +117,7 @@ indian-knd-itrans-v5-hash "kannada-itrans" "Kannada" "KndIT" "Kannada transliteration by ITRANS method.") +;; ITRANS not applicable to Malayalam & could be removed eventually (if nil (quail-define-package "malayalam-itrans" "Malayalam" "MlmIT" t "Malayalam ITRANS")) (quail-define-indian-trans-package @@ -358,24 +359,23 @@ Full key sequences are listed below:") '( (;; VOWELS (18) (?D nil) (?E ?e) (?F ?f) (?R ?r) (?G ?g) (?T ?t) - (?+ ?=) ("F]" "f]") (?! ?@) (?S ?s) (?Z ?z) (?W ?w) - (?| ?\\) (?~ ?`) (?A ?a) (?Q ?q) ("+]" "=]") ("R]" "r]")) + (?= ?+) nil nil (?S ?s) (?Z ?z) (?W ?w) + nil (?~ ?`) (?A ?a) (?Q ?q)) (;; CONSONANTS (42) ?k ?K ?i ?I ?U ;; GRUTTALS ?\; ?: ?p ?P ?} ;; PALATALS ?' ?\" ?\[ ?{ ?C ;; CEREBRALS - ?l ?L ?o ?O ?v ?V ;; DENTALS + ?l ?L ?o ?O ?v nil ;; DENTALS ?h ?H ?y ?Y ?c ;; LABIALS - ?/ ?j ?J ?n ?N "N]" ?b ;; SEMIVOWELS + ?/ ?j ?J ?n ?N ?B ?b ;; SEMIVOWELS ?M ?< ?m ?u ;; SIBILANTS - "k]" "K]" "i]" "p]" "[]" "{]" "H]" "/]" ;; NUKTAS - ?% ?&) + nil nil nil nil nil nil nil nil nil) ;; NUKTAS (;; Misc Symbols (7) - ?X ?x ?_ ">]" ?d "X]" ?>) + nil ?x ?_ nil ?d) (;; Digits ?0 ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9) - (;; Inscripts - ?# ?$ ?^ ?* ?\]))) + (;; Chillus + "Cd" "Cd]" "vd" "vd]" "jd" "jd]" "nd" "nd]" "Nd" "Nd]"))) (defvar inscript-tml-keytable '( @@ -463,6 +463,9 @@ Full key sequences are listed below:") "malayalam-inscript" "Malayalam" "MlmIS" "Malayalam keyboard Inscript.") +(quail-defrule "\\" ?‌) +(quail-defrule "X" ?​) + (if nil (quail-define-package "tamil-inscript" "Tamil" "TmlIS" t "Tamil keyboard Inscript")) (quail-define-inscript-package @@ -571,4 +574,72 @@ Full key sequences are listed below:") ("?" ?\?) ("/" ?্)) +(defun indian-mlm-mozhi-update-translation (control-flag) + (let ((len (length quail-current-key)) chillu + (vowels '(?a ?e ?i ?o ?u ?A ?E ?I ?O ?U ?R))) + (cond ((numberp control-flag) + (progn (if (= control-flag 0) + (setq quail-current-str quail-current-key) + (cond (input-method-exit-on-first-char) + ((and (memq (aref quail-current-key + (1- control-flag)) + vowels) + (setq chillu (cl-position + (aref quail-current-key + control-flag) + '(?m ?N ?n ?r ?l ?L)))) + ;; conditions for putting chillu + (and (or (and (= control-flag (1- len)) + (not (setq control-flag nil))) + (and (= control-flag (- len 2)) + (let ((temp (aref quail-current-key + (1- len)))) + ;; is it last char of word? + (not + (or (and (>= temp ?a) (<= temp ?z)) + (and (>= temp ?A) (<= temp ?Z)) + (eq temp ?~)))) + (setq control-flag (1+ control-flag)))) + (setq quail-current-str ;; put chillu + (concat (if (not (stringp + quail-current-str)) + (string quail-current-str) + quail-current-str) + (string + (nth chillu '(?ം ?ൺ ?ൻ ?ർ ?ൽ ?ൾ))))))))) + (and (not input-method-exit-on-first-char) control-flag + (while (> len control-flag) + (setq len (1- len)) + (setq unread-command-events + (cons (aref quail-current-key len) + unread-command-events)))) + )) + ((null control-flag) + (unless quail-current-str + (setq quail-current-str quail-current-key) + )) + ((equal control-flag t) + (if (memq (aref quail-current-key (1- len)) ;; If vowel ending, + vowels) ;; may have to put + (setq control-flag nil))))) ;; chillu. So don't + control-flag) ;; end translation + +(quail-define-package "malayalam-mozhi" "Malayalam" "MlmMI" t + "Malayalam transliteration by Mozhi method." + nil nil t nil nil nil t nil + 'indian-mlm-mozhi-update-translation) + +(maphash + (lambda (key val) + (quail-defrule key (if (= (length val) 1) + (string-to-char val) + (vector val)))) + (cdr indian-mlm-mozhi-hash)) + +(defun indian-mlm-mozhi-underscore (key len) (throw 'quail-tag nil)) + +(quail-defrule "_" 'indian-mlm-mozhi-underscore) +(quail-defrule "|" ?‌) +(quail-defrule "||" ?​) + ;;; indian.el ends here commit 9050f0f1bcb58ea10c7da7d415f06c2c4ae2daed Author: Michael Albinus Date: Fri May 29 11:41:54 2020 +0200 * lisp/net/tramp-smb.el (tramp-smb-errors): Add "NT_STATUS_INVALID_PARAMETER". diff --git a/lisp/net/tramp-smb.el b/lisp/net/tramp-smb.el index e0f5e05eb0..2088d23628 100644 --- a/lisp/net/tramp-smb.el +++ b/lisp/net/tramp-smb.el @@ -146,6 +146,7 @@ this variable (\"client min protocol=NT1\") ." "NT_STATUS_HOST_UNREACHABLE" "NT_STATUS_IMAGE_ALREADY_LOADED" "NT_STATUS_INVALID_LEVEL" + "NT_STATUS_INVALID_PARAMETER" "NT_STATUS_INVALID_PARAMETER_MIX" "NT_STATUS_IO_TIMEOUT" "NT_STATUS_LOGON_FAILURE"