-
Notifications
You must be signed in to change notification settings - Fork 0
/
notes.org
2891 lines (2176 loc) · 113 KB
/
notes.org
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
#+TITLE: Notes
#+AUTHOR: Alexis Roda
#+EMAIL: [email protected]
#+OPTIONS: toc:4 h:4
#+STARTUP: overview
#+LANGUAGE: ca
#+TODO: TODO(@) PAUS(@) WAIT(@) DONE(@)
#+TODO: | CANC(c@)
#+LATEX_CLASS: informe
* Xuletari
** xuletes
*** ordenar línies
Ordenar línies extraient la clau d'ordenació amb un regexp.
help:sort-regexp-fields.
*** profiling en Emacs
https://christiantietze.de/posts/2020/12/emacs-scroll-performance-projectile/
En resum:
- =M-x profiler-start=, select CPU usage
- scroll in the big file for a while
- =M-x profiler-stop=
- =M-x profiler-report= to show the measurements
[[info:elisp#Profiling][info:elisp#Profiling]]
*** squash commits amb magit
http://www.howardism.org/Technical/Emacs/magit-squashing.html
Cal que la copia de treball estigui neta. Si no ho està es pot fer un
/stash/ dels canvis (=z z= per crear-lo i =z p= per recuperar-lo).
1. en =magit-status= prémer =l l= per accedir a la història.
2. moure el cursor a la línia que conté l'últim commit que es vol
messclar.
3. prémer =r i= per iniciar el /rebase/ interactiu.
4. en el nou buffer es poden reordenar els commits (inclou una ajuda
amb les tecles disponibles). Interpreto que la idea és que els
commits que es volen fussionar apareguin junts al principi.
5. moure el cursor a l'últim commit del grup que es vol fussionar,
prémer =s= (=squash=) i =C-c C-c= per confirmar.
6. finalment apareix un buffer per fer el commit que mostra tots els
missatges. Editar com convingui i confirmar amb =C-c C-c=.
* Bugs, molèsties, millores etc.
# Aquesta secció és el target d'una plantilla de captura. Si es canvia
# el text del títol caldrà ajustar la plantilla.
Els tags utilitzats per classificar les entrades tenen el significat
següent:
- =annoyance=: molèstia, no impedeix treballar, puc conviure amb ella
però caldria adreçar-la.
- =bug=: error, comportament inesperat o sospita d'error, ja sigui en
la configuració o en un paquet extern.
- =enhancement=: millora en l'entorn de treball.
- =idea=: idea que cal deixar reposar i valorar.
- =note=: nota genèrica.
- =refactor=: millores en l'estructura/claredat/organització de la
configuració. No aporta noves funcionalitats.
- =task=: tasca genèrica.
** TODO moure funcionalitat :refactor:
Algunes configuracions activen funcionalitats o fan canvis /globals/
que no els corresponen.
Si realment són globals mirar de moure-les al /hook/ d'un mode tipus
=fundamental-mode=.
- [ ] [[file:settings.org::*=abbrev=][=abbrev=]]: activa el mode globalment
- [ ] [[file:settings.org::*=electric-pair=][=electric-pair=]]: activa el mode globalment
- [ ] [[file:settings.org::*=engine-mode=][=engine-mode=]]: activa el mode globalment
- [ ] [[file:settings.org::*=font-lock=][=font-lock=]]: activa el mode globalment
- [ ] [[file:settings.org::*=hl-line=][=hl-line=]]: activa el mode globalment
- [ ] [[file:settings.org::*=ido=][=ido=]]: ídem.
- [ ] [[file:settings.org::*=modeline=][=modeline=]]: ací no tinc clar si cal un apartat dins /paquets/ o
és millor moure-ho a /interfície d'usuari/.
- [ ] [[file:settings.org::*=mwheel=][=mwheel=]]: si realment =mouse-wheel-mode= s'activa en alguna
altra part eliminar l'activació, sinó activar el mode globalment.
- [ ] [[file:settings.org::*=projectile=][=projectile=]]: no recordo el funcionament de projectile, imagino
que s'activa globalment, no per buffer. Probablament moure a un
/hook/ o altre.
- [ ] [[file:settings.org::*=subword=, =superword=][=subword=, =superword=]]: es limita a definir dos comandes.
Moure-les a la secció corresponent?
- [ ] [[file:settings.org::*=swiper=][=swiper=]]: defineix una comanda. Moure-la?
- [ ] [[file:settings.org::*=which-key=][=which-key=]]: moure activació
- [ ] [[file:settings.org::*=yasnippet=][=yasnippet=]]: moure activació
- [ ] [[file:settings.org::*=emmet= (anteriorment =zencoding=)][=emmet=]]: (des)defineix una tecla del mapa local. Està en el
límit.
- [ ] [[file:settings.org::*=company-tern=][=company-tern=]]: no hauria de modificar =company-backends=
- [ ] [[file:settings.org::*=js2-mode=][=js2-mode=]]: ídem amb =auto-mode-alist=
- [ ] [[file:settings.org::*=elpy=][=elpy=]]: modifica el /keymap/ local
- [ ] [[file:settings.org::*=pytest=][=pytest=]]: ídem
- [ ] [[file:settings.org::*=python=][=python=]]: activa =elpy=. Crec recordar que és una inicialitació
del paquet (global) no del buffer (local). No tinc clar on moure-ho.
També modifica =comint-output-filter-functions=. Potser es podrien
moure a una nova secció /Configuració/.
** TODO revisar compilació de la configuració :task:
#+begin_src text :tangle no
Compiling file /home/aroda/.emacs.d/conf.d/settings.el at Thu Mar 29 19:35:20 2018
settings.el:147:9:Warning: assignment to free variable
‘buffer-menu-buffer-font-lock-keywords’
In buffer-menu-custom-font-lock:
settings.el:164:32:Warning: ‘font-lock-fontify-buffer’ is for interactive use
only; use ‘font-lock-ensure’ or ‘font-lock-flush’ instead.
settings.el:246:9:Warning: assignment to free variable
‘ediff-split-window-function’
settings.el:247:9:Warning: assignment to free variable
‘ediff-window-setup-function’
settings.el:268:73:Warning: reference to free variable ‘latin-1’
In arv/wm-cycle:
settings.el:472:5:Warning: reference to free variable ‘subword-mode’
settings.el:475:5:Warning: reference to free variable ‘superword-mode’
In arv/wm-cycle-2:
settings.el:487:5:Warning: reference to free variable ‘subword-mode’
In arv/scratch:
settings.el:588:28:Warning: reference to free variable ‘lisp-mode’
settings.el:886:9:Warning: ‘python-shell-virtualenv-path’ is an obsolete
variable (as of 25.1); use ‘python-shell-virtualenv-root’ instead.
In arv/-sphinx-locate-makefile:
settings.el:1063:8:Warning: ‘(string=)’ is a malformed function
settings.el:1063:8:Warning: ‘(string=)’ is a malformed function
In arv/sphinx-build-html:
settings.el:1093:17:Warning: reference to free variable ‘phinx-build’
settings.el:1102:4:Warning: reference to free variable ‘rst-mode-map’
settings.el:1173:7:Warning: ‘display-buffer-reuse-frames’ is an obsolete
variable (as of 24.3); use a ‘reusable-frames’ alist entry in
‘display-buffer-alist’.
In arv/upcase-word:
settings.el:1197:16:Warning: looking-back called with 1 argument, but requires
2-3
In arv/downcase-word:
settings.el:1205:16:Warning: looking-back called with 1 argument, but requires
2-3
In arv/duplicate-line-or-region-dwim:
settings.el:1237:13:Warning: assignment to free variable ‘beg’
settings.el:1253:22:Warning: reference to free variable ‘beg’
In end of data:
settings.el:1820:1:Warning: the function ‘sql-highlight-postgres-keywords’
might not be defined at runtime.
settings.el:1820:1:Warning: the function ‘arv/-’ is not known to be defined.
#+end_src
** TODO analitzar arranc :task:
Al activar el mode verbós he identificat aquests dos com els més
lents. La resta estan per baix de 0.1 segons.
#+begin_src text :tangle no
Loading package js2-refactor...done (0.697s)
Configuring package yasnippet...done (0.190s)
#+end_src
Mirar que és carrega durant l'arranc per veure si alguna cosa sobra
etc.
#+begin_quote
When a package is loaded, and if you have =use-package-verbose= set to
=t=, or if the package takes longer than 0.1s to load, you will see a
message to indicate this loading activity in the =*Messages*= buffer.
The same will happen for configuration, or =:config= blocks that take
longer than 0.1s to execute.
#+end_quote
** TODO Entorn per desenvolupar en javascript :enhancement:
:PROPERTIES:
:CREATED: [2018-03-31 ds 01:34]
:REFERER: [[file:~/.emacs.d/conf.d/settings.org::*javascript][javascript]]
:END:
Integrar un interpret (nodejs?) en la configuració.
- https://github.com/abicky/nodejs-repl.el, disponible a melpa stable.
- [[https://github.com/NicolasPetton/Indium][Indium]] és un IDE per javascript. Té molt bona pinta.
- [[https://github.com/ananthakumaran/tide][TypeScript Interactive Development Environment for Emacs]]
- [[https://emacs.cafe/emacs/javascript/setup/2017/04/23/emacs-setup-javascript.html][Setting up Emacs for JavaScript (part #1)]] i [[https://emacs.cafe/emacs/javascript/setup/2017/05/09/emacs-setup-javascript-2.html][Setting up Emacs for JavaScript (part #2)]]
- [[https://www.npmjs.com/package/tern][Tern]] is a stand-alone, editor-independent JavaScript analyzer that
can be used to improve the JavaScript integration of existing
editors.
** PAUS elimina blocs sh? :refactor:
:PROPERTIES:
:CREATED: [2018-04-02 dl 18:09]
:REFERER: [[file:~/.emacs.d/conf.d/settings.org::*Blocs%20de%20codi%20sh][Blocs de codi sh]]
:END:
- State "PAUS" from "TODO" [2022-09-04 dg. 18:04] \\
Després d'un temps amb aquesta configuració l'únic problema que he
detectat amb els blocs =sh= és que no son portables a windows però no
és l'únic problema amb windows ;-).
Minimitzo l'us de blocs =sh=, no recordo haver-ne afegit cap de nou.
Crec que en la pràctica no és cap problema.
Si estic configurant emacs perquè collons utilitzo sh?!
El problema amb l'enfoc actual és que el codi emacs lisp s'executa en
cada arranc i pot incorporar nous paquets/elements mentre que el codi
sh només s'executa el primer arranc. Si s'afegeix un bloc sh cal
executar-lo manualment.
Una possibilitat seria [[https://github.com/quelpa/quelpa-use-package][=quelpa-use-package=]], que integra [[https://github.com/quelpa/quelpa][=quelpa=]] amb
=use-package=. Per exemple:
#+begin_src emacs-lisp :tangle no
(use-package abc-mode
:quelpa ((abc-mode :fetcher github
:repo "mkjunker/abc-mode")
:upgrade t))
#+end_src
** TODO renombrar comandes de =settings.org= ? :refactor:
:PROPERTIES:
:CREATED: [2018-04-04 dc 21:34]
:REFERER: [[file:~/.emacs.d/conf.d/notes.org]]
:END:
- State "TODO" from "TODO" [2020-12-27 dg. 20:20] \\
He fet un buscar/reemplaçar en =settings.org= i =init.el=. He detectat
que algunes funcions s'utilitzen en snippets. No tinc clar si en algun
lloc més.
Em preocupa trencar alguna cosa i he preferit revertir el canvi.
En algunes configuracions he vist funcions prefixades amb =my/=. No
segueixo eixa convenció però potser seria bona idea pels simbols
definits en =settings-org=, una especie d'espai de noms local/privat i
independent dels mòduls.
A més d'evitar conflictes de noms permet identificar els elements
/privats/. No sé si cap d'aquestes consideracions és molt realista.
** PAUS error en =x-my/camelize= :bug:
:PROPERTIES:
:CREATED: [2018-04-18 dc 08:25]
:REFERER: [[file:~/.emacs.d/conf.d/settings.org::*=arv/camelize=][=arv/camelize=]]
:END:
- State "PAUS" from "PAUS" [2020-12-27 dg. 14:44] \\
En la secció [[id:7551e3e2-4f91-488c-b4bd-8ca97d2e1c67][Error amb =C-c j t=]] s'explica un altre error.
En =org-mode=, en el text:
#+begin_src org
mostra el missatge =point must be over an string=.
#+end_src
quan el punt està sobre la =p= de ~=point ...~, =M-c= ho converteix
en:
#+begin_src org
mostra el MissatgePoint must be over an string=.
#+end_src
enlloc de en:
#+begin_src org
mostra el missatge =Point must be over an string=.
#+end_src
- State "PAUS" from "PAUS" [2020-03-30 dl 09:35] \\
Aquest paquet fa el mateix i una mica més:
https://github.com/akicho8/string-inflection
- State "PAUS" from "TODO" [2020-03-29 dg 19:19] \\
El problema és que en =org-mode= =?'= té la sintaxi =?w=.
He provat movent el =with-syntax-table (standard-syntax-table)= al
principi de la funció de forma que en totes les cerques en que intervé
la sintaxi dels caràcters s'apliquin les mateixes regles. Funciona
però no tinc clar que sigui la solució. Bé, no tinc clara la semàntica
de la funció.
Pensaments al respecte:
- Suposo que no hauria de complicar-me la vida i limitar-me a
convertir =foo_bar= en =FooBar= i en =foo_bar= un altre cop, és a
dir, el mode del buffer no hauria d'influir.
- En =emacs-lisp= no s'utilitza la majúscula, el separador idiomàtic
és =?-= i admet quasi qualsevol caràcter en un identificador. En la
resta de llenguatges que utilizo la majúscula és acceptable per
alguns identificadors i el separador és =?_=.
- Potser utilitzar =prog-mode-syntax-table= enlloc de
=standard-syntax-table= i utilizar el literal =?_= enlloc de la
classe =\s_=.
Un altre problema que he detectat fent proves és que no té en compte
acrònims, com =tutor_URV= que s'hauria de convertir en =TutorURV= i no
en =TutorUrv=.
En =org-mode= al intentar convertir "l'xxx" en "L'xxx" prement =M-c=
s'obté "Lxxx".
** PAUS molestia en els canvis d'estat en =org-mode= :annoyance:
:PROPERTIES:
:CREATED: [2018-08-18 ds 20:15]
:REFERER: [[file:~/.emacs.d/conf.d/notes.org::*revisar%20snippets][revisar snippets]]
:END:
- State "PAUS" from "PAUS" [2022-09-04 dg. 19:46] \\
Provisionalment he modificat el codi de la funció:
#+begin_src diff
diff --git a/lisp/org.el b/lisp/org.el
index 913842bf3..998c48385 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -11129,6 +11129,7 @@ EXTRA is additional text that will be inserted into the notes buffer."
(insert "\n")
(indent-line-to ind)
(insert line)))
+ (insert "\n")
(message "Note stored")
(org-back-to-heading t)))))
;; Don't add undo information when called from `org-agenda-todo'.
#+end_src
- State "PAUS" from "TODO" [2022-09-04 dg. 19:27] \\
Revisant el codi sembla que la nota s'insereix en la funció
=org-store-log-note= definida en =org.el=.
[[file:~/.local/share/emacs/site-lisp/org/org.el::defun org-store-log-note (]]
Estudiant-la per sobre no sembla que consulti cap variable per decidir
si inserir o no línies en blanc, el comportament sembla fixat. Tampoc
sembla senzill aplicar /advise/ o alguna altra tècnica per modificar
el seu comportament.
El que se m'acut ara mateix és definir un /advise around/ que preserva
el valor de =org-log-note-marker=, executa =org-store-log-note= i
finalment localitza la nota i insereix la línia en blanc. Hauria
d'entendre millor les possibles variacions de format de les notes.
Al fer un canvi d'estat que requereix un missatge aquest s'insereix
separat per una línia de la capçalera i enganxat al text principal,
abans era al revés, enganxat a la capçalera i separat del text.
Prefereixo el comportament anterior o separat en els dos costats.
** TODO inserir prefix automàticament en codi emacs lisp :idea:
:PROPERTIES:
:CREATED: [2018-08-28 dt 12:27]
:REFERER:
:END:
http://emacsninja.com/posts/fixing-my-annoyance-with-emacs-lisp.html
És una idea interessant, caldria adaptar-la a la meva forma de
treballar: definir una variable local al buffer + algun automatisme
(yasnippet, tecla?).
** PAUS [1/2] Agrupar definicions de colors/faces? :idea:
:PROPERTIES:
:CREATED: [2019-01-18 dv 08:33]
:REFERER: [[file:~/.emacs.d/conf.d/settings.org::*=hi-lock=][=hi-lock=]]
:END:
El color de =arv/hi-red= (aplicat a etiquetes =FIXME:=) no es
visualitza bé en el tema =doom-one=.
Possiblement hagi definicions de colors desperdigades per tota la
configuració. De cara a ajustar-les quan canvio el tema sembla bona
idea agrupar-les en la secció =tema=, per contra també sembla bona
idea agrupar la definició del color al activar el paquet.
Mirar que es pot fer.
*** DONE Comentari 18/03/2020
Vull provar el tema =modus-operandi= i em trobo amb moltes
re-definicions de /faces/ que no funcionen bé amb ell però que no
voldria perdre per si decideixo revertir el tema o alternar entre
temes en funció del estat d'ànim.
Per adreçar-ho sembla bona idea definir funcions
=my/customize-theme-modus-operandi=, =my/customize-theme-wombat= que
recullguin tots els canvis.
*** TODO Comentari 19/03/2020
:PROPERTIES:
:CREATED: [2020-03-19 dj 19:54]
:REFERER: [[file:~/.emacs.d/conf.d/settings.org::*wombat][wombat]]
:END:
En =(my/customize-theme-wombat)= la definició de faces de "term" és
molt compacta, mirar si es pot aplicar a la resta de definicions.
Un altre detall en que no havia caigut: =modus-operandi= aparentment
configura les faces sense que s'hagi carregat el mòdul/paquet que les
defineix (té sentit). Jo utilitzo =with-eval-after-load=.
=modus-operandi= utilitza [[help:custom-theme-set-faces][=custom-theme-set-faces=]]. Investigar-ho.
** TODO sortir del minibuffer :annoyance:
*** TODO Investigar paquet =delsel= :enhancement:
:PROPERTIES:
:CREATED: <2019-04-23 dt 23:58>
:END:
De vegades em quedo enganxat amb el minibufer, que no accepta C-g
perquè to té el focus. Cal fer clic i resulta molest.
El nom d'aquesta variable =minibuffer-keyboard-quit= suggereix que pot
haver una solució millor.
https://www.emacswiki.org/emacs/delsel.el
*** PAUS sortir del minibuffer :annoyance:
:PROPERTIES:
:CREATED: [2020-03-08 dg 18:38]
:REFERER:
:END:
- State "PAUS" from "TODO" [2022-08-19 dv. 18:48] \\
S'implementat la comanda experimental =arv/abort-recursive-edit=
i s'assigna a la tecla =C-G= (=g= majúscula).
De vegades =C-g= no avorta el que s'estigui fent en el minibuffer i
resulta frustrant, cal canviar al minibufer, cancelar i tornar al
buffer en que estic treballant.
[[https://with-emacs.com/posts/tips/quit-current-context/][Aquest post]] sembla tindre una solució:
#+begin_src emacs-lisp
(defun keyboard-quit-context+ ()
"Quit current context.
This function is a combination of `keyboard-quit' and
`keyboard-escape-quit' with some parts omitted and some custom
behavior added."
(interactive)
(cond ((region-active-p)
;; Avoid adding the region to the window selection.
(setq saved-region-selection nil)
(let (select-active-regions)
(deactivate-mark)))
((eq last-command 'mode-exited) nil)
(current-prefix-arg
nil)
(defining-kbd-macro
(message
(substitute-command-keys
"Quit is ignored during macro defintion, use \\[kmacro-end-macro] if you want to stop macro definition"))
(cancel-kbd-macro-events))
((active-minibuffer-window)
(when (get-buffer-window "*Completions*")
;; hide completions first so point stays in active window when
;; outside the minibuffer
(minibuffer-hide-completions))
(abort-recursive-edit))
(t
(when completion-in-region-mode
(completion-in-region-mode -1))
(let ((debug-on-quit nil))
(signal 'quit nil)))))
(global-set-key [remap keyboard-quit] #'keyboard-quit-context+)
#+end_src
*** Discussió en /emacs-devel/
Ha hagut una discussió en la llista de correu emacs-devel on es parla
sobre algo relacionat:
https://lists.gnu.org/archive/html/emacs-devel/2020-12/msg01497.html
Es plantejen solucions que no acabo d'entendre quin impacte tenen i es
parla de la comanda =C-]= (=abort-recursive-edit=).
** TODO Revisar vídeo :idea:
:PROPERTIES:
:CREATED: [2019-04-28 dg 21:42]
:REFERER: [[file:/opt/emacs/26.2/share/emacs/26.2/lisp/ffap.el.gz::(ffap-read-file-or-url]]
:END:
[[https://www.youtube.com/watch?v=CTOhosGQ2f0][Aquest vídeo de youtube]] té algunes idees interessant pel que fa a la
definició de tecles.
Per veure si val la pena el canvi necessitaria estadístiques de les
comandes que utilitzo. Ja ho vaig intentar fa temps amb [[https://github.com/dacap/keyfreq][keyfreq]] però
tenia problemes al obrir varies instàncies d'emacs al mateix temps.
He vist que es pot configurar =keyfreq-file= per especificar l'arxiu
on es guarden les estadístiques; generar un nom basat en el PID del
procés sembla que eliminaria el problema. Caldria estudiar el format i
veure si després es poden fusioar fàcilment.
** PAUS estudiar =ibuffer-vc= :enhancement:
:PROPERTIES:
:CREATED: [2019-08-07 dc 11:35]
:END:
- State "PAUS" from "TODO" [2020-12-14 dl. 00:18] \\
Instal·lat. El provaré una temporada a veure si l'incorporo al
workflow.
https://github.com/purcell/ibuffer-vc
Interpreto que permet agrupar en =ibuffer= els buffers segons el
repositori de control de revisions al que pertanyen i operar sobre un
grup com un tot (per tancar-los p.e.). Podría ser útil al treballar en
/Hera/.
** TODO estandarditzar una Makefile pels paquets emacs :idea:
En aquesta entrada Chris Wellons descriu l'estructura del Makefile que
utilitza en els seus paquets:
https://nullprogram.com/blog/2020/01/22/
** TODO revisar configuració de /show trailing whitespace/ :enhancement:
:PROPERTIES:
:CREATED: [2020-03-19 dj 18:20]
:REFERER: [[file:~/.emacs.d/conf.d/settings.org::*wombat][wombat]]
:END:
Si no recordo mal la variable =show-trailing-whitespace- es defineix
com =t= en els modes de programació (=prog-mode=) i després s'activa
individualment en la resta.
Potser seria preferible activar-la sempre i desactivar-la cas per cas.
** TODO Configurar la posició de les finestres :enhancement:
Exemples de com restringir on s'obren les finestres:
- http://juanjose.garciaripoll.com/blog/arranging-emacs-windows/index.html
- https://protesilaos.com/codelog/2020-01-07-emacs-display-buffer/
** TODO configurar electric-pair en org-mode :enhancement:
:PROPERTIES:
:CREATED: [2020-03-25 dc 17:01]
:REFERER: [[file:~/.emacs.d/conf.d/settings.org::*Configuració de tecles][Configuració de tecles]]
:END:
Actualment tinc desactivats els parells-elèctrics en =org-mode=. No
recordo el motiu.
Con afegir nous parells a =electric-pair-mode=. Permetria eliminar la
funció =arv/org-emphasize=.
https://emacs.stackexchange.com/questions/2538/how-to-define-additional-mode-specific-pairs-for-electric-pair-mode
En resum:
#+begin_src emacs-lisp
(defvar org-electric-pairs '((?/ . ?/) (?= . ?=)) "Electric pairs for org-mode.")
(defun org-add-electric-pairs ()
(setq-local electric-pair-pairs (append electric-pair-pairs org-electric-pairs))
(setq-local electric-pair-text-pairs electric-pair-pairs))
(add-hook 'org-mode-hook 'org-add-electric-pairs)
#+end_src
** TODO revisar comandes de compilació :enhancement:
:PROPERTIES:
:CREATED: [2020-03-25 dc 17:12]
:REFERER: [[file:~/.emacs.d/conf.d/settings.org::*Hook][Hook]]
:END:
- State "TODO" from "TODO" [2020-04-04 ds 20:27] \\
Al copilar un document amb sphinx detecto que el buffer de compilació
creat no és /read only/.
No reconeix la tecla =g= (que podria recompilar).
En la configuració he definit varies comandes de compilació (per
sphinx i typscript que recordi) per lidiar amb els codis ANSI (crec
que era l'únic motiu).
Aquesta sembla una solució més neta:
https://stackoverflow.com/questions/13397737/ansi-coloring-in-compilation-mode
Concretament, la segona respota:
#+begin_src emacs-lisp
(ignore-errors
(require 'ansi-color)
(defun my-colorize-compilation-buffer ()
(when (eq major-mode 'compilation-mode)
(ansi-color-apply-on-region compilation-filter-start (point-max))))
(add-hook 'compilation-filter-hook 'my-colorize-compilation-buffer))
#+end_src
** TODO Facilitar l'accés a un REPL :idea:
:PROPERTIES:
:CREATED: [2020-04-02 dj 13:33]
:REFERER: [[file:~/.emacs.d/conf.d/notes.org::*revisar procés d'instal·lació][revisar procés d'instal·lació]]
:END:
Actualment =C-z= obre una terminal. Estaria bé poder obrir un REPL en
funció del mode de buffer actual:
- js: node
- emacs-list: ielm
- python: ipython
- django: python manage.py shell
etc.
Alguns modes ja ofereixen la funcionalitat però mai he estat capaç de
recordar les tecles. Estandaritzar-ho en =C-z= em sembla que
funcionaria.
Addicionalment =C-M-z= o =C-u C-z= podrien continuar obrint un shell.
** TODO Revisar =<= en TypeScript :annoyance:
:PROPERTIES:
:CREATED: [2020-04-09 dj 20:10]
:REFERER: [[file:~/prog/aprendre/typescript/exercicis/basicTypesLab/diceRolling.ts::for(let i = 0; i <)]]
:END:
Al configurar =typescript-mode= vaig definir al sintaxi de =?<= com
parèntesi de forma que s'insereix un parell =<>=. Ho vaig fer pensant
en coses com =Array<number>= però no vaig tindre en compte l'us
natural com operador de comparació.
Acostumo a separar els operadors dels operands amb un espai, açò
permetria decidir el comportament de =<=:
- si el caràcters de l'esquerra de =<= és un espai considerar-lo un
operador i inserir =<=.
- en altre cas inserir =<>=.
Cadria revertir el canvi en la taula de sintaxi (crec que és el que
vaig fer), definir una comanda i vincular-la a la tecla =<=.
El que no m'agrada és que probablement es perdrà la prestació
d'esborrar automàticament el =>= al esborrar el =<=.
** TODO Revisa faces de =svn-diff= :annoyance:
:PROPERTIES:
:CREATED: [2020-05-12 dt 17:32]
:REFERER:
:END:
Tinc al sensació que abans el separador dels hunks al visualitzar els
diff en svn destacava més.
Dificulta veure on comencem i acaben els hunks.
Per consistència, mirar de replicar l'esquema de colors que utilitza
magit.
2020-05-13: avui surten en foreground blau i backgroun estàndard.
Algun altre paquet (màgit?) ho desconfigura?
** TODO Resaltar /heading/ en =org-mode= :annoyance:
:PROPERTIES:
:CREATED: [2020-05-13 dc 21:59]
:REFERER: [[file:~/prog/hera/impl/doc_dev/TODO.org::*revisar etiquetes TODO del codi][revisar etiquetes TODO del codi]]
:END:
Abans de canviar al tema =modus-operandi= les capçaleres en =org-mode=
utilitzaven mides diferents.
Quan està col·lapsat em resulta difícil distingir els nivells.
En algun lloc he vist que es canvien els asteriscs per vinyetes,
diferents en funció del nivell.
** TODO centrar buffer després de =imenu= :annoyance:
:PROPERTIES:
:CREATED: [2020-05-17 dg 23:24]
:REFERER: [[file:~/prog/sdl/worley-noise/main.cpp::void WorleyApp::handle_events() {]]
:END:
En =C++= estic tirant bastant de =imenu= per navegar entre els mètodes
de les classes. És pràctic. El que no m'agrada és que el punt on salta
sempre queda en la part de baix del buffer i he de prèmer =C-l= per
centrar-lo.
Mirar si amb un advice es pot centrar (=recenter-top-bottom=).
El mateix seria útil per =goto-line=. Si la línia cau dins el /rang/
visible actualment potser millor no centrar.
** TODO Revisar highlight dels breakpoints en python :annoyance:
:PROPERTIES:
:CREATED: [2020-05-21 dj 10:40]
:REFERER: [[file:~/prog/hera/impl/src/hera_django/hera_django/forms/widgets.py::import pdb]]
:END:
El color utilitzat pels breakpoint (=pdb.set_trace()=) dificulta
llegir el text.
** PAUS Revisar primer arranc de emacs amb la configuració :bug:
- State "PAUS" from "TODO" [2020-12-31 dj. 19:23] \\
Sembla que l'error està relacionat amb el paquet =f=.
He mogut el =use-package f= de la secció /Paquets/ al principi de la
configuració. Amb aquest canvi l'error desapareix i sembla que
s'instal·len tots els paquets.
No he investigat la causa, imagino que algun paquet en depen però no
declara la dependència. Caldria veure si la configuració o algun dels
meus paquets (veure el comentari que faig en [[id:22d6bbbb-d859-4388-8bdd-36df7c6cff48][=f=]] sobre els meus
paquets no en elpa) en fan ús.
La clonar la configuració en /spacemacs@turing/ =use-package= m'ha
donat dos error amb =dash= i =f= i no s'han instal·lat. Executant
manualment (=C-x C-e=) =use-package= des de l'arxiu de configuració
s'han instal·lat.
** TODO bug en =ibuffer-vc=? :bug:
:PROPERTIES:
:CREATED: [2020-12-15 dt. 10:05]
:REFERER:
:END:
A la feina, treballant en Hera. Al intentar agrupar els buffers per VC
apareix l'error:
#+begin_src text
ibuffer-current-state-list: Args out of range: #<buffer *Ibuffer*>, 3957, 4009
tramp-error: Method ‘archive’ is not known.
#+end_src
Després d'instal·lar-lo ha funcionat. L'error ha aparegut a
posteriori. No recordo haver fer res que ho expliqui.
** TODO Revisar missatge d'error en term
:PROPERTIES:
:CREATED: [2020-12-19 ds. 08:45]
:REFERER:
:END:
Al obrir una terminal amb =C-z= (=my/bash-terminal=) apareix aquest
missatge:
#+begin_src text
/home/aroda/pyvenv/hera_impl/bin/python: No module named virtualenvwrapper
virtualenvwrapper.sh: There was a problem running the initialization hooks.
If Python could not import the module virtualenvwrapper.hook_loader,
check that virtualenvwrapper has been installed for
VIRTUALENVWRAPPER_PYTHON=/home/aroda/pyvenv/hera_impl/bin/python and that PATH is
set properly.
#+end_src
Provat en el portàtil.
** TODO Canviar keybinding comandes de desplaçament? :idea:
:PROPERTIES:
:CREATED: [2020-12-29 dt. 16:37]
:REFERER: [[file:~/.emacs.d/conf.d/settings.org::*cc-mode][cc-mode]]
:END:
He descovert que el keymap =goto-map= (=M-g=) conté comandes per
dsplaçar-se.
No sé si val la pena moure comandes de =C-c j= cap a =M-g=.
** TODO error de =my/unfill-paragraph= en =org-mode= :bug:
:PROPERTIES:
:CREATED: [2021-01-01 dv. 22:28]
:REFERER: [[id:3ec64e49-8906-49c2-9377-8c9b44ae6e61][=my/unfill-paragraph=]]
:END:
Per reproduir-lo:
1. obrir un buffer =org-mode=
2. inserir un paragraf amb =lorem-ipsum-insert-paragraphs= i
ajustar-lo amb =M-q=
3. inserir un guió al començament de la línia
4. executar =my/unfill-paragraph=
El resultat és que només s'ajusta a partir de la segona línia.
#+begin_src text
- Pellentesque dapibus suscipit ligula. Donec posuere augue in quam.
Etiam vel tortor sodales tellus ultricies commodo. Suspendisse potenti. Aenean in sem ac leo mollis blandit. Donec neque quam, dignissim in, mollis nec, sagittis eu, wisi. Phasellus lacus. Etiam laoreet quam sed arcu. Phasellus at dui in ligula mollis ultricies. Integer placerat tristique nisl. Praesent augue. Fusce commodo.
#+end_src
** PAUS =pyx/visit-test-module= no funciona amb /namespace packages/ :bug:
:PROPERTIES:
:CREATED: [2021-01-05 dt. 13:40]
:REFERER: [[file:~/.emacs.d/elpa/arv-py-20201227.1807/pyx.el::defun pyx/visit-test-module (]]
:END:
- State "PAUS" from "TODO" [2021-01-06 dc. 12:04] \\
He simplificat la implementació. Enlloc d'intentar ser intel·ligent i
barallar-me amb l'estructura del projecte ara utilitza
=locate-dominating-file= per localitzar el directori de tests.
Quan s'executa =pyx/visit-test-module= des d'un mòduls en un
/namespace package/ no troba el directori de tests.
Si no m'equivoco el problema és que busca el directori de tests en
=<ARREL>/tests= no en =<ARREL>/<SUBPAQUET>/tests=.
** TODO tangle configuració asincronament al guardar :idea:
:PROPERTIES:
:CREATED: [2021-03-06 ds. 19:33]
:REFERER:
:END:
Executar el /tangle/ de la configuració al arrancar emacs ho
ralentitza i resulta una mica molest.
Per la xarxa hi ha receptes per executar el /tangle/ al guardar
l'arxiu, asincronament:
https://emacs.stackexchange.com/questions/22722/tangle-init-file-async
#+begin_src emacs-lisp :tangle yes
(add-to-list 'load-path "~/.emacs.d/emacs-async/")
(require 'async)
(defun tangle-init-async ()
"If the current buffer is 'emacs-init.org' the code-blocks are tangled."
(when (equal (buffer-file-name) (expand-file-name (concat user-emacs-directory "init.org")))
(async-start
`(lambda ()
(require 'org)
(org-babel-tangle-file (expand-file-name (concat user-emacs-directory "init.org")) (expand-file-name (concat user-emacs-directory "init.el") "emacs-lisp"))
)
(lambda (result)
(byte-compile-file (expand-file-name (concat user-emacs-directory "init.el")))
(message "Tangled file compiled.")))))
(add-hook 'after-save-hook 'tangle-init-async)
#+end_src
** TODO error =djira= :bug:
:PROPERTIES:
:CREATED: [2021-03-29 dl. 01:39]
:REFERER: [[file:~/prog/proves-vue/complet/src/App.vue][file:~/prog/proves-vue/complet/src/App.vue]]
:END:
Al activar =vue-mode= apareix l'error:
#+begin_src text
if: Cannot open load file: El fitxer o directori no existeix, djira-el
#+end_src
i s'avorta la inicialització del mode.
Sembla que el problema és que en algun lloc es requereix =djira-el=
quan el paquet proveeix =djira=. Requerir manualment =djira= sembla
resoldre el problema.
Per una altra banda, en aquest context =djira-el= no aporta res i no
és necessari.
** TODO molestia en =html-mode= :annoyance:
:PROPERTIES:
:CREATED: [2021-03-29 dl. 02:38]
:REFERER: [[file:~/prog/proves-vue/complet/src/components/Task.vue::<p>{{task.day}}</p>]]
:END:
Estic acostumat a que al tancar un paréntesi/clau etc. el punt avanci
sense inserir el caràcter (=smartparens=?).
Amb HTML esperaria un comportament semblant al escriure =>= però no és
així i acabo amb =>= duplicats.
** TODO implementar comanda =my/http-live-server= :idea:
:PROPERTIES:
:CREATED: [2021-04-05 dl. 20:50]
:REFERER:
:END:
Estaria bé poder llançar el live server des de Emacs. Hauria de
preguntar pel directori, oferint per defecte el directori del buffer
actual o el directori actual.
** TODO Ricing Org Mode: A Beautiful Writing Environment :enhancement:
:PROPERTIES:
:CREATED: [2021-08-10 dl. 12:46]
:REFERER:
:END:
https://lucidmanager.org/productivity/ricing-org-mode/
Aquest blog explica unes configuracions de =org-mode=.
** TODO Simple folding with hideshow
https://karthinks.com/software/simple-folding-with-hideshow/
Article que comenta varies opcions per implementar /code folding/.
Proposa una solució pròpia però crec que el més interesssant és que
parla de diferents paquets/enfocs. Un punt de partida per triar una
solució.
** TODO Estudiar integració de =imenu= i =org=
:PROPERTIES:
:CREATED: [2022-09-03 ds. 10:44]
:REFERER: [[file:~/.emacs.d/conf.d/settings.org::*=rg=][=rg=]]
:END:
=C-c j s= (=imenu=) en =org-mode= permet seleccinar capçaleres, útil
en principi. El que no m'agrada és que mostra totes/moltes les
capçaleres i això li resta eficiència.
Si no m'equivoco, en python primer mostra elements de /primer nivell/
(funcions, classes etc.). Si es selecciona una classe llavos permet
seleccionar elements de la classe (mètodes etc.).
Una altra possibilitat és mirar de restringir el nombre de nivells que
inclou =imenu=.
** TODO Revisar us de =customize-set-{variable,value}=
:PROPERTIES:
:CREATED: [2022-09-03 ds. 12:31]
:REFERER: [[file:~/.emacs.d/conf.d/settings.org::*=rg=][=rg=]]
:END:
=customize-set-variable= assigna el valor per defecte mentre que
=customize-set-value= assigna el valor a la variable.
No tinc clar que en la configuració ho utilitzi correctament.
** TODO Racionalitzar /completion/
:PROPERTIES:
:CREATED: [2022-09-03 ds. 21:44]
:REFERER: [[file:~/.emacs.d/conf.d/settings.org::+TITLE: Configuració d'emacs d'Alexis Roda]]
:END:
De memòria, per diferents formes de /completion/ utilitzo =abbrev=,
=company=, =hippie-expand= i =yasnippet=.
De vegades interfereixen entre ells i és possible que es sol·lapin.
Revisar-ho i, en cas de mantindre els paquets, agrupar-los dins una
secció =Completion= per facilitar el manteniment.
** TODO org-mode no s'activa al visitar un arxiu existent :bug:
:PROPERTIES:
:CREATED: [2022-09-20 dt. 07:40]
:REFERER: [[file:~/.emacs.d/conf.d/notes.org::*Racionalitzar /completion/][Racionalitzar /completion/]]
:END:
Des de fa uns dies quan visito un arxiu org existent sembla que no
s'activa =org-mode=. Potser sí s'activa però no es fontifica el
buffer.
Aparentment només afecta al primer arxiu org que es carrega, obrint un
segon arxiu tot sembla funcionar.
** TODO Facilitar repetició de C-r m :idea:
:PROPERTIES:
:CREATED: [2022-09-21 dc. 10:37]
:REFERER: [[file:~/projectes/hera/trunk/src/pr3_infiprac_core/pr3_infiprac_core/tests/test_pr3_generar_infiprac.py::crear_conveni(self.factoria_conveni, self.avui, tipus, estudiant_nif=nif)]]
:END:
De vegades utilitzo C-r m per canviar el format de llistes. La comanda
fa un cicle entre diferents distribucions (un per línia, emplenar
línia ...) i resulta incómode haver de premer C-r m cada vegada.
Mirar si és possible fer C-r m m m.