Xinqi Bao's Git
projects
/
st.git
/ blobdiff
summary
|
log
|
commit
|
diff
|
tree
raw
|
inline
| side by side
Add sequence for printing the current selection
[st.git]
/
st.c
diff --git
a/st.c
b/st.c
index
9f9c161
..
c97712c
100644
(file)
--- a/
st.c
+++ b/
st.c
@@
-314,6
+314,7
@@
static void clippaste(const Arg *);
static void numlock(const Arg *);
static void selpaste(const Arg *);
static void xzoom(const Arg *);
static void numlock(const Arg *);
static void selpaste(const Arg *);
static void xzoom(const Arg *);
+static void printsel(const Arg *);
static void printscreen(const Arg *) ;
static void toggleprinter(const Arg *);
static void printscreen(const Arg *) ;
static void toggleprinter(const Arg *);
@@
-359,6
+360,7
@@
static void strreset(void);
static int tattrset(int);
static void tprinter(char *s, size_t len);
static int tattrset(int);
static void tprinter(char *s, size_t len);
+static void tdumpsel(void);
static void tdumpline(int);
static void tdump(void);
static void tclearregion(int, int, int, int);
static void tdumpline(int);
static void tdump(void);
static void tclearregion(int, int, int, int);
@@
-435,6
+437,7
@@
static void selrequest(XEvent *);
static void selinit(void);
static void selsort(void);
static inline bool selected(int, int);
static void selinit(void);
static void selsort(void);
static inline bool selected(int, int);
+static char *getsel(void);
static void selcopy(void);
static void selscroll(int, int);
static void selsnap(int, int *, int *, int);
static void selcopy(void);
static void selscroll(int, int);
static void selsnap(int, int *, int *, int);
@@
-955,8
+958,8
@@
bpress(XEvent *e) {
}
}
}
}
-void
-
selcopy
(void) {
+char *
+
getsel
(void) {
char *str, *ptr;
int x, y, bufsize, size, i, ex;
Glyph *gp, *last;
char *str, *ptr;
int x, y, bufsize, size, i, ex;
Glyph *gp, *last;
@@
-1015,7
+1018,12
@@
selcopy(void) {
}
*ptr = 0;
}
}
*ptr = 0;
}
- xsetsel(str);
+ return str;
+}
+
+void
+selcopy(void) {
+ xsetsel(getsel());
}
void
}
void
@@
-1994,6
+2002,9
@@
csihandle(void) {
case 1:
tdumpline(term.c.y);
break;
case 1:
tdumpline(term.c.y);
break;
+ case 2:
+ tdumpsel();
+ break;
case 4:
term.mode &= ~MODE_PRINT;
break;
case 4:
term.mode &= ~MODE_PRINT;
break;
@@
-2294,6
+2305,21
@@
printscreen(const Arg *arg) {
tdump();
}
tdump();
}
+void
+printsel(const Arg *arg) {
+ tdumpsel();
+}
+
+void
+tdumpsel(void)
+{
+ char *ptr;
+
+ ptr = getsel();
+ tprinter(ptr, strlen(ptr));
+ free(ptr);
+}
+
void
tdumpline(int n) {
Glyph *bp, *end;
void
tdumpline(int n) {
Glyph *bp, *end;